单元测试实践的主要问题与解决(8)
2013-01-01 15:38
267 查看
单元测试实践的主要问题与解决(8)
分类: 单元测试实践的主要问题与解决2012-01-1616:44 2598人阅读 评论(5) 收藏 举报
(承上篇)
3.3 如何解决“做不好”
现在来看做不好的问题。做不好的主要原因,是高标准的测试覆盖难以实现。
为什么要关注测试覆盖呢?因为未覆盖的单位,通常对应未测试的数据分类,也就是说,可以用覆盖率来检查测试的完整性,衡量测试效果。
应该在完成功能测试的基础上,统计覆盖率,找出遗漏用例来完成白盒覆盖,而不是功能测试做一遍,白盒覆盖又做一遍。
下面,我用一个案例来演示讲解覆盖。
首先是覆盖率统计,工具可以支持六种覆盖:语句、条件、分支、C/DC(判定条件覆盖)、路径覆盖、MC/DC(修正判定条件覆盖)。
![](http://hi.csdn.net/attachment/201201/16/0_1326702362vvE2.gif)
哪些单位没覆盖呢?这个红色且带淡红色背景的,是未覆盖语句;这个T是未覆盖的条件真值;这个F是未覆盖的条件假值;这个M是未覆盖的MC/DC。
![](http://hi.csdn.net/attachment/201201/16/0_1326702449yI0o.gif)
淡红色背景的分支是未覆盖分支,淡绿色背景的是已覆盖分支。路径是从入口到出口的路线,这条用绿色画出的是已覆盖的路径。
![](http://hi.csdn.net/attachment/201201/16/0_1326702585d92z.gif)
这条用红色画出的是未覆盖路径。
![](http://hi.csdn.net/attachment/201201/16/0_1326702711j9OB.gif)
如何完成覆盖呢?点击未覆盖的单位,比如这个T,右键菜单选择“用例设计”。
![](http://hi.csdn.net/attachment/201201/16/0_1326702787L6OO.gif)
工具会自动计算出一个近似用例,所谓近似用例,就是经过最小修改就可以覆盖选中单位的用例。
如何修改呢?工具提供了修改提示,按这个蓝色粗体的提示修改就可以了。这里的提示是A >1,把它改为大于1的数,如2。在实际工作中,输出也要根据功能进行修改,这里忽略。
![](http://hi.csdn.net/attachment/201201/16/0_1326702874zyaB.gif)
执行测试后,可以看到刚才那个T已经覆盖了。点击F,打开用例设计器。
![](http://hi.csdn.net/attachment/201201/16/0_1326702946E28x.gif)
这里的提示是B不等于0,把B改为不等于0,比如1。
![](http://hi.csdn.net/attachment/201201/16/0_1326702980s5uU.gif)
现在来覆盖这个T。
![](http://hi.csdn.net/attachment/201201/16/0_1326703017hBJi.gif)
把X改为大于1的数,如2。
![](http://hi.csdn.net/attachment/201201/16/0_1326703055Gta8.gif)
现在,代码这边已经完成全部覆盖了,看一下覆盖率,还有一条路径未覆盖。
![](http://hi.csdn.net/attachment/201201/16/0_1326703113G1A9.gif)
在这里选择未覆盖的路径,打开用列设计器。
![](http://hi.csdn.net/attachment/201201/16/0_1326703148WUZ4.gif)
提示是:A不等于2,X小于等于1,X本来就小于1,不用改它,把A改为不等于2的数就行了,如3。
![](http://hi.csdn.net/attachment/201201/16/0_1326703202QC2V.gif)
现在,完成了全部覆盖。
![](http://hi.csdn.net/attachment/201201/16/0_1326703246K9D3.gif)
总结
我们用可视化来解决“不愿做”,用自动化来解决“没时间”,这两者结合起来,就是ETDD开发模式。
造成做不了的主要原因是代码的耦合关系形成的内部输入问题,我们用底层模拟来解决内部输入,真正可以做到“无论别人怎么样,我总是对的”。
在覆盖方面,我们利用工具不仅统计覆盖率,清晰标示未覆盖单位,而且,用例设计器可以帮助我们快速找出遗漏用例,实现高覆盖,解决做不好的问题。
![](http://hi.csdn.net/attachment/201201/16/0_1326703310KyLX.gif)
---------------------------------------------------------------------------
(全文完。感谢广大网友的关注和支持!!)
相关文章推荐
- 单元测试实践的主要问题与解决(6)
- 单元测试实践的主要问题与解决(4)
- 单元测试实践的主要问题与解决(7)
- 单元测试实践的主要问题与解决(4)
- 单元测试实践的主要问题与解决(8)
- 单元测试实践的主要问题与解决
- 单元测试实践的主要问题与解决(2)
- 单元测试实践的主要问题与解决(7)
- 单元测试实践的主要问题与解决(2)
- 单元测试实践的主要问题与解决(7)
- 单元测试实践的主要问题与解决(1)
- 单元测试实践的主要问题与解决(1)
- 单元测试实践的主要问题与解决(2)
- 单元测试实践的主要问题与解决(1)
- 单元测试实践的主要问题与解决(8)
- 单元测试实践的主要问题与解决(3)
- 单元测试实践的主要问题与解决(8)
- 单元测试实践的主要问题与解决(4)
- 单元测试实践的主要问题与解决
- 单元测试实践的主要问题与解决(5)