收稿日期:20150730;修回日期:20151019 基金项目:国家自然科学基金面上资助项目(61370129);北京市属高等学校创新团队建
设与教师职业发展计划项目(IDHT20130519);北京市学科与研究生教育基金资助项目(PXM2015_014224_000018)
作者简介:郑锦勤(1990),女,河北邢台人,硕士研究生,主要研究方向为软件开发与测试技术(pojianchengdie_1@163.com);牟永敏(1961),
男,教授,博士,主要研究方向为软件开发与测试技术.
基于函数调用路径的回归测试用例
选择排序方法研究
郑锦勤,牟永敏
(北京信息科技大学 计算机开放系统实验室,北京 100101)
摘 要:针对在回归测试过程中,因为不断修复软件中存在的缺陷所造成的测试工作量大、测试效率低等问题,
将测试用例选择与优先级排序技术相结合,以面向函数调用的路径覆盖生成方法为基础,提出了一种面向函数
调用路径(
functionscallingpath,FCP)的测试用例选择与排序方法。根据函数调用关系图,对程序中被修改函数
与其他函数的关联性进行分析,从初始测试用例集中选择测试用例,形成回归测试用例集;然后对这些测试用例
进行优先级排序,并动态地调整优先级排序结果;最后对优先级排序结果进行再次选择,确定最小的回归测试用
例集。实验结果表明,测试用例选择与排序方法对优化回归测试用例是有效的,大大减少了回归测试用例数量,
降低了回归测试成本。
关键词:回归测试;测试用例选择;优先级排序;函数调用路径;关联性
中图分类号:TP31153 文献标志码:A 文章编号:10013695(2016)07206305
doi:10.3969/j.issn.10013695.2016.07.031
Regressiontestcaseselectionandprioritizationbasedonfunctionscallingpath
ZhengJinqin,MuYongmin
(OpenComputerSystemLaboratory,BeijingInformationScience&TechnologyUniversity,Beijing100101,China)
Abstract:Inordertoreducetestworkloadandimprovetestefficiencyintheregressiontest,thispapercombinedtestcasese
lectionandprioritization
,proposedamethodofregressiontestcaseselectionandprioritizationbasedonfunctioncallingpaths
(abbreviation:FCP).First,basedonthefunctioncallgraph,itanalyzedtherelevancebetweenmodifiedfunctionsandothers,
andchosetestcases.Second,itprioritizedtestcasesanddynamicallyadjustedprioritizationresult.Finally,itchosetestcases
againanddeterminedtheminimumsetofregressiontestcases.Theexperimentsshowthattheproposedmethodofregressiontest
caseselectionandprioritizationiseffective
,whichcanreducethenumberoftestcasesandthecostofregressiontestgreatly.
Keywords:regressiontest;testcaseselection;prioritization;functioncallingpath;relevance
!
引言
回归测试作为软件测试的一种重要方法,贯穿整个软件周
期,用于检验软件功能的正确性与完整性
[1]
,可以有效地保证
程序代码的修改没有对受影响部分和潜在受影响部分产生副
作用。但是据相关统计数据表明,回归测试开销一般占软件系
统测试预算的
80%以上
[2,3]
。为了降低回归测试的成本,国内
外的研究人员对回归测试用例的优化展开了深入研究。
回归测试用例选择技术首先通过静态分析找出程序代码
中发生变化的部分;然后选择出覆盖所有程序变化部分的测试
用例。1990年,Leung等人
[4]
提出了基于防火墙的回归测试用
例选择算法,强调重用以前的测试用例和重新测试程序中只被
修改的部分,从一定程度上减少了测试成本;1994年,Chen等
人
[5]
提出了基于源代码修改的测试用例选择方法,根据测试
用例的执行信息和代码的改变信息,使用 TestTube系统仅选
择可以覆盖源代码被修改部分的测试用例;Vokolos等人
[6]
在
1997年提出了一种基于 UNIX的名为 Pythia的回归测试用例
选择工具,
Pythia的回归测试用例选择技术是基于比较源程序
的两个版本之间的差异实现的,Pythia可以分析使用 C语言编
写的软件系统;2008年,魏冬梅等人
[7]
提出了一种基于切片技
术的 GUI回归测试用例选择方法,该方法通过分析基于 GUI
的面向对象软件系统中界面元素与类方法之间的依赖关系,界
定系统修改波及的影响,再根据切片技术计算出相应的程序切
片,从而进一步地设计或选择有效的测试用例;王克朝等人
[8]
于 2014年提出的面向有效错误定位的测试用例优选方法,将
执行路径与失效执行路径相似的成功测试用例赋予较高的优
先级,然后选择能够最大区分失效执行语句的成功测试用例集
合,并在此基础上建立测试用例优选模型。
回归测试用例排序技术按照特定的排序准则对回归测试
用例进行排序。在满足约束的前提下,回归测试用例按照权重
由高到低依次执行。Wong等人
[9]
在 1997年针对测试用例优
先级排序问题进行了研究,首先利用测试用例选择方法删除冗
余的测试用例,减少测试用例集中测试用例的个数,再根据测
试用例的覆盖能力对其余的测试用例进行优先级排序,从而减
第 33卷第 7期
2016年 7月
计 算 机 应 用 研 究
ApplicationResearchofComputers
Vol33No7
Jul.2016