一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种程序测试方法、装置、电子设备及存储介质与流程

2022-06-02 17:19:19 来源:中国专利 TAG:


1.本发明实施例涉及计算机技术,尤其涉及一种程序测试方法、装置、电子设备及存储介质。


背景技术:

2.随着计算机技术的快速发展,目前常见的测试方式具有可以分为基于功能模块的测试和基于代码覆盖统计的测试,而基于代码覆盖统计的测试是通过量化来保证测试的完全性,对于软件系统来说具有较高可的靠性或安全性。现在很多行业中更多采用基于代码覆盖统计的测试作为测试标准,比如:以

函数覆盖’和

函数调用覆盖’的标准被执行,要求软件中所包含的函数至少有被执行和调用到,避免测试的明显遗漏或出现荣誉代码。但是现有技术中基于代码覆盖统计的测试,对于多个服务存在调用关系的情况无法有效筛选上游关联系统的测试用例,同时确定的测试用例往往存在大量重复调用,需要人工参与筛选或者执行较多的冗余用例。


技术实现要素:

3.本发明提供一种程序测试方法、装置、电子设备及存储介质,以实现有效确定对上游关联的系统的测试用例,避免测试用例大量重复调用。
4.第一方面,本发明实施例提供了一种程序测试方法,该方法包括:
5.获取被调用系统对应的代码修改列表,并根据所述代码修改列表查找所述被调用系统的用例代码映射表,得到所述被调用系统中的修改代码对应的用例列表;
6.根据所述代码修改列表确定所述被调用系统对应的调用系统,并获取所述调用系统对应的回归代码;
7.根据所述回归代码查询所述调用系统的用例代码映射表,得到所述调用系统对应的用例列表;
8.对所述被调用系统中修改代码对应的用例列表和所述调用系统对应的用例列表进行筛选,得到测试用例,根据所述测试用例测试所述被调用系统中的修改代码和所述调用系统对应的回归代码。
9.第二方面,本发明实施例还提供了一种程序测试装置,该装置包括:
10.用例查找模块,用于获取被调用系统对应的代码修改列表,并根据所述代码修改列表查找所述被调用系统的用例代码映射表,得到所述被调用系统中的修改代码对应的用例列表;
11.系统确定模块,用于根据所述代码修改列表确定所述被调用系统对应的调用系统,并获取所述调用系统对应的回归代码;
12.列表查找模块,用于根据所述回归代码查询所述调用系统的用例代码映射表,得到所述调用系统对应的用例列表;
13.用例筛选模块,用于对所述被调用系统中修改代码对应的用例列表和所述调用系
统对应的用例列表进行筛选,得到测试用例,根据所述测试用例测试所述被调用系统中的修改代码和所述调用系统对应的回归代码。
14.第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:
15.一个或多个处理器;
16.存储装置,用于存储一个或多个程序,
17.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现所述的程序测试方法。
18.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述的程序测试方法。
19.本发明实施例,通过获取被调用系统对应的代码修改列表,并根据代码修改列表查找被调用系统的用例代码映射表,得到被调用系统中的修改代码对应的用例列表;根据代码修改列表确定被调用系统对应的调用系统,并获取调用系统对应的回归代码;根据回归代码查询调用系统的用例代码映射表,得到调用系统对应的用例列表;对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,根据测试用例测试被调用系统中的修改代码和调用系统对应的回归代码。即,本发明实施例,根据修改代码确定被调用系统和调用系统之间的调用关系,可以有效的确定上游关联系统的测试用例关系,并对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,避免测试用例大量重复调用,需减少人工参与。
附图说明
20.图1是本发明实施例提供的程序测试方法的一个流程示意图;
21.图2是本发明实施例提供的程序测试方法的另一流程示意图;
22.图2a为本发明实施例提供的用例代码映射表的原理示意图;
23.图2b为本发明实施例提供的调用关系记录条的结构示意图;
24.图2c为本发明实施例提供的用例代码调用图的原理示意图;
25.图2d为本发明实施例提供的用例列表筛选的原理示意图;
26.图3是本发明实施例提供的程序测试装置的一个结构示意图;
27.图4是本发明实施例提供的电子设备的结构示意图。
具体实施方式
28.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
29.图1为本发明实施例提供的程序测试方法的一个流程示意图,该方法可以由本发明实施例提供的程序测试装置来执行,该装置可采用软件和/或硬件的方式实现。在一个具体的实施例中,该装置可以集成在电子设备中,电子设备比如可以是服务器。以下实施例将以该装置集成在电子设备中为例进行说明,参考图1,该方法具体可以包括如下步骤:
30.s110、获取被调用系统对应的代码修改列表,并根据代码修改列表查找被调用系统的用例代码映射表,得到被调用系统中的修改代码对应的用例列表;
31.示例地,被调用系统可以是系统之间的调用关系中被其他系统调用的系统,用于通过程序接口为其他系统提程序代码,以便于实现被调用系统的功能,比如,被调用系统可以是用于实现操作系统的所有系统调用集合中任意一系统。被调用系统对应的代码修改列表可以是修改被调用系统时生成的修改列表,其中代码修改列表包括所有修改代码位置、修改代码的功能内容和修改日志等,可以用于确定被调用系统的修改代码。被调用系统的用例代码映射表可以用于被调用系统中程序测试的所有用例与代码的测试关系对照表,用于确定被调用系统中需要测试程序对应的用例。被调用系统中的修改代码对应的用例列表可以是通过被调用系统的用例代码映射表确定出的当前修改代码的测试用例统计表。
32.具体实现中,当被调用系统检测到被调用系统中的代码被改动时,通过修改前后不同时刻被调用系统中程序进行对比,获取被调用系统对应的代码修改列表;还可以是当被调用系统检测到被调用系统中的代码被改动,获取被调用系统自动生成的被调用系统对应的代码修改列表。根据代码修改列表查找被调用系统的用例代码映射表,得到被调用系统中的修改代码对应的用例列表。
33.s120、根据代码修改列表确定被调用系统对应的调用系统,并获取调用系统对应的回归代码;
34.具体实现中,调用系统可以是系统之间的调用关系中调用被调用系统的系统,用于通过程序接口调用被调用系统中的程序代码,以便于实现调用系统的功能,比如,调用系统可以是用于实现操作系统的所有系统调用集合中任意一系统。调用系统对应的回归代码可以是基于被调用系统中的修改代码实现程序功能的代码,还可以是与被调用系统中的修改代码相关的调用系统的代码。
35.具体实现中,根据被调用系统的修改代码列表确定被调用系统中的修改代码,并根据被调用系统中的修改代码和系统调用关系映射表确定被调用系统中的修改代码的调用系统(即,被调用系统对应的调用系统)。根据被调用系统中的修改代码确定调用系统中调用被调用系统中的修改代码的程序代码,得到调用系统对应的回归代码。
36.s130、根据回归代码查询调用系统的用例代码映射表,得到调用系统对应的用例列表;
37.具体实现中,调用系统的用例代码映射表可以用于调用系统中程序测试的所有用例与调用系统中代码的测试关系对照表,用于确定调用系统中需要测试程序对应的用例。根据调用系统中的回归代码查找调用系统的用例代码映射表,得到调用系统对应的用例列表,其中,调用系统对应的用例列表可以是调用系统中的回归代码对应的用例列表,用于测试调用系统中的回归代码。
38.s140、对被调用系统中的修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,根据测试用例测试被调用系统中的修改代码和调用系统对应的回归代码。
39.具体实现中,测试用例用于测试被调用系统中的修改代码和调用系统对应的回归代码,通过对被调用系统中的修改代码对应的用例列表和调用系统对应的用例列表进行筛选得到的精简测试用例。通过被调用系统中修改代码和调用系统的回归代码在测试过程中隐含重复测试关系,对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,在并不影响被调用系统中修改代码和调用系统的回归代码功能测试的情况下,
以实现对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表中重复测试用例进行删除,得到测试被调用系统中的修改代码和调用系统对应的回归代码精简后的测试用例。
40.本发明实施例,通过获取被调用系统对应的代码修改列表,并根据代码修改列表查找被调用系统的用例代码映射表,得到被调用系统中的修改代码对应的用例列表;根据代码修改列表确定被调用系统对应的调用系统,并获取调用系统对应的回归代码;根据回归代码查询调用系统的用例代码映射表,得到调用系统对应的用例列表;对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,根据测试用例测试被调用系统中的修改代码和调用系统对应的回归代码。即,本发明实施例,根据修改代码确定被调用系统和调用系统之间的调用关系,可以有效的确定上游关联系统的测试用例关系,并对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,避免测试用例大量重复调用,需减少人工参与。
41.下面进一步描述本发明实施例提供的程序测试方法,如图2所示,该方法具体可以包括如下步骤:
42.s210、获取被调用系统对应的代码修改列表,并根据代码修改列表查找被调用系统的用例代码映射表,得到被调用系统中的修改代码对应的用例列表;
43.进一步的,获取被调用系统对应的代码修改列表,包括:
44.对被调用系统修改前后的系统代码进行比较,得到被调用系统对应的代码修改列表。
45.具体实现中,当被调用系统检测到被调用系统中的代码被改动时,通过修改前后不同时刻被调用系统中程序进行对比,比如:可以通过git diff算法在被调用系统中工作区中的代码有改动时,对修改前后被调用系统中的代码进行比较,得到被调用系统对应的代码修改列表。也可以是通过被调用系统的修改日志,对比不同时刻被调用系统中代码,得到被调用系统对应的代码修改列表。
46.进一步的,根据代码修改列表查找被调用系统的用例代码映射表,得到被调用系统中的修改代码对应的用例列表,包括:
47.确定被调用系统的用例代码映射表中是否具有修改代码对应的用例;
48.当被调用系统的用例代码映射表中具有修改代码对应的用例,则根据被调用系统的用例代码映射表确定被调用系统中的修改代码对应的用例列表;
49.当被调用系统的用例代码映射表中不具有修改代码对应的用例,则编写修改代码对应的用例,得到被调用系统中的修改代码对应的用例列表。
50.具体实现中,根据被调用系统的代码修改列表自动查找被调系统的用例代码映射表,并判断被调系统的用例代码映射表是否具有修改代码对应的用例,以便于确定是否根据被调用系统的用例代码映射表确定被调系统中修改代码对应的用例列表。当被调用系统的用例代码映射表中具有修改代码对应的用例,则根据修改代码在被调用系统的用例代码映射表中匹配被调用系统中的修改代码对应的用例,得到被调用系统中的修改代码对应的用例列表。当被调用系统的用例代码映射表中具有修改代码对应的用例,则说明被调用系统的用例代码映射表中无法找到修改代码对应的用例,需要编写新用例覆盖修改代码作为被调用系统中的修改代码对应的用例列表。另外,需要将编写出的新用例与修改代码添加
到被调系统的用例代码映射表,对被调系统的用例代码映射表进行更新,得到被调系统的新用例代码映射表。
51.图2a为本发明实施例提供的用例代码映射表的原理示意图,如图2a所示,用例代码映射表用于记录自动化测试用例和系统代码之间的映射关系,通过用例代码映射表可以确定修改代码和用例代码映射表中测试用例之间的映射关系,用于确定测试用例。当系统b中的classb method4为修改代码,确定修改代码对应的用例为b。
52.s220、根据代码修改列表确定被调用系统对应的调用系统,并获取调用系统对应的回归代码;
53.进一步的,根据代码修改列表确定被调用系统对应的调用系统,包括:
54.获取调用关系系统中的系统调用关系映射表,根据代码修改列表和被调用系统查询系统调用关系映射表,得到被调用系统对应的调用系统。
55.具体实现中,调用关系系统可以是与被调用系统和调用系统进行信息通讯的系统,可以是单独开发的系统专门用于各系统相关的调用信息维护,也可以是通过注册等方式进行信息通讯备份的系统,用于记录每个系统中程序调用来源、调用代码和调用接口等信息。其中,调用关系系统中维护有多个系统的调用关系映射表。调用关系映射表中包括被调用系统的名称、调用系统的名称、调用方法名和被调方法名。将代码修改列表中的修改代码作为被调方法名和被调系统的名称查询系统调用关系映射表,确定被调用系统对应的调用系统和调用关系记录条,并从调用关系记录中获取调用系统对应的回归代码。
56.图2b为本发明实施例提供的调用关系记录条的结构示意图,如图2b所示,调用系统a和被调用系统b,通过调用方法名method1调用被调用系统中的被调用方法名method2。根据调用关系记录条就可以根据系统的代码改动情况确定上游系统的回归代码,进而确定上游系统中需要回归的测试用例。其中,调用关系记录条中被调用系统b的classb的方法method2代码进行了修改,通过该条记录就可以确定调用系统a的classa的method1的代码需要进行回归测试,并将调用系统a的classa的method1的代码作为回归代码。
57.s230、根据回归代码查询调用系统的用例代码映射表,得到调用系统对应的用例列表;
58.s240、根据被调用系统中修改代码对应的用例列表和调用系统对应的用例列表绘制用例代码调用图;
59.具体实现中,用例代码调用图可以是通过用例和系统的调用指向,展示用例与系统之间的调用关系的图。根据被调用系统中修改代码对应的用例列表和调用系统对应的用例列表,确定系统与用例之间的调用关系。通过系统与用例之间的调用关系绘制用例代码调用图。
60.图2c为本发明实施例提供的用例代码调用图的原理示意图,如图2c所示,圆形代表用例,方形代表系统代码,其中,用例代码调用图中具有系统a代码、系统b代码、系统c代码、系统d代码和系统e代码,并具有图例a、b、c、d、f和e。其中,系统a代码对应的用例列表{a,b,c}、系统b代码对应的用例列表{c}、系统c代码对应的用例列表{b,d}、系统d代码对应的用例列表{d,c,f}和系统e代码对应的用例列表{e}。
61.s250、根据用例代码调用图分别确定被调用系统的入度和调用系统的入度;
62.示例地,被调用系统的入度可以是被调用系统的代码修修改列表对应的用例代码
调用图中指向被调用系统中修改代码的用例个数。调用系统的入度可以是调用系统对应的用例列表绘制的用例代码调用图中指向调用系统中回归代码的用例个数。
63.具体实现中,根据被调用系统中修改代码对应的用例列表和调用系统对应的用例列表绘制用例代码调用图,利用用例代码调用图中指向被调用系统中修改代码的用例个数确定被调用系统的入度,并利用用例代码调用图中指向调用系统中回归代码的用例个数确定调用系统的入度,以便于通过被调用系统的入度和调用系统的入度进行筛选,得到测试被调用系统中修改代码和调用系统的回归的精简用例列表。
64.s260、根据被调用系统的入度和调用系统的入度对用例代码调用图中的用例进行筛选,得到测试用例,根据测试用例测试被调用系统中的修改代码和调用系统对应的回归代码。
65.具体实现中,根据对被调用系统中代码和调用系统中代码的测试需求和实验数据设置预设精简的入度阈值,一般情况下在不影响测试代码功能情况下,设置入度阈值为1。根据被调用系统的入度和调用系统的入度分别与入度阈值进行对比,确定是否对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选。当被调用系统的入度和调用系统的入度均小于入度阈值,则说明被调用系统中修改代码对应的用例列表和调用系统对应的用例列表均过于精简,无法达到测试要求。当被调用系统的入度小于入度阈值或调用系统的入度阈值,则说明被调用系统中修改代码对应的用例列表过于精简,无法达到测试要求,或调用系统对应的用例列表过于精简,无法达到测试要求。当调用系统的入度大于入度阈值且被调用系统的入度等于入度阈值时,则说明调用系统对应的用例列表需要进行筛选,以达到预设调用系统中回归代码测试用例的精简需求。
66.进一步的,根据被调用系统的入度和调用系统的入度对用例代码调用图中的用例进行筛选,得到测试用例,包括:
67.确定被调用系统的入度和调用系统的入度不为1的系统作为用例筛选系统,并保留所述用例代码调用图中被调用系统和调用系统中入度等于1的系统对应的用例;
68.根据用例代码调用图中用例筛选系统对应用例的出度由小到大对用例筛选系统对应用例进行排序,并根据用例筛选系统对应用例的排序对用例代码调用图中的用例进行筛选,得到测试用例。
69.示例地,用例筛选系统可以是被调用系统和调用系统中入度不为1的系统,即用例筛选系统中的每个系统对应多个测试用例,其中,被调用系统和调用系统中入度等于1的系统可以是被调用系统和调用系统中仅有一个测试用例的系统,保留用例代码调用图中被调用系统和调用系统中入度等于1的系统对应的用例,即是对被调用系统和调用系统中仅有一个测试用例的系统的测试用例进行保留,使得测试用例完整测试每个系统的功能。用例代码调用图中用例筛选系统对应用例的出度可以是当前用例代码调用图中用例筛选系统中每个用例对应可以测试系统的数目。
70.具体实现中,根据实际需求将入度阈值设置为1,等于入度阈值的系统为被调用系统和调用系统中仅有一个测试用例的系统,需要保留用例代码调用图中被调用系统和调用系统中入度等于1的系统对应的用例,即是对被调用系统和调用系统中仅有一个测试用例的系统的测试用例进行保留,使得测试用例完整测试每个系统的功能;大于入度阈值的系统为被调用系统和调用系统中具有多个测试用例的需要进行用例筛选的用例筛选系统,在
未删除用例前,被调用系统和调用系统对应的用例代码调用图中不具有小于入度阈值的系统,系统在使用前都需要进行测试。根据用例代码调用图中用例与系统的连接情况确定用例代码调用图中用例筛选系统对应用例的出度,用于确定用例筛选系统对应每个用例可以测试系统的数目,在对用例代码调用图中的用例进行筛选时,需要根据用例筛选系统对应用例的出度对用例筛选系统对应用例进行排序,一般按照出度由小到大排序,因为出度大的用例对应可以测试系统的数目较大,即多个系统都可以用该用例进行测试,出度小的用例对应的可以测试系统的数目较小,即可以用该用例测试系统较少,先从出度小的进行筛选,由简到复杂,直至将用例筛选系统对应用例精简至被调用系统和调用系统都可以进行用例测试,用例代码调用图中的用例最少时,可以将用例代码调用图中的用例作为测试用例。
71.进一步的,根据所述用例筛选系统对应用例的出度对所述用例代码调用图中的用例进行筛选,得到所述测试用例,包括:
72.依次删除用例代码调用图中用例筛选系统对应用例,并确定删除一个用例后用例筛选系统的入度是否均不为零;
73.当删除一个用例后用例筛选系统中出现入度为零的系统,则在用例代码调用图中恢复当前删除的一个用例;
74.当删除一个用例后用例筛选系统的入度是不均为零,则继续删除用例代码调用图中的下一用例,直至用例筛选系统对应用例均被尝试性删除,则将筛选后用例代码调用图中的用例作为测试用例。
75.具体实现中,在对用例代码调用图中的用例进行筛选时,需要根据用例筛选系统对应用例的出度对用例筛选系统对应用例进行排序,一般按照出度由小到大排序。根据排序依次在用例代码调用图中删除用例筛选系统对应用例,在删除用例筛选系统对应用例中的一个用例后,每删除一个用例后,确定用例筛选系统的入度是否为零;当删除一个用例后用例筛选系统中出现入度为零的系统,说明当前删除的一个用例是用例筛选系统中某一系统唯一测试用例,则在用例代码调用图中恢复当前删除的一个用例;当删除一个用例后用例筛选系统未出现入度为零的系统,说明当前删除的一个用例并不是用例筛选系统唯一测试用例可以删除,则继续删除用例代码调用图中用例筛选系统对应用例中下一个用例,并确定删除下一用例后用例筛选系统的入度是否为零,为零则恢复,不为零则继续删除,直到用例筛选系统对应用例全部被尝试删除,得到筛选后的用例代码调用图中的用例作为测试用例。其中,最后一个尝试性删除的用例筛选系统对应用例中的用例,需要确定恢复和删除后用例筛选系统对应用例被认为全部被尝试删除。
76.图2d为本发明实施例提供的用例列表筛选的原理示意图,如图2d所示,圆形代表用例,方形代表系统代码,其中,用例代码调用图中具有系统a代码、系统b代码、系统c代码、系统d代码和系统e代码,并具有图例a、b、c、d、f和e。其中,系统a代码对应的用例列表{a,b,c}、系统b代码对应的用例列表{c}、系统c代码对应的用例列表{b,d}、系统d代码对应的用例列表{d,c,f}和系统e代码对应的用例列表{e}。确定用例代码调用图中系统a的入度为3、系统b的入度为1、系统c的入度为2、系统d的入度为3和系统e的入度为1。用例代码调用图中保留系统b和系统e对应的用例{c,e}不进行筛选,确定系统a、系统c和系统d为用例筛选系统,并确定,用例代码调用图中系统a、系统c和系统d对应用例{a,b,d,f}。根据用例筛选前
的用例代码调用图确定用例a,用例b,用例d和用例f的出度,用例a的出度为1,用例b的出度为2,用例d的出度为2,用例f的出度为1,可以根据用例a,用例b,用例d和用例f的出度由小到大排序为用例a,用例f,用例b,用例d,也可以不用排序。依次删除,首选删除用例a,确定用例筛选系统中系统a的入度为2、系统c的入度为2、系统d的入度为3均不为零,则继续删除用例f,确定用例筛选系统中系统a的入度为2、系统c的入度为2、系统d的入度为2均不为零,则继续删除用例b,用例筛选系统中系统a的入度为1、系统c的入度为1、系统d的入度为2均不为零,则继续尝试删除用例d,确定用例筛选系统中系统a的入度为1、系统c的入度为0、系统d的入度为1中系统c入度为0,则恢复d,得到测试用例为{c、d、e}。
77.本发明实施例,通过获取被调用系统对应的代码修改列表,并根据代码修改列表查找被调用系统的用例代码映射表,得到被调用系统中的修改代码对应的用例列表;根据代码修改列表确定被调用系统对应的调用系统,并获取调用系统对应的回归代码;根据回归代码查询调用系统的用例代码映射表,得到调用系统对应的用例列表;对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,根据测试用例测试被调用系统中的修改代码和调用系统对应的回归代码。即,本发明实施例,根据修改代码确定被调用系统和调用系统之间的调用关系,可以有效的确定上游关联系统的测试用例关系,并对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,避免测试用例大量重复调用,需减少人工参与。
78.图3是本发明实施例提供的程序测试装置的结构示意图,如图3所示,该程序测试装置包括:
79.用例查找模块310,用于获取被调用系统对应的代码修改列表,并根据所述代码修改列表查找所述被调用系统的用例代码映射表,得到所述被调用系统中的修改代码对应的用例列表;
80.系统确定模块320,用于根据所述代码修改列表确定所述被调用系统对应的调用系统,并获取所述调用系统对应的回归代码;
81.列表查找模块330,用于根据所述回归代码查询所述调用系统的用例代码映射表,得到所述调用系统对应的用例列表;
82.用例筛选模块340,用于对所述被调用系统中修改代码对应的用例列表和所述调用系统对应的用例列表进行筛选,得到测试用例,根据所述测试用例测试所述被调用系统中的修改代码和所述调用系统对应的回归代码。
83.一实施例中,所述用例查找模块310获取所述被调用系统对应的代码修改列表,包括:
84.对所述被调用系统修改前后的系统代码进行比较,得到所述被调用系统对应的代码修改列表。
85.一实施例中,所述用例查找模块310根据所述代码修改列表查找所述被调用系统的用例代码映射表,得到所述被调用系统中的修改代码对应的用例列表,包括:
86.确定所述被调用系统的用例代码映射表中是否具有所述修改代码对应的用例;
87.当所述被调用系统的用例代码映射表中具有所述修改代码对应的用例,则根据所述被调用系统的用例代码映射表确定所述被调用系统中的修改代码对应的用例列表;
88.当所述被调用系统的用例代码映射表中不具有所述修改代码对应的用例,则编写
所述修改代码对应的用例,得到所述被调用系统中的修改代码对应的用例列表。
89.一实施例中,所述系统确定模块320根据所述代码修改列表确定所述被调用系统对应的调用系统,包括:
90.获取调用关系系统中的系统调用关系映射表,根据所述代码修改列表和所述被调用系统查询所述系统调用关系映射表,得到所述被调用系统对应的调用系统。
91.一实施例中,所述用例筛选模块340对所述被调用系统中修改代码对应的用例列表和所述调用系统对应的用例列表进行筛选,得到测试用例,包括:
92.根据所述被调用系统中修改代码对应的用例列表和所述调用系统对应的用例列表绘制用例代码调用图;
93.根据所述用例代码调用图分别确定所述被调用系统的入度和所述调用系统的入度;
94.根据所述被调用系统的入度和所述调用系统的入度对所述用例代码调用图中的用例进行筛选,得到所述测试用例。
95.一实施例中,所述用例筛选模块340根据所述被调用系统的入度和所述调用系统的入度对所述用例代码调用图中的用例进行筛选,得到所述测试用例,包括:
96.根据所述被调用系统的入度和所述调用系统的入度对所述用例代码调用图中的用例进行筛选,得到所述测试用例,包括:
97.确定所述被调用系统的入度和所述调用系统的入度不为1的系统作为用例筛选系统,并保留所述用例代码调用图中所述被调用系统和所述调用系统中入度等于1的系统对应的用例;
98.根据所述用例代码调用图中所述用例筛选系统对应用例的出度由小到大对所述用例筛选系统对应用例进行排序,并根据所述用例筛选系统对应用例的排序对所述用例代码调用图中的用例进行筛选,得到所述测试用例。
99.一实施例中,所述用例筛选模块340根据所述用例筛选系统对应用例的出度对所述用例代码调用图中的用例进行筛选,得到所述测试用例,包括:
100.依次删除所述用例代码调用图中用例筛选系统对应用例,并确定删除一个用例后所述用例筛选系统的入度是否均不为零;
101.当删除一个用例后所述用例筛选系统中出现入度为零的系统,则在所述用例代码调用图中恢复当前删除的一个用例;
102.当删除一个用例后所述用例筛选系统的入度是不均为零,则继续删除所述用例代码调用图中的下一用例,直至所述用例筛选系统对应用例均被尝试性删除,则将筛选后所述用例代码调用图中的用例作为所述测试用例。
103.本发明实施例装置,通过获取被调用系统对应的代码修改列表,并根据代码修改列表查找被调用系统的用例代码映射表,得到被调用系统中的修改代码对应的用例列表;根据代码修改列表确定被调用系统对应的调用系统,并获取调用系统对应的回归代码;根据回归代码查询调用系统的用例代码映射表,得到调用系统对应的用例列表;对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,根据测试用例测试被调用系统中的修改代码和调用系统对应的回归代码。即,本发明实施例,根据修改代码确定被调用系统和调用系统之间的调用关系,可以有效的确定上游关联系统的
测试用例关系,并对被调用系统中修改代码对应的用例列表和调用系统对应的用例列表进行筛选,得到测试用例,避免测试用例大量重复调用,需减少人工参与。
104.图4为本发明实施例提供的一种电子设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性电子设备12的框图。图4显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
105.如图4所示电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
106.总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
107.电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
108.系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
109.具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
110.电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
111.处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的程序测试方法,该方法包括:
112.获取被调用系统对应的代码修改列表,并根据所述代码修改列表查找所述被调用
系统的用例代码映射表,得到所述被调用系统中的修改代码对应的用例列表;
113.根据所述代码修改列表确定所述被调用系统对应的调用系统,并获取所述调用系统对应的回归代码;
114.根据所述回归代码查询所述调用系统的用例代码映射表,得到所述调用系统对应的用例列表;
115.对所述被调用系统中修改代码对应的用例列表和所述调用系统对应的用例列表进行筛选,得到测试用例,根据所述测试用例测试所述被调用系统中的修改代码和所述调用系统对应的回归代码。
116.本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现所述的程序测试方法,该方法包括:
117.获取被调用系统对应的代码修改列表,并根据所述代码修改列表查找所述被调用系统的用例代码映射表,得到所述被调用系统中的修改代码对应的用例列表;
118.根据所述代码修改列表确定所述被调用系统对应的调用系统,并获取所述调用系统对应的回归代码;
119.根据所述回归代码查询所述调用系统的用例代码映射表,得到所述调用系统对应的用例列表;
120.对所述被调用系统中修改代码对应的用例列表和所述调用系统对应的用例列表进行筛选,得到测试用例,根据所述测试用例测试所述被调用系统中的修改代码和所述调用系统对应的回归代码。
121.本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
122.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
123.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
124.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部
分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
125.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献