读书笔记_程序员修炼三部曲之二 单元测试之道 C#版

来源:互联网 发布:qq老密码数据库 编辑:程序博客网 时间:2024/06/16 16:33
 

测试的内容

Right-BICEP

Right——结果是否正确

B——是否所有的边界条件都是正确的

I——能查一下反向关联吗

C——能用其他手段交叉检查一下结果吗

E——你是否可以强制错误条件发生

P——是否满足性能要求

 

边界条件的寻找:

需要考虑的条件有,

完全伪造或者不一致的输入数据

格式错误的数据

空值或者不完整的值

一些与意料中的合理值相去甚远的数值

如果要求的是一个不允许出现重复数值的list,但是传入的是一个存在重复数值的list

如果要求的是一个有序list,但是传入的是一个无序的list;或者反之。

事情达到的次序是错误的,或者碰巧和期望的次序不一致

 

简而言之,就是

Conformance(一致性)——值是否和预期的一致。

Ordering(顺序性)——值是否如应该的那样,是有序或者无序的

Range(区间性)——值是否位于合理的最小值和最大值之内

Reference(依赖性)——代码是否引用了一些不在代码本身控制范围之内的外部资源

Existence(存在性)——值时候存在(例如,是否是非null,非0,在一个集合中等等)

Cardinality(基数性)——是否恰好有足够的值

Time(相对或者绝对的时间性)——所有事件的发生是否是有序的?是否在正确的时刻?是否恰好及时

 

检查反向关联

使用反向的逻辑关系来验证,例如:对于检查一个计算平方根的函数,可以对结果进行平方来检查。

 

使用其他手段来实现交叉检查,例如:实现一个问题可以使用多个算法,我们可以使用实现时没有用到的算法来进行测试

 

强制产生错误条件:

内存耗光

磁盘用满

时钟出问题

网络不可用或者有问题

系统过载

受限的调色板

显示分辨率过高或过低

显示dpi设置过高或过低

 

如何在项目中进行测试

测试代码应该放在哪里?

1. 同一目录

这种方法能测试所有的方法,但是会使代码过于冗余

 

2. 单独的程序集

独立性好,但是只能测试public方法

原创粉丝点击