摘要
本文是一篇综述,总结了27篇paper中36个empirical studies,21个实验和15个case studies。
评价了共28个RTS技术
1. 绪论
回归测试用例选择需要权衡重跑测试的开销和遗漏变更导致的风险
已有的研究主要包括基于代码变更和规范变更的测试用例选择方法,评价选择技术,变更影响分析和不同应用中的回归测试(数据库应用,GUI应用),测试自动化和测试流程增强
回归测试分为四个领域:
- 测试用例选择
- 修改识别
- 测试执行
- 测试套件维护
本文主要集中于测试用例选择技术
2. 研究方法
2.1 研究问题
- 哪些回归测试用例选择技术被实证评估了
- 这些技术如何分类
- 使用实证证据能否得出这些技术间的显著差异
- 能否基于实证证据证明技术A优于技术B
2.2 研究对象(具体技术的论文)信息
从7个数据库中找
2.3 研究指标
关键字包括regression
和test
或testing
和software
,发文时间段为1969-2006。最后找到2923篇论文。
2.4 研究对象选择
分三阶段筛选,最后挑选出符合研究特征的27篇paper
2.5 数据提取和生成
2.6 实证结果的定性分析
不同研究的结果使用为4个主要指标:
- 测试执行时间的约减
- 测试用例选择的开销
- 总开销
- bug检测能力
2.7 效度威胁
3. 结果
3.1 已有研究
3.2 已有研究分析
3.3 实证评价技术(RQ1)
3.4 技术分类(RQ2)
- 根据输入的类型分类:
- 源代码文本
- 虚拟机上生成的中间代码
- 机器码
- 根据分析语言的类型分类:
- Java
- c++
- 根据编程范式分类:
- 面向过程
- 面向对象
- 独立于特定语言
- 根据依赖关系粒度分类:
- 语句级别
- 方法/函数级别
- 类/模块级别
- 组件级别
最常见的分类方法是测试用例选择技术是safe
还是unsafe
,safe
的技术能覆盖到所有能发现缺陷的测试用例。RetestAll是一种最简单的safe
技术。Random selection
是一种unsafe
的技术。
3.5 实证结果分析(RQ3)
3.5.2 评价指标
- 开销约减
- 测试用例约减
- 测试执行时间约减
- 测试用例选择时间
- 总时间(end-to-end time)
- 精度
其中测试用例约减这个指标用的最为频繁,为76%。
- 错误检测效果
- 测试用例相关的检测效果
- 错误相关的检测效果
错误检测效果包括:
- 能检测到错误的测试用例能检测出多少(对应上面的1)
- 选择的测试用例能检测出多少已知的错误
- Baseline选择
- Retest all
只有30%的研究同时评估了开销约减和错误检测能力。
3.6 技术对比(RQ4)
4. 讨论
5. 总结和未来工作
对于研究问题进行回答:
RQ1:本文评估了28个回归测试用例选择技术
RO2:这些技术可以根据以下标准分类:应用软件的类型和语言的类型;有关方法的细节,比如输入要求,选择的方法,变更的粒度等;还有选择方法是safe
还是unsafe
RQ3:这些技术间实证结论各不相同,有时候是相反的
RQ4:hence there is no basis for selecting one superior technique.(不知怎么理解)技术选择依赖于特定的场景
【未来的工作】
- 专注于更一般化的回归测试概念而不是特定技术的变体
- 鼓励研究在不同上下文中系统化地复现
- 确定回归测试用例选择的实证评估应该如何报告