悦省 ← 返回提示词库

AI / 编程与调试

给测试用例挑漏

找出没被覆盖的分支,按线上事故概率排序

下面是我的实现和现有测试。请找出测试没覆盖到的地方:1)列出所有分支和边界,标出哪些没有用例;2)按「一旦出错线上影响最大」排序,给出前 5 个应该补的用例(写清输入、预期、为什么容易漏);3)指出哪些用例其实是重复的、删掉不影响信心;4)有没有哪个测试在断言实现细节而不是行为。

```
[粘贴代码与测试]
```
使用建议

补用例先补它排前三的那几个;剩下的等真出过问题再补,别一次写满。

适合什么场景

  • 核心的支付、优惠或权限逻辑要改,测试是半年前写的,不确定还管不管用。
  • 覆盖率报告 78%,但线上事故仍然出在边界条件上。

不适合的场景

  • 代码本身还没定型(接口一天改三次):先定契约,否则测试跟着一起改。
  • 你只想把覆盖率数字做上去:这个提示词会告诉你哪些用例根本不值得写。

示例

输入
def apply_coupon(order, coupon):
    if coupon.expired_at < now(): return order
    if order.amount < coupon.min_amount: return order
    if coupon.id in order.used_coupon_ids: return order
    if len(order.applied_coupons) >= 3: return order
    return order._replace(amount=order.amount - coupon.value)

现有测试:正常抵扣一单、过期券不抵扣。
你会得到
列出未覆盖:金额恰好等于门槛、同一用户第二次使用、叠加超过 3 张、抵扣后金额为 0 或负数、并发下同一张券被两个订单使用。按线上影响排序,前 5 应补「抵扣后为负」和「并发复用」;并指出「过期券」用例断言了 `_is_expired` 调用,是在断言实现细节而非行为。

常见误用

  • 只贴实现不贴现有测试:它会把「没覆盖」和「你没贴出来」混为一谈。
  • 让它「补全所有测试」,收回 40 个低价值用例,维护成本高于收益。

可以这样改

  • 加「只给用例的输入、预期和为什么容易漏,不要写测试代码」,先评审清单再写代码,省掉大段返工。
  • 加「标出哪些用例需要 mock 时间或并发才能写」,能提前发现测试基础设施的缺口。

同方向的其他提示词