[转]单元测试应该测试什么?——Right-BICEP

Right——结果是否正确?
B——是否所有的边界条件都是正确的?
I——能查一下反响关联吗?
C——能用其它手段交叉检查一下吗?
E——你是否可以强制错误条件发生?
P——是否满足性能要求?

结果是否正确
一个原则是:对于验证被测方法是否正确的这件事情,如果某些做法能够使它变得更架容易,那么就采纳它吧。

边界条件CORRECT
一致性(Conformance)——值是否符合预期的格式?
有序性(Ordering)——一组值是该有序的,还是该无序的?
区间性(Range)——值是否在一个合理的最大值合最小值的范围之内?
引用、耦合性(Reference)——代码是否引用了一些不受代码本身直接控制的外部因素?
基数性(Existence)——是否恰好有足够的值?
时间性,绝对的或者相当的(Time)——所有事情是否都是按顺序发生的?是否在正确的时间?是否及时?

检查反向关联
对于一些方法,我们可以使用反向的逻辑关系来验证它们。要注意的是,当你同时编写了原方法和它的方向测试时,一些bug可能会被在两个函数中都出现的错误所掩盖。在可能的情况下,应该使用不同的原理来编写反向测试。

使用其他手段来实现交叉检查
通常解决一个问题会有多种手段,如果你选择了其中一个方法,那么就可以用其它的方法来检验它。另一种方法就是:使用类本身不同组成部分的数据,并且确信它们能“合起来”。

强制产生错误条件
应当能够通过强制引发错误,来测试你的代码是如何处理所有这些真实世界中的问题的。
下面是一些我们能想到的环境方面的因素:
内存耗光
磁盘用满
时钟出问题
网络不可用或者有问题
系统过载
受限的调色板
显示分辨率过高或者过低

性能特性
一个检查起来会很有益处的部分是性能特性,而不是性能本身。
阅读更多
上一篇电脑为什么自动重启或者电脑自动关机是什么原因?
下一篇[转]软件测试和VSTS 测试工具
想对作者说点什么? 我来说一句

单元测试之道java版

2013年09月04日 5.24MB 下载

没有更多推荐了,返回首页

关闭
关闭