单元测试基础原则

  • Right-BICEP
    • Right
      • 首先,我们需要知道什么是正确的.这是最基本的.
    • Boundary边界
      • 是否所有的边界条件都正确?
      • Correct
        • Conformance一致性
          • 结果值是否和期望值一致.
        • Ordering顺序性
          • 值是否跟期望一样,是有序/无序的.
        • Range区间性
          • 值是否位于合理的最大值和最小值之间.
        • Reference依赖性
          • 代码是否引用了一些不在代码本身范围内的资源.
        • Existence存在性
          • 值是否存在(null,0).
        • Cardinality基数性
          • 是否恰好有足够的值.
        • Time.相对或绝对的时间性
          • 事情发生是否是有序的.
          • 是否在正确的时刻发生.
    • InReverse
      • 查一下反向关联
      • 例如,当插入一条数据到DB,通过Select语句查看结果.
      • 但是一些Bug,在原和反方向都会出现,所以会被隐藏.故原和反方向应该采用不同的方法.
    • Cross
      • 通常一个计算量会有多种算法.因为性能或者其他原因选择了一种,可以使用其它方法来验证.
    • Error
      • 是否可以强制错误的发生.
    • Performance
      • 性能是否能够满足要求.
  • 好的测试:A-Trip
    • Automatic
      • 对于测试所需要的任何条件(网络环境,数据库等),都应该让它们成为测试自动化的一部分.
      • 测试必须能够自己决定是否正确的通过.
    • Thorough
      • 有两个测试的极端情况
      • 1,对所有的代码行,所有的分支,所有的异常,都进行测试.
      • 2,仅仅测试最可能的情况.如边界等.
    • Repeatable
      • 每个测试都应该独立于其他所有测试,并且独立于上下文环境.
      • 每个测试都应该能够多次执行,且得到相同的结果.
    • Independent
      • 一个测试函数应该只专注于一个函数,或者联合起来组成一个功能的一组函数.
      • 每个函数和类都应该有自己的Setup和TearDown,来保证全新的开始.
    • Professional
      • 编写代码的规则,也同样适合于编写测试代码.
posted @ 2014-06-17 10:37  robynhan  阅读(1235)  评论(0编辑  收藏  举报