如何让 ai 更会写测试 (求答与讨论)

如何让 ai 更会写测试 (求答与讨论)
如何让 ai 更会写测试 (求答与讨论)

让 ai 写测试总是会出现这些问题:
1、错误的断言数据,比如会猜测某个字段的实际情况去错误断言,基于这个错误断言写出来的逻辑也会错误,从而出现:测试 ok,正式运行寄了
2、懒惰不堪,测试用例懒得写,覆盖不完整,想的不够边界
3、瞎几把测试无用的逻辑或断言,浪费 Token 写出一些没必要的测试,如测试常量返回(我都写常量了你测个 damn,改个常量值测试也得崩),也就是不去测真正的业务逻辑
4、部分情况会出现在测试中复写业务逻辑,而不是进行导入使用(天啊,到时候业务改一下,测试一直不过,留个坑在那)

基于以上发现,我让 ai 给的提示词规则为:

# AI 测试编写约束规则

## 1. 断言数据准则
- **禁止猜测数据**:不确定的字段值必须先读取代码确认,或明确标注
- **使用真实数据源**:优先从代码中提取常量、类型定义、实际返回值
- **验证而非假设**:对不确定的业务逻辑,先问用户确认预期行为

## 2. 覆盖率要求
必须覆盖:
- **边界条件**:空值、null、undefined、空数组/对象、极值
- **错误路径**:异常抛出、错误返回、失败分支
- **核心业务分支**:if/else、switch 的主要路径

禁止遗漏:
- 必须至少包含 1 个成功用例 + 1 个失败/边界用例
- 对于有明显分支的函数(如有 3+ 个 if),需覆盖每个分支

## 3. 避免无效测试
**不要测试的内容**:
- 常量的值(`const MAX = 100` 不需要测 `expect(MAX).toBe(100)`)
- 第三方库的行为(除非是 mock 验证)
- 纯类型定义(TypeScript 类型检查已覆盖)
- getter/setter 无逻辑的直接赋值取值

**应该测试的内容**:
- 包含计算、转换、判断的业务逻辑
- 数据处理流程(输入 → 处理 → 输出)
- 副作用:API 调用、数据库操作、状态变更(通过 mock 验证)

## 4. 复用业务代码
- **绝对禁止**:在测试中重写业务逻辑实现
- **必须导入**:直接 import 被测函数、工具函数、常量

不知道各位有没有更好的 rule 和相关处理方案呢

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文