Skip to content

Latest commit

 

History

History
42 lines (33 loc) · 1.72 KB

单元测试之道 Java 版 读书笔记.md

File metadata and controls

42 lines (33 loc) · 1.72 KB

一般原则

  • 测试任何可能失败的地方。
  • 测试任何已经失败的地方。
  • 对于新增的代码,在被证明正确之前,都可能是有问题的。
  • 至少编写和产品代码一样多的测试代码。
  • 针对每次编译都做局部测试。
  • 提交代码之前做全局测试。

要回答的问题

  • 我如何知道代码运行是否正确?
  • 我要如何针对它进行测试?
  • 还有哪些方面可能会发生错误?
  • 这个问题是否可能在其他地方出现?

测试哪些方面

  • 结果是否正确(right)?
  • 边界(boundary)条件是否正确?
  • 是否可以检查反向(inverse)关联?
  • 是否可以使用其他方法来跨检查(cross-check)结果?
  • 错误条件(error condition)是否可以重现?
  • 性能(performance)方面是否满足条件?

好的测试特征是 ATRIP

  • Automatic(自动化的)。
  • Thorough(全面的)。
  • Repeatable(可重复的)。
  • Independent(独立的)。
  • Professional(专业的)。

CORRENT 边界条件

  • 一致性(Conformance):值是否符合预期的格式?
  • 有序性(Ordering):一组值是有序的亦或无序的?
  • 区间性(Range):值是否在一个合理的最大值和最小值的范围内?
  • 引用,耦合性(Reference):代码是否引用了一些不受代码本身直接控制的外部因素?
  • 存在性(Existence):值是否存在(例如,非 null,非零,包含于某个集合等)?
  • 基数性(Cardinality):是否恰好有足够的值?
  • 时间性,绝对的或者相对的(Time):所有事情是否都是按照顺序发生的?是否在正确的时间?是否及时?