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

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

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

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

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

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

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

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

相关文章推荐

单元测试中 Right-BICEP 和 CORRECT

在单元测试中,有6个总结出的值得测试的方面,这6个方面统称为 Right-BICEP,通过这6个方面的指导,可以较完全的测试出代码中的bug。本文就是简单的介绍 Right-BICEP 到底指的哪6个...

带你玩转Visual Studio——单元测试

上一篇文章带你玩转Visual Studio——性能分析与优化讲了找出性能瓶颈和性能优化相关的技能,在大型企业项目的开发中,性能是固然重要的,而另一个过程——测试也是必不可少的。测试有很多的各类:功能...

代码整洁之道精华——第九章 单元测试

阅读本文有两种原因:第一,你是个程序员;第二,你想成为更好的程序员。你如果想成为更好的程序员,那就请细细品味文章内容,它绝不会让你失望。

Python单元测试——深入理解unittest

单元测试的重要性就不多说了,可恶的是python中有太多的单元测试框架和工具,什么unittest, testtools, subunit, coverage, testrepository, nos...

基于Predictive Parsing的ABNF语法分析器(四)——准备单元测试代码

单元测试的重要性是不言而喻的,对于ABNF的例子来说,通过单元测试除了可以发现程序的BUG之外,还可以发现预测解析器能够支持哪些情况下的文法,以及那些情况下解析器无能为力(所谓FEATURE,嘿嘿)。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)