26|见微知著:单元测试度量避坑
失效的单元测试覆盖率
- 深入了解
- 翻译
- 解释
- 总结
文章标题为“见微知著:单元测试度量避坑”,主要探讨了单元测试的度量和提升方法。作者首先指出单纯依赖代码覆盖率来衡量单元测试效果存在局限性,举例说明了即使覆盖率达到100%,仍可能存在Bug泄漏的情况。接着,文章介绍了如何度量单元测试的质量,提出了单元测试Bug泄漏率的概念,并探讨了其计算方法和实际应用。最后,作者提出了变异测试作为一种新的方法,用以评估单元测试的质量。通过本文的阐述,读者可以了解到单纯依赖代码覆盖率来衡量单元测试效果的局限性,以及如何通过新的方法来度量和提升单元测试的质量。 文章深入探讨了变异测试的原理和实现,介绍了变异测试覆盖率的概念以及如何借助测试框架实现自动化。通过具体例子演示了如何自动地生成变异,运行测试,并得出变异测试覆盖率的整个过程。变异测试覆盖率能够度量出测试案例设计的质量,包括遗漏的测试案例和冗余重复的测试案例,从而满足了对单元测试质量度量设计的要求。最后,文章留下了两道思考题,引发读者对变异测试思路的拓展和对代码迭代的理解。 总之,本文通过深入探讨单元测试度量和提升方法,特别是变异测试的原理和实现,为读者提供了一种新的方法来评估单元测试的质量,帮助读者重新审视单元测试的有效性,并为推动单元测试在组织中落地提供了思路和方法。
《自动化测试高手课》,新⼈⾸单¥59
全部留言(7)
- 最新
- 精选
- 余明栋乘负1和除负1要怎么捕获呢,从数学上讲是等价的,如果不是1还可能用倒数产生精度差异,但是1的话没想到什么思路,大神有什么方向提点吗
作者回复: 如果代码存在无法杀死的变异,可以考虑优化代码啦。😄
2022-06-2124 - ⛄变异测试由于模块规模大,导致编译出的变异体过多,并且测试案例数量数量大,造成进行变异测试落地非常困难,请教一下有什么可行的方法进行合理落地吗
作者回复: 非常好的问题。 第一,变异测试不适宜用于全部代码。你需要选出一部分业务逻辑集中的代码。比如数据计算,转换,或者算法等。 第二,变异测试能不能发挥大作用,关键在于变异的类型。你可以查看PItest产生的变异类型,是不是和业务逻辑能匹配。如果不匹配,你可能需要自开发一些适合自己场景的变异,这时你可以分析已存的重点Bug,思考他们能不能在单元测试阶段捕捉到,如果能捕捉,应该用什么变异。
2022-06-094 - 朝如青丝暮成雪1. 变异测试的思路是否仅限于单元测试?可以用在其它测试场景中么? 不仅可以应用于单元测试,UI 自动化或平时手动测试都可以用到。 2.“每一次代码迭代,就是一次变异”,这句话你怎么理解? 每次代码的改动,都是对单元测试代码的考验,能不能真正做到拦截bug,这些都需要写单元测试的时候认真思考。
作者回复: 说得非常好!谢谢分享。关于”每一次代码迭代,就是一次变异“,软件的迭代就像人的诞生,成长,衰老一样,每个人每天都在发生变化,这些变化都可以叫做变异,只不过有些变异是我们预期的,有些变异是不被期望发生的。我们做测试的目的,是要捕捉那些“不预期”的变异。
2022-05-202 - 朝如青丝暮成雪单元测试 Bug 泄漏率 = 单元测试泄漏的 Bug/ (单元测试泄漏的 Bug+ 单元测试捕捉到的 Bug) 这个公式应该是这样的吧😂
作者回复: 是的。就是“泄漏”两个字难定义和落地 :)
2022-05-201 - juney-jun1.关于老师说的乘以-1和除-1怎么捕获,只能从代码层面优化,调整一下-1的位置 即可: public service{ public static int add(int a, int b){ if(a <= 2){ return -1*(a+b); }else{ return a + b; } } }2022-11-14归属地:上海1
- ifelse学习打卡2024-03-01归属地:浙江
- Geek_eb7eec谢谢老师的分享!以前没有用过变异测试,又一次扩展了思路!我有两个问题想请教一下老师: 1> 变异测试和negative testing的区别在哪儿? 它们之间不是隶属关系,但是会有重叠,对吗? 是不是可以认为在变异测试中会覆盖到一些negative的测试案例? 2> 如果需要单元测试的是一个权限控制模块,还可以使用变异测试吗?还是设计出合适的positive cases和negative cases就可以了呢? 期待老师的指教!2022-12-06归属地:美国