zoukankan      html  css  js  c++  java
  • 《单元测试之道C#版——使用NUnit》测试哪些内容 RightBICEP

    1、Right——结果是否正确?

           对于测试而言,首要的也是最明显的任务就是查看所期望的结果是否正确——验证结果。

           对于许多有大量测试数据的测试,考虑用一个独立的数据来存储测试数据,然后让单元测试读取该文件。不过需要多注意一下测试数据。不管是文件中的还是代码中的测试数据,都很有可能是不正确的。实际上,经验告诉我们,测试数据比代码更有可能是错的,特别是人工计算的,或者来自原有系统计算结果的测试数据。因此,当测试数据显示有错误发生的时候,你应该在怀疑代码前线对测试数据检查两三遍。

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

           找边界条件助记短语CORRECT

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

           Ordering(顺序性)——值是否如应该的那样,是有序或者无序的。         Range(区间性)——值是否位于合理的最小值和最大值之内

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

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

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

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

    3、I——能查一下反向关联吗?

           例如,可以用对结果进行平方的方式来检查一个计算平方根的函数,然后测试结果是否和原数据很接近。

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

           通常而言,计算一个量会有一种以上的算法。我们可能会基于运行效率或者其他的特性来选择算法。那是我们要在产品中使用的;但是在测试用的系统中,可以使用剩下算法中的一个来交叉测试结果。

           另一种方法就是:使用类本身不同组成部门的数据,并且确信它们能“合起来”。例如,图书馆的数据系统,借出数加上躺在架子上的库存数应当永远等于总藏书量。这些就是数据的两个分开的不同组成部门(借出数和库存数),它们甚至可以由不同类的对象来汇报它们,但是它们仍然必须遵循上面约束(总数恒定)。

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

           搞一个无效参数之类的做法是小菜一碟,但是不拔网线要模拟网络错误就需要一些特殊的技术了,使用Mock对象可以解决此类问题。

           以下是常见的环境方面的因素:

    •   内存耗光
    •   磁盘用满
    •   时钟出问题
    •   网络不可用或有问题
    •   系统过载
    •   受限的调色板
    •   显示分辨率过高或者过低

    5、P——是否满足性能要求?

            一个检查起来会很有益处的部分是性能特性,而不是特性性能本身。然后性能特性却又一种类似“随着输入尺寸慢慢变大,问题慢慢变复杂”的趋势。

            我们想要的是一个性能特性的快速回归测试。很多时候,也许我们发布的第一个版本工作正常,但是第二个版本不知道为何变得很慢。我们不知道为什么,也不知道改变了什么,或者什么时候谁敢的,几乎一切都是未知的。

  • 相关阅读:
    乌龟git
    CI的model层的操作
    排序算法
    linux安装教程
    linux命令Netstat
    linux压缩和解压缩
    标准库模块time,datetime
    为什么计算机时间和众多编程语言要从1970年1月1日开始算起
    模块和包的导入
    Python封装应用程序的最佳项目结构是什么?
  • 原文地址:https://www.cnblogs.com/xiaopang2010/p/2512718.html
Copyright © 2011-2022 走看看