关闭

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

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

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

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

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

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

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

性能特性
一个检查起来会很有益处的部分是性能特性,而不是性能本身。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:52463次
    • 积分:808
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:40篇
    • 译文:0篇
    • 评论:20条
    最新评论
    风花雪月
    汇编类