单元测试的原则

  • Right. 结果是否正确.
    • 首先,我们需要知道什么是正确的结果.
    • 对于有大量数据的测试,考虑使用单独的外部文件来存储测试数据.
  • Boundary. 主要是CORRECT 原则.
    • Conformance. 一致性.
    • Ordering. 顺序性.
      • 有序或无序的.
      • 一个很大的数据集合中某个数据的位置.
    • Range. 值是否位于合理的最大最小值之间.
    • Reference. 代码是否引用了不在代码本身控制范围之外的外部资源.
    • Existence. 值是否存在.
    • Counting. 基数性.
      • 是否恰好有足够的值.
    • Time. 时间性.
      • 事情的发生是否有序,是否在正确的时间.
  • InReverse. 相反性.
    • 当原方法插入一条记录到DB时,可反向用查询语句来看结果.
    • 有些Bug可能原和反方向方法中都出现,所以应使用不同的原理.
  • Cross.
    • 通常计算会有多个算法,考虑性能或其他因素选择了一种,可用其它算法来验证该算法的正确性.
  • Error.
    • 是否能够强制错误发生
  • Performance.
    • 是否能够满足性能的要求.
  • A-trip原则.
    • Automatic. 测试所需的任何条件(网络,DB),都应该成为测试自动化的一部分,如Mock对象.
      • 测试必须能够自己决定是否正确的通过.
    • Thorough.一个极端是所有代码行,所有分支,所有异常都测试.
      • 可行的是仅测试最可能的情况,如边界测试等.
    • Repeatable. 测试应(使用Mock) 来�隔离其它测试和周围的环境.
      • 能够多次执行,并且得到相同的结果.
    • Independent. 一个测试应只专注于一个函数,或一组函数.
      • 每个方法和类都有自己的setup和tear down. 来保证全新的开始.
    • Professional. 实现代码的规则,也适合于测试代码.

你可能感兴趣的:(单元测试的原则)