代码测试方法和装置与流程

文档序号:16972292发布日期:2019-02-26 18:40阅读:145来源:国知局
代码测试方法和装置与流程

本申请涉及计算机领域,具体涉及测试领域,尤其涉及代码测试方法和装置。



背景技术:

在代码上线之前需要利用测试用例进行对代码进行测试。目前,通常通过利用测试用例对代码测试之后输出的函数的相关信息,以人工方式分析各个测试用例可以测试到的函数,根据分析结果调整测试用例。然而,代码随着业务的扩展需要不断更新,每进行一次更新得到一个新的版本的代码,均需重新进行测试,测试过程的开销巨大。



技术实现要素:

本申请实施例提供了代码测试方法和装置。

第一方面,本申请实施例提供了代码测试方法,该方法包括:确定所有标记对象中的目标标记对象,其中,标记对象的标识信息基于标记对象的至少部分代码生成,在更新版本的代码中的目标标记对象的标识信息与在原始版本的代码中的目标标记对象的标识信息不同;基于确定出的目标标记对象和原始版本的代码的测试用例,确定出更新版本的代码的测试用例;利用更新版本的代码的测试用例对更新版本的代码进行测试。

第二方面,本申请实施例提供了代码测试装置,该装置包括:对象确定单元,被配置为确定所有标记对象中的目标标记对象,其中,标记对象的标识信息基于标记对象的至少部分代码生成,在更新版本的代码中的目标标记对象的标识信息与在原始版本的代码中的目标标记对象的标识信息不同;用例确定单元,被配置为基于确定出的目标标记对象和原始版本的代码的测试用例,确定出更新版本的代码的测试用例;代码测试单元,被配置为利用更新版本的代码的测试用例对更新版本的代码进行测试。

本申请实施例提供的代码测试方法和装置,通过确定所有标记对象中的目标标记对象,其中,标记对象的标识信息基于标记对象的至少部分代码生成,在更新版本的代码中的目标标记对象的标识信息与在原始版本的代码中的目标标记对象的标识信息不同;基于确定出的目标标记对象和原始版本的代码的测试用例,确定出更新版本的代码的测试用例;利用更新版本的代码的测试用例对更新版本的代码进行测试。实现了仅需预先确定原始版本的测试用例可以测试的标记对象,在后续对任意版本的更新版本的代码测试中,自动分析出代码发生变化需要再次测试的标记对象,从原始版本的测试用例中确定出相应的测试用例作为更新版本的代码的测试用例,降低了测试过程的开销。可以精确地确定代码发生变化需要再次测试的任意层级的代码分支,选取出相应的测试用例进行精确地测试。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出了根据本申请的代码测试方法的一个实施例的流程图;

图2示出了标识信息在两个版本的代码中的对比效果示意图;

图3示出了根据本申请的代码测试装置的一个实施例的结构示意图;

图4是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

请参考图1,其示出了根据本申请的代码测试方法的一个实施例的流程。该方法包括以下步骤:

步骤101,确定所有标记对象中的目标标记对象。

在本实施例中,原始版本、更新版本均并不特指某一个版本。在一个版本的代码中的部分代码进行修改之后,该版本可以作为原始版本,该版本的代码可以作为原始版本的代码,修改后得到的代码可以作为更新版本的代码。例如,一个项目的代码从第1版本开始已经更新到第5版本,第5版本的代码是在对第4版本的部分代码进行修改后得到的,当对第5版本的代码进行测试时,第4版本可以作为原始版本,第5版本可以作为更新版本。

在本实施例中,一个版本的代码中包含多个标记对象。标记对象的标识信息基于标记对象的至少部分代码生成。在对一个更新版本的代码进行测试时,可以首先确定所有标记对象中的目标标记对象,在更新版本的代码中的目标标记对象的标识信息与在原始版本的代码中的目标标记对象的标识信息不同。

例如,一个标记对象为一个函数,可以将该函数的所有参数进行组合后作为该函数的标识信息,原始版本的代码和更新版本的代码中均预先加入了该函数的标识信息。当在原始版本的代码中的该函数的标识信息与在更新版本的代码中的该函数标识信息不同时,则该函数可以作为目标标记对象。

在本实施例中,可以预先记录原始版本的代码中的每一个标记对象的标识信息。当对更新版本的代码进行测试时,可以遍历更新版本的代码,例如,通过语法树遍历更新版本的代码,得到更新版本的代码中每一个标记对象的标识信息。

以所有标识对象均为函数为例,可以预先记录原始版本的代码中的每一个函数的标识信息,在遍历更新版本的代码之后,可以得到更新版本的代码中的每一个函数的标识信息。原始版本的代码中的所有函数的标识信息可以构成原始标识信息集合。更新版本的代码中的所有函数的标识信息可以构成更新标识信息集合。当更新标识信息集合中的一个标识信息未出现在原始标识信息集合中时,则可以确定在原始版本的代码中的该标识信息所属的函数的标识信息与在更新版本的代码中的该标识信息所属的函数的标识信息不同,该函数可以作为目标标记对象。

在本实施例的一些可选的实现方式中,标记对象包括:函数、函数中的代码分支。代码分支可以包括但不限于:判断类型的代码分支、循环类型的代码分支。例如判断类型的ifelse语句作为一个代码分支,ifelse语句中的代码为代码分支的代码。for循环语句可以作为一个代码分支,for循环语句中的代码为代码分支的代码。一个函数中可以包含多个代码分支,函数在一次调用过程中从被调用的起始时刻到本次函数调用结束,函数中的至少一个代码分支会被调用。代码分支之间也可以具有从属关系。换言之,一个代码分支中可以包含多个其他的代码分支。例如,一个ifelse语句作为一个代码分支,该代码分支中还包括一个作为代码分支的其他的ifelse语句和一个作为代码分支for循环语句。

对于一个作为标记对象的代码分支,当对原始版本的代码中的该代码分支的代码进行更改时,在原始版本的代码中的该代码分支的代码与更新版本的代码中的该代码分支的代码不同,相应的,在原始版本的代码中的该代码分支的标识信息与在更新版本的代码中的该代码分支标识信息不同,从而可以确定该代码分支为目标标记对象。

请参考图2,其示出了标识信息在两个版本的代码中的对比效果示意图。

名称为func2的函数的首个语句为日志语句即log语句,log语句中的引号中的内容为该名称为func2的函数的标识信息a43ef43c493edb3f。名称为func2的函数包括两个for循环语句。每一个for循环语句均为一个代码分支,每一个for循环语句均为作为一个标记对象。由上至下,第2个for循环语句位于第1个for循环语句中。第2个for循环语句中的首个语句为log语句,该log语句中的引号中的内容为该名称为func2的函数的标识信息+第2个for循环语句的标识信息,第2个for循环语句的标识信息基于第2个for循环语句中的代码生成。第2个for循环语句的代码中包含system.out.println语句。原始版本的代码中,第2个for循环语句中的system.out.println语句的引号中的内容为“*”。更新版本的代码中,第2个for循环语句中的system.out.println语句的引号中的内容为“#”。由于第2个for循环语句的标识信息基于第2个for循环语句中的代码生成,原始版本的代码中第2个for循环语句的代码和更新版本的代码中第2个for循环语句的代码不同,因此,原始版本的代码中第2个for循环语句的标识信息与更新版本的代码中第2个for循环语句的标识信息不同。原始版本的代码中第2个for循环语句的标识信息为l909957905。更新版本的代码中第2个for循环语句的标识信息为l709953848。通过比较代码分支的标识信息,可以确定原始版本的代码中第2个for循环语句的标识信息与更新版本的代码中第2个for循环语句的标识信息不同,确定第2个for循环语句为目标标注对象,换言之,确定第2个for循环语句的代码发生变化,在对更新版本的代码进行测试时,需要对第2个for循环语句再次进行测试,相应的,从原始版本的代码的测试用例中选取出的更新版本的测试用例需要可以对第2个for循环语句进行测试。通过比较代码分支的标识信息,可以精确地确定各个层级中的标识信息在原始版本的代码中和更新版本的代码中不同的代码分支,即精确地确定各个层级的代码发生变化的代码分支,在对在对更新版本的代码进行测试时,从原始版本的代码的测试用例中选取出更新版本的测试用例需要可以对代码发生变化的代码分支进行测试。

在本实施例的一些可选的实现方式中,对于每一个函数,均可以基于函数的代码中的函数的返回值类型、函数的函数名、函数的参数、函数的抛出的异常类型等,计算出哈希值,将计算出的哈希值作为函数的标识信息。例如,可以将一个函数的返回值类型、函数名、函数参数、抛出的异常类型等信息进行组合,得到一个组合信息,利用md5算法计算出组合信息对应的哈希值,将计算出的作为该函数的标识信息。在计算出函数的标识信息之后,可以编写包含函数的标识信息的日志语句,将日志语句加入到函数的代码中的首个语句之前,即将日志语句作为函数的代码中的首个语句。从而,当函数被调用时,会首先执行日志语句,日志语句中的函数的标识信息会被打印到日志中。

在本实施例的一些可选的实现方式中,对于代码分支,可以基于代码分支的分支类型、该代码分支中的参数、该代码分支中的语句、该代码分支的层深等,得到第二关联信息。例如,可以对于一个代码分支,可以将该代码分支的分支类型、该代码分支中的参数、该代码分支中的语句、该代码分支的层深等进行组合,得到第二关联信息,可以计算第二关联信息对应的哈希值,将计算出的哈希值作为该代码分支的标识信息。对于每一个函数的每一个代码分支,均可以分别编写包含该函数的标识信息和该代码分支的标识信息的日志语句,将日志语句加入到代码分支的代码中的首个语句之前。从而,当代码分支被调用时,会首先执行日志语句,日志语句中的函数的标识信息和代码分支的标识信息会被打印到日志中。

步骤102,基于确定出的目标标记对象和原始版本的代码的测试用例,确定出更新版本的代码的测试用例。

在本实施例中,可以预先利用原始版本的代码的多个测试用例中的每一个原始版本的代码的测试用例分别对原始版本的代码进行测试,分别确定利用每一个测试用例对原始版本的代码进行测试之后被调用的标记对象。

当标记对象包括函数、函数中的代码分支时,函数在一次调用过程中从被调用的起始时刻到本次函数调用结束,函数中的至少一个代码分支会被调用。当利用一个原始版本的代码的测试用例对原始版本的代码进行测试一个函数被调用时,则可以将建立该原始版本的代码的测试用例与该函数的标识信息的对应关系,同时,该函数被调用时该函数中的至少一个代码分支被调用,可以建立该原始版本的代码的测试用例与该至少一个代码分支的对应关系。一个原始版本的代码的测试用例在测试过程中可以多次调用同一个函数,每一次调用函数的过程中至少一个代码分支被调用。不同次的调用同一个函数的过程中被调用的代码分支可以相同或部分相同,也可以完全不同。

利用一个原始版本的代码的测试用例对原始版本的代码进行测试时被调用的函数的标识信息可以称之为该原始版本的代码对应的函数的标识信息。利用一个原始版本的代码的测试用例对原始版本的代码进行测试时被调用的代码分支的标识信息可以称之为该原始版本的代码对应的代码分支的标识信息。在利用每一个原始版本的代码的测试用例对原始版本的代码进行测试之后,每一个原始版本的代码的测试用例均可以对应多个函数的标识信息,每一个原始版本的代码的测试用例均可以对应多个代码分支的标识信息。

在本实施例中,可以基于确定出的目标标记对象和原始版本的代码的测试用例,确定出更新版本的代码的测试用例。

以所有目标标记对象均为函数为例,对于作为目标标记对象的一个函数,在原始版本的代码中的该函数标识信息与在更新版本的代码中该函数的标识信息不同,因此,需要确定出相应的测试用例对该函数再次进行测试。确定出更新版本的代码的所有测试用例可以相当于确定出可以对所有作为目标标记对象的函数再次进行测试的测试用例。当确定更新版本的代码的测试用例时,可以首先从所有原始版本的代码的测试用例中选取出对应的作为目标标记对象的函数的标识信息最多的测试用例。换言之,由于一个原始版本的代码的测试用例对应的函数的标识信息为在利用该原始版本的代码的测试用例对原始版本的代码进行测试时被调用的函数的标识信息,从所有原始版本的代码的测试用例中选取出对应的函数的标识信息最多的测试用例相当于从所有原始版本的代码的测试用例中选取出可以测试的作为目标标记对象的函数的数量最多的测试用例。然后,对于剩余的作为目标标记对象的函数,从剩余的原始版本的代码的测试用例中选取出可以测试剩余的作为目标标记对象的函数中的函数的数量最多的测试用例。以此类推,每一次对于上一次选取之后剩余的作为目标标记对象的函数,均从剩余的原始版本的代码的测试用例中选取出可以测试剩余的作为目标标记对象的函数中的函数的数量最多的测试用例。直至无剩余的作为目标标记对象的函数或无可选取的原始版本的测试用例。

在本实施例的一些可选的实现方式中,可以在原始版本的代码中的每一个标记对象的首个语句之前分别加入日志语句。日志语句包括:标记对象的标识信息。可以利用多个测试用例对原始版本的代码进行测试。对于每一个原始版本的代码的测试用例,基于利用原始版本的代码的测试用例对原始版本的代码进行测试之后被输出到日志的标识信息,确定利用原始版本的代码的测试用例对原始版本的代码进行测试之后被调用的标记对象。对于代码分支,作为代码分支的首个语句的日志语句中除了代码分支的标识信息,还可以包括代码分支所属的函数的标识信息。在利用原始版本的代码的测试用例进行测试的过程中,当函数被调用时,作为函数的首个语句的日志语句被执行,函数的标识信息则可以输出到日志。当代码分支被调用时,代码分支的标识信息则可以输出到日志。可以分别根据利用每一个原始版本的代码的测试用例对原始版本的代码进行测试之后输出到日志中的函数的标识信息、代码分支的标识信息,分别确定利用每一个原始版本的代码的测试用例对原始版本的代码进行测试之后被调用的函数和代码分支。可以进一步对于原始版本的代码的每一个测试用例,确定利用原始版本的代码的测试用例对原始版本的代码进行测试时每一个标记对象的跳转路径信息。

一个函数的跳转路径信息可以为该函数的标识信息。一个代码分支的跳转路径信息指示在该代码分支所属的函数被调用起到该代码分支被调用的时刻之间所有被调用的代码分支和调用次序。当一个函数中的一个代码分支被调用时,则该代码分支的跳转路径信息可以指示在该代码分支所属的函数被调用起到该代码分支被调用所有被调用的代码分支和调用次序。一个代码分支的跳转路径信息可以为一个序列,序列中依次包含该代码分支所属的函数的标识信息、从该代码分支所属的函数被调用的时刻到该代码分支被调用的时刻之间所有被调用的该函数的代码分支的标识信息。

例如,假设原始版本的代码的一个测试用例对原始版本的代码测试之后原始版本代码中的函数func1被调用,func1中的一个作为代码分支的ifelse语句被调用,打印到日志的内容包括:函数func1的标识信息即e026f40da33eae37、e026f40da33eae37-l1664231211。l1664231211为该ifelse语句的标识信息。可以根据被打印到日志的e026f40da33eae37-l1664231211,确定函数func1被调用,并且,func1中的该ifelse语句被调用,可以生成一个该ifelse语句的跳转路径信息,该ifelse语句的跳转路径信息为一个序列,该序列中的标识信息依次为函数func1的标识信息即e026f40da33eae37、ifelse语句的标识信息l1664231211。

原始版本的代码的每一个测试用例可以分别对应一个跳转路径信息集合。一个原始版本的代码的测试用例对应的跳转路径信息集合包括:利用该测试用例对原始版本的代码进行测试之后每一个被调用的代码分支各自的跳转路径信息。一个标记对象的跳转路径信息指示当该标记对象被调用时在该标记对象所属的函数被调用的时刻到该标记对象被调用的时刻之间所有被调用的标记对象和调用次序。

一个标记对象的跳转路径信息可以为一个序列,当标记对象为一个函数时,序列中仅包含该函数的标识信息。当标记对象为一个代码分支时,则序列中依次包含该代码分支所属的函数的标识信息、从该代码分支所属的函数被调用的时刻到该代码分支被调用的时刻之间所有被调用的该函数的代码分支的标识信息。

在本实施例的一些可选的实现方式中,当基于确定出的目标标记对象和原始版本的代码的测试用例,确定更新版本的代码的测试用例时,可以基于原始版本的测试用例对应的跳转路径信息集合中包含的目标标记对象的跳转路径信息的数量,从所有原始版本的测试用例中选取出用于对更新版本的代码进行测试的更新版本的代码的测试用例。

每一个原始版本的代码的测试用例可以分别对应一个跳转路径信息集合。一个原始版本的代码的测试用例对应的跳转路径信息集合包括:利用该测试用例对原始版本的代码进行测试之后每一个被调用的标记对象各自的跳转路径信息。一个标记对象的跳转路径信息指示当该标记对象被调用时在该标记对象所属的函数被调用的时刻到该标记对象被调用的时刻之间所有被调用的标记对象和调用次序。

可以对于每一个目标标记对象,分别确定每一个目标标记对象各自的跳转路径信息。一个目标标记对象的跳转路径信息可以指示该目标标记对象被调用时在该目标标记对象所属的函数被调用的时刻到标记对象被调用的时刻之间所有被调用的标记对象和调用次序。

当基于原始版本的测试用例对应的跳转路径信息集合中包含的目标标记对象的跳转路径信息的数量,从所有原始版本的代码的测试用例中选取出用于对更新版本的代码进行测试的更新版本的代码的测试用例时,可以首先从所有原始版本的代码的测试用例中选取出对应的跳转路径信息集合中包含的目标标记对象的跳转路径信息的数量最多的测试用例。所有目标标记对象中除了跳转路径信息位于选取出的测试用例对应的跳转路径信息集合中的目标标记对象之外的目标标记对象成为剩余的目标标记对象。除了本次选取出的测试用例之外的原始版本的代码的测试用例成为剩余的测试用例。然后,对于剩余目标标记对象,从剩余的原始版本的代码的测试用例中选取出对应的跳转路径信息集合中包含的剩余的目标标记对象的跳转路径信息的数量最多的测试用例。以此类推,每一次对于上一次选取之后剩余的目标标记对象,均从剩余的原始版本的代码的测试用例中选取出包含的剩余的目标标记对象的跳转路径信息的数量最多的测试用例。直至无剩余的目标标记对象或无可选取的测试用例。

由于可以测试代码分支的测试用例可以测试该代码分支所属的函数和到该代码分支被调用之前所有被调用的属于该函数的代码分支,因此,当基于原始版本的测试用例对应的跳转路径信息集合包含的目标标记对象的跳转路径信息的数量,从所有原始版本的代码的测试用例中选取出用于对更新版本的代码进行测试的更新版本的代码的测试用例时,相当于从所有原始版本的代码的测试用例中选取出可以测试作为目标标记对象的代码分支的测试用例。

可以首先从所有原始版本的代码的测试用例中选取出对应的跳转路径信息集合中包含的作为目标标记对象的代码分支的跳转路径信息的数量最多的测试用例。所有目标标记对象中除了跳转路径信息位于选取出的测试用例对应的跳转路径信息集合中的作为目标标记对象的代码分支之外的作为目标对象的代码分支目标标记对象成为剩余的作为目标对象的代码分支。除了本次选取出的测试用例之外的原始版本的代码的测试用例成为剩余的测试用例。然后,对于剩余的作为目标标记对象的代码分支,从剩余的原始版本的代码的测试用例中选取出对应的跳转路径信息集合中包含的剩余的作为目标标记对象的代码分支的跳转路径信息的数量最多的测试用例。以此类推,每一次对于上一次选取之后剩余的作为目标标记对象的代码分支,均从剩余的原始版本的代码的测试用例中选取出包含的剩余的作为目标标记对象的代码分支的跳转路径信息的数量最多的测试用例。直至无剩余的作为目标标记对象的代码分支或无可选取的测试用例。

步骤103,利用更新版本的代码的测试用例对更新版本的代码进行测试。

在本实施例中,在确定出用于测试更新版本的代码的更新版本的代码的测试用例之后,可以利用更新版本的代码的测试用例对更新版本的代码进行测试。

请参考图3,作为对上述各图所示方法的实现,本申请提供了一种代码测试装置的一个实施例,该装置实施例与图1所示的方法实施例相对应。

如图3所示,本实施例的代码测试装置包括:对象确定单元301,用例确定单元302,代码测试单元303。其中,对象确定单元301被配置为确定所有标记对象中的目标标记对象,其中,标记对象的标识信息基于标记对象的至少部分代码生成,在更新版本的代码中的目标标记对象的标识信息与在原始版本的代码中的目标标记对象的标识信息不同;用例确定单元302被配置为基于确定出的目标标记对象和原始版本的代码的测试用例,确定出更新版本的代码的测试用例;代码测试单元303被配置为利用更新版本的代码的测试用例对更新版本的代码进行测试。

在本实施例的一些可选的实现方式中,标记对象包括:函数、函数中的代码分支。

在本实施例的一些可选的实现方式中,代码测试装置还包括:第一标识信息生成单元,被配置为基于函数的属性信息,生成函数的标识信息,函数的属性信息包括以下一项或多项:函数的返回值类型、函数的函数名、函数的参数。

在本实施例的一些可选的实现方式中,代码测试装置还包括:第二标识信息生成单元,被配置为基于代码分支的属性信息,生成代码分支的标识信息,代码分支的属性信息包括以下一项或多项:代码分支的分支类型、代码分支的参数、代码分支中的语句。

在本实施例的一些可选的实现方式中,代码测试装置还包括:预测试单元,被配置为在原始版本的代码中的标记对象的代码的首个语句之前加入日志语句,所述日志语句包括:标记对象的标识信息;利用多个测试用例对原始版本的代码进行测试;对于每一个测试用例,基于测试用例对原始版本的代码进行测试之后被输出到日志的标识信息,确定利用测试用例对原始版本的代码进行测试之后被调用的标记对象。

在本实施例的一些可选的实现方式中,用例确定单元进一步被配置为:基于原始版本的测试用例对应的跳转路径信息集合包括的目标标记对象的跳转路径信息的数量,从所有原始版本的测试用例中选取出至少部分测试用例作为更新版本的代码的测试用例,其中,原始版本的测试用例对应的跳转路径信息集合包括:利用原始版本的测试用例对原始版本的代码测试之后被调用的标记对象的跳转路径信息,标记对象的跳转路径信息指示当标记对象被调用时在所述标记对象所属的函数被调用的时刻到所述标记对象被调用的时刻之间所有被调用的标记对象和调用次序

图4示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

如图4所示,计算机系统包括中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram403中,还存储有计算机系统操作所需的各种程序和数据。cpu401、rom402以及ram403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。

以下部件连接至i/o接口405:输入部分406;输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。

特别地,本申请的实施例中描述的过程可以被实现为计算机程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包括用于执行流程图所示的方法的指令。该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(cpu)401执行时,执行本申请的方法中限定的上述功能。

本申请还提供了一种电子设备,该电子设备可以配置有一个或多个处理器;存储器,用于存储一个或多个程序,一个或多个程序中可以包含用以执行上述实施例中描述的操作的指令。当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器执行上述实施例中描述的操作。

本申请还提供了一种计算机可读介质,该计算机可读介质可以是电子设备中所包括的;也可以是单独存在,未装配入电子设备中。上述计算机可读介质承载有一个或者多个程序,当一个或者多个程序被电子设备执行时,使得电子设备:确定所有标记对象中的目标标记对象,其中,标记对象的标识信息基于标记对象的至少部分代码生成,在更新版本的代码中的目标标记对象的标识信息与在原始版本的代码中的目标标记对象的标识信息不同;基于确定出的目标标记对象和原始版本的代码的测试用例,确定出更新版本的代码的测试用例;利用更新版本的代码的测试用例对更新版本的代码进行测试。

需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被消息执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由消息执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行消息。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机消息的组合来实现。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1