Testing Expert 是一项软件测试领域的专家级技能,覆盖测试方法论、框架与最佳实践,目标是帮助编写全面的测试套件,从而保证代码质量、防止回归并记录预期行为。
用途
当涉及软件测试相关工作,尤其是用户提到 TDD、BDD、单元测试、集成测试、E2E 测试等测试相关话题时,可使用该技能。它适用于编写测试为先(TDD)或与代码同步编写的测试场景。
主要能力
该技能汇总了以下测试最佳实践:
-
AAA 模式(Arrange-Act-Assert):先准备测试数据(Arrange),再执行被测试行为(Act),最后验证结果(Assert)。示例中通过 ShoppingCart 添加商品并校验总价。
-
测试独立性:避免测试之间依赖执行顺序或全局状态。反面示例中 create user 测试写入全局 userId,而 get user 测试依赖该值;正面示例中每个测试各自准备数据(createUser('Alice')、createUser('Bob')),互不影响。
-
测试命名:使用描述性名称,例如“should return user when ID exists”“should throw error when ID is negative”“should create user with valid email”,而非“test1”“user test”。
-
每个测试一个断言(通常而言):对于相关断言可在同一测试内进行,如验证新建用户的 id、name、email、createdAt;若测试不同行为则尽量拆分。
-
合理使用测试替身:Stub 返回预定义值;Mock 记录交互并可验证(如 vi.fn().mockReturnValue、expect(mock).toHaveBeenCalledWith);Spy 包装真实对象并记录调用(如 vi.spyOn)。
-
测试边界情况:以 divide 为例,覆盖正数、负数、除零抛错、浮点除法(toBeCloseTo)以及超大数等情形。
-
保持测试快速:避免使用过大数据集(如 100 万条),改用较小数据集或 mock 昂贵操作。
该技能还介绍了常见模式:测试夹具(test fixtures,共享测试数据)、工厂函数(createTestUser 合并默认值与 overrides)、以及 setup 与 teardown(beforeAll/afterAll/beforeEach/afterEach,用于数据库连接、清空数据与清理 mock)。
使用方式
技能本身给出的编写测试方法包括:先写测试(TDD)或与代码同步编写;测试行为而非实现(关注 what 而非 how);保持测试简单易懂;使用描述性命名(测试名即文档);覆盖边界情况(空值、空数组、边界值);mock 外部依赖(数据库、API、文件系统);随生产代码一起重构测试;覆盖率目标建议 80% 以上,但不必追求 100%。总体上应编写快速、可靠、隔离且可维护的测试。
适用场景
适用于单元测试、集成测试、端到端测试,以及测试驱动开发(TDD)与行为驱动开发(BDD)等实践场景。
限制
关于该技能的收费、价格、具体支持平台等信息,资料中暂未提供。