用途:指导如何编写能捕获缺陷、记录行为并保持可维护的测试,适用于编写新测试、评审测试质量、TDD 的 RED 阶段、扩展覆盖率以及排查已发现的缺陷。
主要能力:
- 测试命名:采用“[结果] when [条件]”模式,名称应描述结果而非动作,例如 returns empty array when input is null;测试名应像规格说明,只读名称即可理解系统行为。
- 断言最佳实践:断言具体值而非类型,如 expect(result).toEqual(['First.', ' Second.']) 而非 toBeDefined();断言必须与测试标题一致;避免耦合实现细节,优先验证行为。
- 测试结构:采用 Arrange-Act-Assert;每个测试只验证一个概念,名称中出现“and”就应拆分。
- 边界用例清单:按输入类型系统考虑,包括数字(零、负数、极值、小数精度、NaN、Infinity、边界值)、字符串(空串、纯空白、超长、Unicode、特殊字符、注入模式、大小写)、集合(空、单元素、重复、嵌套、循环引用、超大、稀疏、混合类型)、日期时间(闰年、夏令时、时区、午夜、年末、非法日期)、null/undefined,以及邮箱、URL、电话、地址、货币、百分比等领域用例。
- 领域约束违背:唯一性冲突、缺失关系、顺序错误、范围越界、状态不一致、格式不匹配、时间顺序颠倒。
- 类型化属性校验:区分“是否为字面量”与“是否为正确类型的字面量”,接口声明 string 时必须拒绝数字和布尔字面量。
- 缺陷聚集:发现一个缺陷后,应测试同函数相似输入、同模式其他位置、同开发者假设、同数据类型等相关场景。
使用方式:作为技能/规范在编写或评审测试时参照执行;文中给出的是原则与示例,未提供安装命令或代码库。
限制:资料未说明具体语言、框架、平台支持范围、收费或价格信息;示例使用 Jest 风格断言,但未声明仅限该框架。