基于热力图的回归测试用例优先级确定方法

文档序号:28321784发布日期:2022-01-04 23:14阅读:106来源:国知局

1.本发明属于软件工程中的软件测试领域,尤其涉及在软件测试中集成测试阶段基于热力图的回归测试用例优先级确定方法。


背景技术:

2.在一些科学计算类软件中,通常包含较为复杂的逻辑和数学运算,其集成测试用例运行时需要耗费大量的物理计算资源和时间;在软件进行缺陷修复后,进行回归测试时也存在同样的问题。
3.最可靠的回归测试方法是对全部测试用例进行回归测试,但在时间紧和预算受限等条件下,重测全部测试用例显得不现实,因此,如何有选择性地进行回归测试,是该类软件回归测试工作的一项重要内容。
4.基于优先级的测试用例选择方法是回归测试用例选择中的常用方法,可以根据以往的测试结果、各模块覆盖率、历史故障率等因素进行优先级计算,这些方法在实际应用中的效果各有千秋。
5.热力图是一种以可视化方式反映一个区域的受关注程度、显著程度或者活跃程度的方法,将其用在回归测试优先级的确定过程中,可以对测试用例的优先级选择给出一个直观和可视化的判断。
6.为了更好地完成科学计算类软件集成测试中的回归测试工作,本发明提供了一种依据集成测试阶段对完整测试用例集的测试结果数据,通过绘制函数运行热力图的可视化方式,进而确定集成测试阶段回归测试时各测试用例的优先级的方法,可提高回归测试阶段的测试效率。


技术实现要素:

7.一种基于函数运行热力图的回归测试用例优先级确定方法,包括以下步骤:(1)在集成阶段,针对完整测试用例集中的每个测试用例,记录总的运行时间、每个被调函数的运行次数和时间,计算每个函数的真实运行时间;(2)将每个测试用例调用的函数的运行次数作为热力值,得到完整测试用例集的函数运行热力图;汇总得到函数运行汇总热力图;(3)根据函数运行汇总热力图中每个函数的热力值,对全部函数进行排序;由于这里的热力值代表了该函数在完整测试用例集中的运行次数,运行次数越多,表明该函数越受关注,说明该函数是热点函数,我们也应当优先选择与该函数相关的测试用例;(4)取热力值最高的函数,进而得到调用该函数的测试用例子集;(5)在该函数的测试用例子集中,选取运行时间最短的测试用例,作为优先级第一的测试用例;同时在函数运行热力图中,将该函数所在行的全部热力值清0;由于资源和时间有限,在确定热点函数后,我们应当优先选择运行时间最短的测试用例;(6)重复步骤(5),选择第二个以及后续的测试用例,直到函数运行热力图中全部
热力值清0;其中,在对函数的测试用例子集选择时,要剔除已经选出的测试用例;若出现无法选择的情况,则按简单原则如顺序选择;此时得到的测试用例排序,可以作为其后续回归测试用例优先级的顺序。
8.所述计算每个函数的真实运行时间,包括:(1)在计算每个函数的真实运行时间的时候,调用其他函数的运行时间不包括在内;(2)根据调用关系,将本函数的运行时间,扣除调用其他函数的运行时间后,得到该函数的真实运行时间;(3)对于总的运行时间很短的函数,可能存在无法得到该函数准确运行时间的情况,此时可将其设置为固定的最小值;(4)对于需要反复调用且每次执行时间又比较短的函数,可以通过该函数调用处插桩的方法,来统计调用该函数的运行总时间;一个测试用例中所有被调用函数的运行时间之和,等于整个测试用例的运行时间。
9.所述函数运行热力图,具有如下特征:(1)将软件中的全部函数编号作为纵坐标y值,将测试用例编号作为横坐标x值,在平面直角坐标系中绘制单位正方格子;xy相交处的格子的值,就是函数运行热力图中的热力值、热度值或热值;(2)将测试用例运行时所调用的函数的运行次数,作为热力图中该测试用例与对应函数的热力值,称为函数运行热力图;将调用时间作为热力值,称为函数运行时间热力图;(3)在对应的格子处填上热力值,用表格的形式绘制平面热力图;(4)可选地,将对应格子处的数值用颜色表示,热力值越高颜色越深,称为二维热力图;(5)可选地,将对应格子处的数值用与xy正交的z坐标值表示,并绘制成三维图形,称为三维热力图。
10.所述函数运行热力图,还具有如下特征:(1)一个测试用例集的运行结果,对应着整个函数热力图;其中一个测试用例的运行结果,对应着函数运行热力图中的一列;(2)多个测试用例合并运行的效果,等价于函数运行热力图中对应的多列热力值直接相加。
11.所述函数运行汇总热力图,具有如下特征:(1)一个测试用例集运行完成后绘制的函数运行热力图,可以全部按对应列相加得到函数运行汇总热力图;(2)函数运行汇总热力图中,每个函数的热力值即为该测试用例集中该函数的调用次数或者执行时间;热力值为0表示该函数未被该测试用例集覆盖;(3)平面热力图中,函数运行汇总热力图退化为一列,实质是所有函数调用次数的总计,因此可以在函数运行热力图中最右侧增加一个总计栏表示。
12.一种基于函数运行时间热力图的回归测试用例优先级确定方法,包括以下步骤:
(1)在集成阶段,针对完整测试用例集中的每个测试用例,记录总的运行时间、每个被调函数的运行次数和时间,计算每个函数的真实运行时间;(2)将每个测试用例调用的函数的真实运行时间作为热力值,得到完整测试用例集的函数运行时间热力图;汇总得到函数运行时间汇总热力图;这里的函数运行时间热力图,除热力值的表示不一样外,其余与前面所述的函数运行热力图一致;(3)根据函数运行汇总热力图中每个函数的热力值,对全部函数进行排序;由于这里的热力值代表了该函数在完整测试用例集中的运行时间,运行时间越长,表明该函数越受关注,可以认为该函数是热点函数,我们也应当优先选择与该函数相关的测试用例;(4)取热力值最高的函数,进而得到调用该函数的测试用例子集;(5)在该函数的测试用例子集中,选取运行时间最短的测试用例,作为第一优先级的测试用例;同时在函数运行时间热力图中,将该函数所在行的全部热力值清0;由于资源和时间有限,在确定热点函数后,我们应当优先选择运行时间最短的测试用例;(6)重复步骤(5),选择第二个以及后续的测试用例,直到函数运行时间热力图中全部热力值均清0;此时得到的测试用例排序,可以作为其后续回归测试优先级的顺序。
13.本方法针对集成测试中的回归测试用例优先级选择问题,采用绘制热力图的方式,实现了函数运行情况的可视化表示;在基于函数运行热力图和函数运行时间热力图的辅助下,可以快速确定集成测试阶段中的热点函数,进而在调用该函数的测试用例集中,优先选择运行时间最短的测试用例,从而得到后续回归测试阶段测试用例的优先级顺序;该方法具有容易理解,可操作性强的优点,同时在实际应用中有较好的应用效果。
附图说明
14.图1为本发明实施例一的流程示意图。
15.图2为本发明实施例一中测试用例运行情况统计图。
16.图3为本发明实施例一中函数运行热力图及汇总热力图。
17.图4为本发明实施例一中三维函数运行热力图。
18.图5为本发明实施例一中三维函数运行汇总热力图。
19.图6~图10为实施例一选择测试用例优先级时的函数运行热力图。
20.图11~图16为实施例二选择测试用例优先级时的函数运行时间热力图。
具体实施方式
21.为了更加清楚地展示本发明的目的和技术方案,下面将结合具体的实施过程和附图,对本发明的具体实施方式和参数进行更加详细的描述。
22.实施例一,一种基于函数运行热力图的回归测试用例优先级确定方法,如图1所示,包括以下步骤。
23.步骤1,在集成阶段,针对完整测试用例集中的每个测试用例,记录总的运行时间、每个被调函数的运行次数和时间,计算每个函数的真实运行时间。
24.设待测软件包括5个函数,分别为f1~f5;其完整测试用例集包含6个测试用例,分别为t1~t6;6个测试用例运行的情况如图2所示,时间单位为毫秒;对于运行时间很短无法统计的函数,将其运行时间设为固定最小值1毫秒。
25.步骤2,将每个测试用例调用的函数的运行次数作为热力值,得到完整测试用例集的函数运行次数热力图,汇总得到函数运行次数汇总热力图。
26.按平面热力图绘制的函数运行次数热力图如图3所示(不含最右侧列),最右侧列为汇总热力图;按三维热力图绘制的函数运行热力图如图4所示,函数运行汇总热力图如图5所示。
27.步骤3,根据函数运行汇总热力图中每个函数的热力值,对全部函数进行排序。
28.排序后的数据如图6所示。
29.步骤4,取热力值最高的函数,进而得到调用该函数的测试用例子集。
30.如图6所示,热力值最高的函数f3,其测试用例子集为{t2,t3,t4,t5,t6}。
31.步骤5,在该函数的测试用例子集中,选取运行时间最短的测试用例,作为第一个测试用例,同时在函数运行热力图中,将该函数的所有热力值清0。
32.从图2可以看出,在f3函数的测试用例子集{t2,t3,t4,t5,t6}中,运行时间最短的为t2,因而优先级最高的为t2;我们将函数运行热力图中f3函数所在行的热力值清0,此时的热力图如图7所示。
33.重复步骤5,选择第二个以及后续的测试用例,直到热力图全部清0;其中,在对函数的测试用例子集选择时,要剔除已经选出的测试用例;若出现无法选择的情况,则按简单原则如顺序选择;此时得到的测试用例排序,可以作为其后续回归测试优先级的顺序。
34.从图7可以看出,此时热力值最高的函数为f2,其测试用例子集为{t1,t4,t6},从图2可以看出,该子集中运行时间最短的为t1,因而此时优先级最高的为t1;我们将函数运行热力图中f2函数所在行的热力值清0,此时的热力图如图8所示。
35.从图8可以看出,此时热力值最高的是函数是f1,选择测试用例t3,将f1函数所在行的热力值清0;此时的热力图如图9所示。
36.从图9可以看出,此时热力值最高的是函数是f4,选择测试用例t5;将f4函数所在行的热力值清0;此时的热力图如图10所示。
37.从图10可以看出,此时热力值最高的是函数是f5,但是已经没有可用的测试用例子集可以选择,此时剩下的测试用例为t4和t6,我们按简单原则顺序选择;这样得到了全部测试用例的优先级排序:t2,t1,t3,t5,t4,t6。
38.实施例二,一种基于函数运行时间热力图的回归测试用例优先级确定方法,包括以下步骤。
39.步骤1,在集成阶段,针对完整测试用例集中的每个测试用例,记录总的运行时间、每个被调函数的运行次数和时间,计算每个函数的真实运行时间。
40.步骤2,将每个测试用例调用的函数的真实运行时间作为热力值,得到完整测试用例集的函数运行时间热力图;汇总得到函数运行时间汇总热力图。
41.函数运行时间热力图除了热力值不同外,其余与函数运行热力图一致;实际上这里的函数运行热力图,也可以称为函数运行次数热力图;林外我们也可以将这两种图统称为函数运行热力图。
42.设待测软件的情况同实施例一, 6个测试用例运行的情况如图2所示,时间单位为毫秒;按平面热力图绘制的函数运行时间热力图如图11所示(不含最右侧列),最右侧列为汇总热力图。
43.步骤3,根据函数运行时间汇总热力图中每个函数的热力值,对全部函数进行排序。
44.步骤4,取热力值最高的函数,进而得到调用该函数的测试用例子集。
45.步骤5,在该函数的测试用例子集中,选取运行时间最短的测试用例,作为第一个测试用例,同时在完整测试用例集的函数运行此时热力图中,将该函数的所有热力值清0。
46.如图11所示,此时热力值最高的函数f2,其测试用例子集为{t1, t4,t6};其中运行时间最短的是t1,选取测试用例t1;同时在函数运行时间热力图中,将f2函数所在行的全部热力值清0,如图12所示。
47.重复步骤5,选择第二个以及后续的测试用例,直到函数运行时间热力图中全部热力值均清0;此时得到的测试用例排序,可以作为其后续回归测试优先级的顺序。
48.如图12所示,选择f5函数,以及测试用例t5,将f5函数所在行的热力值清0;此时的热力图如图13所示。
49.如图13所示,选择f3函数,以及测试用例t2,将f3函数所在行的热力值清0,此时的热力图如图14所示。
50.如图14所示,选择f1函数,以及测试用例t3,将f1函数所在行的热力值清0,此时的热力图如图15所示。
51.如图15所示,选择f4函数,以及测试用例t4,将f4函数所在行的热力值清0,如图16所示。
52.此时剩下测试用例t6,我们得到了全部测试用例的优先级排序:t1,t5,t2,t3,t4,t6。
53.注意针对回归测试用例优先级的选择问题,不同算法有不同的结果,如实施例一和实施例二就不一样,实施例一优先考虑函数运行次数,实施例二优先考虑函数运行时间;因而,在实际应用中,需要根据具体问题具体分析,必要的时候,对上面的结果进行人工比选,从而得到适用的测试用例排序结果。
54.最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其进行限制;尽管前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,通过对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,或者修改各个步骤的顺序,而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;本发明中各种阈值及范围的取值,也会因为具体情况不同而有所改变。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1