一、什么是单元测试
单元测试是开发者编写的一段代码,用于检验被测代码的一个很小的、很明确的功能是否正确
二、测试哪些内容 Right-BICEP
- 结果是否正确
期望的结果是否正确 - 边界条件
- 完全伪造或者不一致的输入数据
- 格式错误的数据
- 空值或者不完整的值
- 一些与意料中的合理值相去甚远的数值
- 检查反向关联
使用反向的逻辑关系来验证 - 使用其他手段来实现交叉检查
- 强制产生错误条件
- 性能特性
三、CORRECT边界条件
- 一致性(Conformance)——值是否符合预期的格式?
- 有序性(Ordering)——一组值是该有序还是无序?
- 区间性(Range)——值是否存在一个最大值和最小值的范围之内?
- 引用,耦合(Reference)——代码是否引用了一些不受代码本身直接控制的外部因素?
- 存在性(Existence)——值是否存在?
- 基础性(Cardinality)——是否恰好有足够的值?
- 时间性,绝对的或者相对的(Time)——所有事情是否都是按顺序发生的?是否在正确的时间?是否及时?
四、好的测试所具有的品质A-TRIP
- 自动化:
至少包含两方面含义:调用测试自动化、检查结果自动化 - 彻底的
测试所有可能出现问题的情况,极端的就是每一行代码 - 可重复
任意顺序的执行其中任一一个测试,产生的结果都是相同 - 独立的
测试之间应该是独立的,并且必须独立于周围不可控的环境 - 专业的
在测试代码中,针对好设计的所有普遍规则--维护封装、采用DRY原则、降低耦合,等等——都必须如在产品代码中那样得到遵循