SuperAPI AI 工具集

testing-strategies

测试与质量

查看项目

更新于 10-15 15:42

技能介绍

Testing Strategies 是一份围绕软件测试策略的实践参考资料,重点给出多类测试方法的代码示例与编写约定。

测试结构 建议采用 Arrange-Act-Assert 结构组织测试。示例使用 describe/it 分层,以 OrderService 的 createOrder 为例:先构造内存仓库与服务的准备步骤,再调用被测方法,最后用断言校验返回结果的状态、条目数量以及从仓库中读回的持久化结果。同时给出对空 items 输入应当抛出 "Order must have at least one item" 的负向用例。约定包括:按行为而非方法名命名测试;每个测试应独立、自包含。

契约测试 使用 Pact(示例中导入 PactV4)验证消费者与提供者之间的接口约定。示例以 OrderService 为消费者、UserService 为提供者,通过 addInteraction、given、uponReceiving、withRequest、willRespondWith 描述交互并定义期望 JSON 响应,再在 executeTest 中通过 mockServer 调用客户端并断言返回内容。资料说明契约测试用于在不要求两个服务同时运行的情况下,验证消费者期望与提供者能力是否匹配。

快照测试 示例基于 @testing-library/react,对 UserCard 组件渲染结果使用 toMatchSnapshot;对 formatOrderSummary 的输出使用 toMatchInlineSnapshot 内联快照。约定是:小体量输出使用内联快照;在代码评审时认真检查快照差异。

属性测试 使用 fast-check(fc)对 sortUsers 等算法型代码验证不变量。示例包含两条属性:排序后元素数量与原数组一致;按 age 排序后结果满足非递减顺序。

集成测试 示例使用 @testcontainers/postgresql 启动 postgres:16 容器,在 beforeAll 中创建数据库并执行迁移(超时设置为 60000),在 afterAll 中关闭数据库与容器,随后测试用户的创建与按 id 检索是否一致。

测试替身 示例通过 createMockEmailService 记录已发送邮件,将其注入 NotificationService 后调用 notifyUser,并断言发送记录的数量与主题。资料强调测试替身应保持最小化并聚焦行为。

反模式 资料列出若干应避免的做法:测试实现细节而非行为;测试间共享可变状态(缺少 beforeEach 重置);测试依赖执行顺序;集成测试中滥用 mock 而不使用真实依赖;无视不稳定测试而不修复根因;只测试琐碎的 getter/setter 而遗漏边界情况。

检查清单 测试按行为而不是按方法或文件组织;每个测试遵循 Arrange-Act-Assert;契约测试验证服务间 API 兼容性;快照测试在代码评审中被审查而非盲目更新;属性测试覆盖算法代码的不变量;集成测试使用测试容器提供真实依赖;测试替身最小且以行为为中心;CI 在检测到不稳定测试时失败。

该资料为测试策略参考条目,示例主要基于 TypeScript/JavaScript 生态。其安装命令、运行方式及配套工具配置暂未提供。