JExample:利用测试间依赖关系提升缺陷定位能力
1. 引言
在软件开发中,一个设计良好的测试套件应具备高覆盖率,以便更有效地识别缺陷。然而,当基础代码的某部分发生更改时,一个小缺陷可能引发多米诺骨牌效应,导致多个单元测试失败。这给代码修改者带来了难题,他们不得不浏览所有失败的单元测试来推断单一的根本原因,尤其是当他们不熟悉失败的测试代码时,这项任务会变得十分困难。
单元测试之间的依赖关系是导致这种多米诺骨牌效应的原因,并且引发了广泛的争议。虽然普遍认为避免测试间的依赖关系有助于提升缺陷定位能力,但经验表明,即使在设计良好的测试套件中,潜在的依赖关系仍然存在。这意味着,尽管有相关准则,测试间的依赖关系是不可避免的。
为了改善这种情况,有人提出通过明确测试之间的依赖关系来提高缺陷定位能力。例如,开发者可以声明一个 testRemove 测试依赖于 testAdd 测试的成功结果。基于这些依赖关系,测试框架可以自动确定合适的测试运行顺序,并跳过依赖于其他失败测试的测试,从而避免测试失败的多米诺骨牌效应。
2. 相关工作
许多研究人员一直在探索优先排序测试用例、选择性执行回归测试或缩减测试套件的技术:
- Kung等人 :讨论了一种在面向对象程序更改后具有成本效益的选择性回归测试方法,通过确定受影响的类集并对类的测试进行优先排序,以最小化测试桩的构建。
- Wong等人 :先应用基于修改的选择技术,然后进行测试集最小化(保留覆盖准则的最小选择)和优先排序(增加额外覆盖的成本)。
超级会员免费看
订阅专栏 解锁全文
999

被折叠的 条评论
为什么被折叠?



