单元测试的原则

  • 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. 实现代码的规则,也适合于测试代码.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容