《单元测试之道C#版——使用NUnit》测试哪些内容 Right-BICEP
2012-05-22 09:08
375 查看
1、Right——结果是否正确?
对于测试而言,首要的也是最明显的任务就是查看所期望的结果是否正确——验证结果。对于许多有大量测试数据的测试,考虑用一个独立的数据来存储测试数据,然后让单元测试读取该文件。不过需要多注意一下测试数据。不管是文件中的还是代码中的测试数据,都很有可能是不正确的。实际上,经验告诉我们,测试数据比代码更有可能是错的,特别是人工计算的,或者来自原有系统计算结果的测试数据。因此,当测试数据显示有错误发生的时候,你应该在怀疑代码前线对测试数据检查两三遍。
2、B——是否所有的边界条件都是正确的?
找边界条件助记短语CORRECTConformance(一致性)——值是否和预期的一致
Ordering(顺序性)——值是否如应该的那样,是有序或者无序的。 Range(区间性)——值是否位于合理的最小值和最大值之内
Reference(依赖性)——代码是否引用了一些不在代码本身控制范围之外的外部资源。
Existence(存在性)——值是否存在(例如,是否是非null,非0,在一个集合中等等)。
Cardinality(基数性)——是否恰好有足够的值?
Time(相对或者绝对的时间性)——所有事情的发生是否是有序的?是否在正确的时刻?是否恰好及时?
3、I——能查一下反向关联吗?
例如,可以用对结果进行平方的方式来检查一个计算平方根的函数,然后测试结果是否和原数据很接近。4、C——能用其他手段交叉检查一下结果吗?
通常而言,计算一个量会有一种以上的算法。我们可能会基于运行效率或者其他的特性来选择算法。那是我们要在产品中使用的;但是在测试用的系统中,可以使用剩下算法中的一个来交叉测试结果。另一种方法就是:使用类本身不同组成部门的数据,并且确信它们能“合起来”。例如,图书馆的数据系统,借出数加上躺在架子上的库存数应当永远等于总藏书量。这些就是数据的两个分开的不同组成部门(借出数和库存数),它们甚至可以由不同类的对象来汇报它们,但是它们仍然必须遵循上面约束(总数恒定)。
5、E——你是否可以强制错误条件发生?
搞一个无效参数之类的做法是小菜一碟,但是不拔网线要模拟网络错误就需要一些特殊的技术了,使用Mock对象可以解决此类问题。以下是常见的环境方面的因素:
内存耗光
磁盘用满
时钟出问题
网络不可用或有问题
系统过载
受限的调色板
显示分辨率过高或者过低
5、P——是否满足性能要求?
一个检查起来会很有益处的部分是性能特性,而不是特性性能本身。然后性能特性却又一种类似“随着输入尺寸慢慢变大,问题慢慢变复杂”的趋势。我们想要的是一个性能特性的快速回归测试。很多时候,也许我们发布的第一个版本工作正常,但是第二个版本不知道为何变得很慢。我们不知道为什么,也不知道改变了什么,或者什么时候谁敢的,几乎一切都是未知的。
相关文章推荐
- C#中使用NUnit进行单元测试
- [转]单元测试应该测试什么?——Right-BICEP
- 单元测试应该测试什么?——Right-BICEP - 自由是冠军 - CSDNBlog
- 单元测试之道-使用NUnit(c#)
- NUnit单元测试整理高级篇之测试数据库操作以及VS插件TestDriven的使用
- 软件测试 -- 单元测试包含哪些内容
- c#中使用nunit支持数据库单元测试
- 单元测试应该测试什么?——Right-BICEP
- 单元测试应该测试什么?——Right-BICEP
- [C#]_[使用NUnit对业务逻辑代码进行单元测试]
- 单元测试整理(四)——测试哪些内容及边界条件
- [C#]_[使用NUnit对业务逻辑代码进行单元测试]
- [C#]在C#中使用NUnit进行单元测试
- 四则运算——单元测试(测试方法:Right-BICEP )
- c#中使用nunit支持数据库单元测试
- 单元测试之道C#版(使用NUnit)/程序员修炼三部曲
- [转]使用Nunit进行单元测试入门
- 测试框架nunit之assertion断言使用详解
- 使用float:right后内容下移换行的原因及解决方案
- NUnit详细使用用法(补充)--在.NET中如何利用NUnit测试Private和Protected方法