b2a035c4f9
- 14 specialized AI agents across 5 battle zones (Prepare/Analyze/Design/Review/Monitor) - New: risk-assessor, test-strategist, data-builder, coverage-auditor, quality-gatekeeper, execution-analyst, knowledge-curator - New: fleet_runner.py orchestrator with multi-zone manifest pipeline - New: fleet_config.yml for centralized configuration - New: knowledge activation system (keyword + semantic matching) - New: semantic conflict detection with severity grading (P0-P3) - New: three-tier quality gate (PASS/PASS_WITH_FIX/BLOCKED) - New: monitor zone for test execution analysis and auto knowledge curation - Backward compatible: /case_generate alias, case_pipeline.py preserved - Comprehensive docs: USER_GUIDE.md + MAINTENANCE_GUIDE.md
6.4 KiB
6.4 KiB
历史典型缺陷复盘
这些是过去项目中发生过的真实 Bug,生成新用例时,请针对这些逻辑设计防御性测试用例。
缺陷 ID: BUG-202310-05
- 模块: 购物车
- 描述: 商品降价后加入购物车,随后商品恢复原价,结算时依然按降价后的价格计算,导致资损。
- 根因: 购物车缓存了价格,结算时未重新从商品中心获取最新价格。
- 防御用例:
验证商品加入购物车后,后台修改价格,结算时系统自动更新为最新价格。
缺陷 ID: BUG-202311-12
- 模块: 优惠券
- 描述: 使用“满100减50”优惠券购买 100 元商品,退货时未扣除优惠金额,导致用户获利。
- 根因: 退款逻辑未考虑优惠分摊。
- 防御用例:
验证使用优惠券购买多件商品后,部分退款时优惠金额按比例扣除。
缺陷 ID: BUG-202312-07
- 模块: 下单接口
- 描述: 调用下单接口时,通过篡改请求参数,将商品数量改为负数,系统未做边界校验,使订单总金额变为负数,用户支付后平台产生负向应收,造成资损。
- 根因: 下单接口对商品数量仅做了非空校验,未校验正整数及防止整数溢出。
- 防御用例:
验证调用下单接口时,传入商品数量为 0、负数、超大整数(如 9999999)时,系统均能拦截并返回错误码,不生成有效订单。
缺陷 ID: BUG-202401-15
- 模块: 支付网关
- 描述: 用户下单时选择“普通订单”(应付金额 100 元),在调起支付前通过抓包修改支付接口请求参数,将支付类型从“微信支付”改为“全额积分支付”。由于后端未校验订单原始支付方式,积分系统扣除了用户 100 积分(1 积分=1 元),用户实际未付现金即获得商品。日损失积分资产超 10 万。
- 根因: 支付接口仅校验了用户积分余额是否充足,未与订单核心表中的支付方式快照做一致性校验。
- 防御用例:
验证下单时选择现金支付,支付阶段强制改为积分支付或余额支付时,后端应校验请求支付方式与订单生成时记录的支付方式一致,不一致则拒绝支付。
缺陷 ID: BUG-202401-22
- 模块: 并行扣减
- 描述: 秒杀活动中,用户通过多线程并发调用下单接口(同一商品 ID,同一用户),由于缺少分布式锁或乐观锁,导致同一件商品被同一用户成功下单 3 次,库存扣减超出实际售卖数量,产生超卖资损。
- 根因: 库存扣减 SQL 为
update stock set count = count - 1 where product_id = ?,未使用and count > 0条件,且业务层未做幂等和并发控制。 - 防御用例:
验证同一用户对同一限购商品发起 10 次并发下单请求,最终只成功创建 1 个订单,库存扣减 1 件。
缺陷 ID: BUG-202402-03
- 模块: 价格计算
- 描述: 商品 A 单价 50 元,参与“满 2 件打 8 折”活动。用户将 1 件加入购物车,下单前活动变更为“满 3 件打 7 折”,但前端仍展示旧折扣,提交订单时后端沿用旧活动的价格计算规则,导致用户少付。
- 根因: 后端未在订单入库前重新计算促销活动价格,而是信任前端传入的活动 ID 和已优惠金额。
- 防御用例:
验证商品促销活动变更后,用户使用旧的活动 ID 提交订单,系统应抛弃前端传入的优惠信息,强制重新计算最新活动价格。
缺陷 ID: BUG-202402-18
- 模块: 退款/逆向流程
- 描述: 用户使用混合支付(现金 80 元 + 余额 20 元)购买 100 元商品。申请全额退款时,退款逻辑先调用余额退款接口(退还 20 元),然后调用现金退款接口(退还 80 元)。但现金退款接口因网络超时返回失败,系统记录退款失败,但实际上余额的 20 元已退给用户,用户凭空获利。
- 根因: 退款流程未使用分布式事务或 TCC 模式,分步调用外部接口出现部分成功时无法回滚。
- 防御用例:
验证混合支付全额退款时,若现金退款接口调用失败,系统应能自动回滚已退的余额部分,或保持整体失败状态,绝不出现部分退款成功。
缺陷 ID: BUG-202403-11
- 模块: 价格篡改
- 描述: 用户将商品加入购物车后,通过浏览器开发者工具修改页面中某个商品的“单价” DOM 元素(从 100 改为 0.01),提交订单时后端未校验单价,直接使用前端传回的 0.01 元创建支付单,用户以 1 分钱买走商品。
- 根因: 下单接口设计时错误地将商品单价作为可信任的入参,未从商品中心重新获取真实单价。
- 防御用例:
验证所有与金额、价格、数量相关的核心字段(单价、总价、运费等)均不能信任前端传入,下单时后端必须独立从商品库/价格服务中重新获取并计算。
缺陷 ID: BUG-202403-20
- 模块: 重复支付
- 描述: 用户在支付网关点击“确认支付”按钮后,由于网络延迟前端未收到回调,用户连续点击 3 次,系统生成了 3 个相同的支付请求(同一订单号),三方支付渠道返回 3 个不同的交易单号,且订单系统最终对同一订单进行了 3 次金额累加,多收了用户 2 份钱。
- 根因: 支付接口未做幂等性校验,允许同一订单号多次发起支付请求并修改订单状态。
- 防御用例:
验证同一订单号在 1 秒内收到 5 次相同支付请求,后端仅处理第一次请求,后续请求直接返回“处理中”或“重复请求”,订单状态不被多次累加。
缺陷 ID: BUG-202404-02
- 模块: 积分与现金互转
- 描述: 活动期间积分可抵扣现金(100 积分 = 1 元)。用户下单时使用 5000 积分抵扣 50 元,订单总金额 100 元,实付 50 元。后续用户申请全额退款,系统退还了 5000 积分 + 50 元现金,相当于积分被重复退还(原积分未核销),用户用 0 成本套取 50 元现金。
- 根因: 退款时未先扣回已使用的积分(或积分已被消耗),而是直接重新发放等额积分。
- 防御用例:
验证使用积分抵扣部分现金后,申请退款时应先原路返还积分(若积分未过期)或按比例折算成现金,确保平台不产生额外资产损失。