1.2 技术方案的经济因素分析 在软件的开发过程中,大规模的软件所需的测试用例的数量也不容小觑,为了充分保证软件的质量,让软件可以更好地投入市
1.2 技术方案的经济因素分析
在软件的开发过程中,大规模的软件所需的测试用例的数量也不容小觑,为了充分保证软件的质量,让软件可以更好地投入市场,软件的测试工作面临空前巨大的挑战。回归测试作为软件投入市场质量保障的重要组成部分,对采取什么高效低成本的方法在软件开发中减少回归测试的花销问题的研究既是一个热点,也是难点。
目前对于减少回归测试成本的研究主要集中在两方面,测试用例的缩减技术和测试用例的优先级排序技术(test case prioritization),也就是TCP技术,而针对TCP技术方面,考虑到数据规模的处理量,近几年有不少研究者提出与人工智能算法相结合, 基本人工智能算法以及多种人工智能算法组合优化的算法等算法,将属于人工智能算法应用于测试用例优先级排序技术时,测试用例的全排列是问题的解空间,设定遗传环境为评价测试用例排序的评估标准,选定合适的遗传参数,一般情况下,在解空间内通过随机选择,组合交叉,粒子群变异等遗传操作不断进化就可以在较短的时间内找到满意的最优排序结果。
显然,将人工智能算法用于TCP技术确实为测试用例优先级排序问题带来了新天地,但是,目前的研究主要是集中在单一的度量准则下寻找最优排序,并且仅仅是提出算法模式并没有实际的代码实现算法,这显然是软件测试行业的缺憾之一。
2 研究背景
2.1 测试用例排序的研究邻域
所谓测试用例优先级排序,官方定义:
定义:给定测试用例集T,T中的测试用例所有可能排序的集合PT和从PT到实数及的映射f,测试用例排序集是为了找出PT的一个子集T1,使得对于PT的任意一个子集T11(T11不等于T1),恒有|f(T1)>=f(T11)|成立。[1]
其中,f即排列过程中的度量函数,测试用例排序对应的f的值越大,表示当前排序的质量越好。
一般来讲,f可以代表测试用例的错误检测率,测试用例的覆盖率,包括代码覆盖率,块覆盖率,路径覆盖率,软件需求的覆盖率,功能模块的覆盖率等,也可以是检测高风险的软件缺陷的速度
2.1.1 普通的TCP技术
测试用例排序的一般性算法
1.总计排序算法
确定一个评价标准,对每个测试用例按评价标准计算值,将测试用例按照计算的结果进行排序,若遇到评价值相等的情况,则按另一种评价标准对其进一步排序,执行测试用例时优先执行评价标准值较大的测试用例,直到所有测试用例被执行结束,显然,总计排序算法没有考虑动态的测试用例执行过程中各个测试用例的评价标准值的变化,而是在测试用例执行前就已经给定了其优先级,存在一定的缺陷
2.附加排序算法
首先按评价标准值对所有的测试用例评估,每次都执行评估值最高的测试用例,并且每执行完一个测试用例,则对剩下的测试用例在未覆盖的软件缺陷范围内更新评估值,直到所有的测试用例都被执行结束,此种排序算法相当于在动态中不断更新软件缺陷的检测率,十分贴近实际按序执行测试用例时的动态过程,具有较好的成效。
当前的研究当中有基于函数调用路径的回归测试用例选择排序方法研究,基于测试用例设计信息的回归测试优先级算法。
显然普通的TCP技术基本上都是基于以上两种排序算法思想,按照各类评价标准给测试用例排序,然后半手工的评价每种可能的测试用例排序,选出最佳的排序。比如按照测试用例对函数路径的覆盖率大小来评价测试用例在回归测试时的执行顺序时。首先计算所有可能排序执行时所能达到的函数路径覆盖率,将测试用例按照覆盖率值大小排序,逐个取出最大值得测试用例,直到所有测试用例都被选中,以此确定执行要优先级。