有意义bug和重大bug(2)

一、Bug 标题1:

(1)有意义的bug描述: 1 .现象:会员成长值 的登记普通会员(500),白银会员(1000),黄金会员(2000),钻石会员(5000) ,累计了成长值就有对应的权益; 如果我们下单成功以后等级权益升级了,有了新的权益,通过高等级的权益下单,但是如果用户售后退单,成长值减少,等级降值,用户享受高等级的权益,就存在漏洞,?

(2)详细描述:

用户退单扣减成长值导致会员等级降级后,仍可持续使用降级前高等级专属权益,存在权益结算漏洞
前置业务规则
会员成长值门槛:普通 500、白银 1000、黄金 2000、钻石 5000;成长值累计达标自动升级,达标对应等级解锁专属下单权益(优惠券、折扣、运费券等)
正常正向流程:下单成功→发放成长值→成长值上涨→等级升级→解锁高等级权益;使用当前等级权益下单
逆向售后规则:订单全额 / 部分退款→扣减对应订单产生的成长值→成长值下降,会员等级实时降级
(3)Bug 复现步骤
准备用户初始成长值:4900(黄金会员,未达钻石 5000 门槛)
用户下单一笔订单,订单产生成长值 100;下单成功后成长值更新为 5000,自动升级钻石会员,解锁钻石专属大额折扣券
用户使用钻石等级专属权益券,完成第二笔下单支付
用户对第一步的升阶订单发起全额售后退款,退款审核通过
系统扣减 100 成长值,用户成长值回到 4900,会员等级降级回黄金会员
查看第二笔已支付订单:依旧生效钻石等级权益;若用户继续下单,仍可领取 / 使用钻石权益,不会拦截高等级权益
预期结果
等级降级后:未支付订单需回收高等级权益,强制切换至当前真实会员等级权益
等级降级后:已支付未履约订单需按规则补差 / 收回权益差价;
等级降级后:新下单只允许使用当前真实等级权益,不可领取、使用降级前高等级权益
实际结果
会员等级降级后,历史使用高等级权益订单无补差处理,新下单仍可正常领取、使用钻石等高等级权益,用户永久享受超出自身成长值匹配的权益,造成平台资金损失
严重等级
严重(资金损失类业务漏洞)
(二)、测试人员:如何主动发现该 Bug(测试设计思路 + 用例)
1. 测试思路核心
覆盖先升级、再用高阶权益、最后退单降级的交叉逆向场景,正向流程人人都会测,漏洞藏在「等级变更 + 售后逆向」组合场景,属于状态联动边界场景。
测试分层设计
(1)功能用例设计(核心复现用例)
用例 1:全额退升级订单,等级降级,校验新下单权益
用户成长值 4900(黄金)
下单得 100 成长值→5000 钻石,领取钻石专属券下单
退款升级订单,成长值 4900,等级黄金
操作:①新增下单 ②查看历史钻石权益订单
校验点:新下单不可用钻石权益;历史订单权益差价需追缴
用例 2:部分退款扣减成长值降级场景
成长值 4950,下单产生 100 成长值到 5050 钻石
使用钻石权益下单
部分退款,扣 60 成长值,剩余 4990 降级黄金
校验权益是否失效
用例 3:多笔升级订单,仅退其中一笔导致降级
多笔订单叠加成长值升到钻石,多笔订单使用钻石权益
退其中一笔成长值订单,等级降级
校验全部已使用高阶权益订单、后续下单权限
用例 4:退款后重复领取高阶权益校验
降级后访问会员权益中心,校验钻石权益是否置灰不可领取
(2)接口层面测试(接口自动化 / 手工抓包)
下单接口:校验成长值累加、等级变更事件记录
售后退款接口:校验成长值扣减、等级重新计算逻辑
权益领取 / 下单核销接口:增加前置校验逻辑 ——实时读取用户当前最新会员等级,而非下单时缓存的等级
校验等级变更事件是否同步推送至权益、订单、优惠券服务
(3)边界 & 异常场景补充
升级当天立即退款降级
多次升降级循环(升级→用权益→退款降级→再次升级→再退款)
跨自然月成长值清零 + 退款降级组合
已发货 / 已完成订单退款降级场景
(4)数据埋点与后台校验测试
后台报表:核对「用户等级」与「订单使用权益等级」不一致数据,批量筛查漏洞用户
数据库校验:查询 user_member(会员成长值、等级表)与 order_info(订单权益标识)关联数据,筛选等级 < 权益等级的异常订单
2. 测试发现该 Bug 的手段总结
业务场景交叉法:正向升级流程 + 逆向售后退款流程组合测试
边界值覆盖:会员等级门槛临界成长值(4990、990、1990、4990)
接口链路全链路测试:会员服务、订单服务、售后退款、权益优惠券服务联动校验
数据库关联查询校验,从底层数据发现逻辑不一致
自动化用例覆盖升降级 + 退款组合场景,回归防复发
(三)、开发人员:完整解决方案(架构 + 代码逻辑 + 修复方案)
核心问题根因
当前系统存在 2 个核心逻辑缺陷:
权益核销时缓存下单瞬间的会员等级,未实时查询当前最新会员等级;用户降级后,缓存等级与真实等级不一致
售后退款仅扣减成长值、更新会员等级,无联动补偿逻辑:未追溯已使用高等级权益的历史订单,不做差价追缴、权益回收
方案 1:实时等级校验(阻断新漏洞产生,优先落地)
1. 微服务接口改造(会员服务 + 订单 / 权益服务)
(1)统一接口前置拦截规则
所有权益领取、优惠券核销、下单抵扣接口,增加统一拦截器:
每次操作实时调用会员服务接口,获取用户当前实时成长值 + 实时会员等级,不使用本地缓存、下单快照等级。
逻辑伪代码:
java
运行
// 核销钻石权益前置校验
MemberDTO member = memberFeignClient.getRealTimeMember(userId);
if (member.getLevel() < Diamond) {
// 拦截,返回:当前会员等级不可使用该权益
return Result.fail("会员等级不足,无法使用钻石专属权益");
}
(2)会员等级变更全局事件推送
会员成长值变动(升级 / 降级)时,会员服务发送 MQ 消息,同步通知:
优惠券服务、订单服务、用户权益中心
消费逻辑:
优惠券服务:回收未使用的高等级专属券,置灰不可使用
权益中心页面:实时刷新权益展示,隐藏超出当前等级权益
方案 2:历史订单追溯补差(修复已产生的漏洞损失)
1. 退款成功后置任务(异步定时任务)
退款审核通过、扣完成长值并降级后,触发异步任务:
查询该用户全部未完成、未结算订单,筛选订单权益等级 > 当前用户真实等级
分场景处理:
待支付订单:自动取消高等级权益,切换为当前等级权益,通知用户
已支付未发货 / 未完成订单:计算权益优惠差价,生成待追缴账单,下单结算时抵扣或通知用户补差价
已完成历史订单:后台生成异常账单报表,运营人工核对追缴
2. 定时补偿任务(每日凌晨执行)
定时扫描数据库异常数据:
关联 user_member(当前等级)+ order_info(订单使用权益等级)
筛选 order_benefit_level > user_current_level 的异常订单,生成补偿工单,推送运营处理。
方案 3:底层数据约束与幂等保障
数据库增加冗余字段:订单表存储下单时等级、当前实时等级双字段,方便对账排查
售后退款、成长值扣减增加分布式锁,防止并发退款导致成长值计算错乱、等级计算错误
成长值变动记录流水表:每一笔增减记录订单来源,方便追溯降级源头
方案 4:降级兜底业务策略(产品配合)
产品规则补充:使用高等级权益的订单发生退款导致降级,平台有权收回权益优惠差价;
用户端弹窗告知:退款降级后弹窗提示 “等级下降,部分高阶权益将失效,历史订单优惠差价需补齐”
修复上线后自测点(开发自测)
临界成长值升降级后,新下单无法使用旧高阶权益
退款降级后未使用高阶券自动回收
历史使用高阶权益未完成订单自动计算差价
并发多笔退款、多笔下单场景无逻辑错乱
后台异常订单报表可正常查出等级不匹配数据
兜底防复发方案
单元测试:新增「升级 - 用权益 - 退款降级」组合单元用例
接口自动化:全链路回归用例纳入 CI 流水线,迭代自动校验
线上监控告警:监控权益等级与会员等级不一致订单,触发实时告警

 

二、Bug2 全额退款临界成长值降级,仍可使用高阶优惠券下单

现象:会员等级门槛:普通 500、白银 1000、黄金 2000、钻石 5000;用户 4900 成长值(黄金)下单获得 100 成长值升级钻石,领取钻石专属满减券完成下单;后续对升级订单全额退款,成长值扣回 4900 等级回落黄金。降级后用户依旧能正常核销钻石优惠券下单,无拦截限制,持续享受高阶优惠,平台产生资金亏损。

预期:等级降级后,未使用高阶券自动回收,新下单实时校验当前等级,禁止使用高于自身等级权益

实际:降级后高阶券可正常领取、核销下单。

严重等级:严重

解决办法:1、全局实时等级拦截器拦截下单核销钻石券;2、MQ 降级事件触发优惠券服务自动回收未使用钻石券;3、定时对账抓取历史异常下单订单。

三、Bug3 部分退款扣减成长值降级,已支付未发货订单不追缴优惠差价
现象:
用户成长值 5080 钻石会员,使用钻石折扣下单多笔商品;其中一笔订单部分退款,扣减 90 成长值,剩余 4990 降级黄金。已支付未发货订单依旧保留钻石折扣,系统无差价核算、无补款提醒。
预期:
降级后已支付未履约订单自动计算权益差价,需用户补齐优惠差额。
实际
订单优惠保留,无补差逻辑。
严重等级:严重

解决办法:
退款完成后异步任务遍历用户在途未发货订单;
自动核算钻石与黄金权益差价,用户结算时抵扣货款;
订单详情页展示差价待补提醒。

四、Bug标题 多笔订单叠加成长值升级,仅退一单降级,全部历史高阶权益订单无处理
现象:
用户多笔订单累计成长值至 5200 钻石,连续多单使用钻石运费券;仅退回其中一笔成长值来源订单,成长值降至 4800 黄金会员。全部历史使用钻石权益订单不作追溯、无差价追回。
预期
退款降级后异步扫描用户所有在途订单,统一处理超额权益优惠。
实际
所有历史高阶权益订单数据无变更,无补偿任务触发。
严重等级:严重
Bug4 退款降级后会员权益中心高阶权益未置灰,可重复领取
现象
用户升级钻石领取专属会员礼包、积分兑换权益,退款降级黄金后,会员中心钻石权益入口正常展示,可反复点击领取礼包、兑换高阶礼品,无等级拦截校验。
预期
等级低于权益门槛时,高阶权益入口置灰,领取按钮不可点击。
实际
高阶权益正常展示,支持重复领取。
严重等级:严重
Bug5 并发下单 + 并发退款,成长值计算错乱,等级虚高永久享受高阶权益
现象
用户临界 4990 成长值,同时发起两笔下单(各 + 10 成长值),同步发起其中一笔订单退款;并发场景下成长值扣减逻辑丢失,数据库成长值未回落,用户永久保持钻石等级,无限使用钻石权益。
预期
成长值增减操作加分布式锁,并发场景等级实时重算。
实际
并发退款后成长值数据异常,等级无法自动降级。
严重等级:阻断资金漏洞
Bug6 跨月成长值刷新 + 退款降级组合,缓存等级未刷新持续生效
现象
月末用户升级钻石使用高阶折扣,次月月初成长值月度重置叠加订单退款双重扣减,等级降级;前端、订单接口缓存上月钻石等级,全天下单均放行钻石权益,未实时读取数据库最新成长值。
预期
所有权益核销接口每次调用实时查询会员真实等级,不依赖本地缓存快照。
实际
缓存等级 24 小时未更新,降级用户持续使用高阶权益。
严重等级:高
Bug7 售后仅退款不退货扣成长值降级,已核销的专属积分抵扣不回滚
现象
用户升级钻石后使用钻石专属高比例积分抵扣下单;发起仅退款售后,系统扣减成长值降级,但已抵扣高额积分不收回、不扣减用户积分余额,造成积分资产流失。
预期
退款降级同步回滚对应订单高阶积分抵扣差额,扣回超额消耗积分。
实际
积分抵扣记录保留,积分余额无变动。
严重等级:严重
Bug8 赠送成长值升级后,赠送来源订单退款降级,赠送权益不回收
现象
活动赠送 100 成长值,用户 4900 + 赠送 100 升级钻石,使用钻石专属免运费权益下单;取消赠送成长值对应活动订单,成长值扣回降级,免运费权益长期生效。
预期
赠送成长值回收降级后,对应赠送解锁的高阶权益同步失效。
实际
赠送解锁权益不受等级降级影响,持续可用。
严重等级:高
Bug9 降级后新产生的售后订单,仍可选择原高等级售后专属权益
现象
用户钻石降级黄金后,发起新订单售后,售后页面仍展示钻石专属极速退款、免审核权益,可正常使用高阶售后特权,增加平台售后成本。
预期
售后功能页面实时匹配当前会员等级,仅展示对应等级售后权益。
实际
售后特权未随等级同步刷新,降级用户可使用钻石售后通道。
严重等级:中高
Bug10 定时对账任务未识别 “等级低于订单权益等级” 异常数据,漏洞长期无法发现
现象
用户多次升级退款降级产生大量权益与等级不匹配订单;每日凌晨会员对账定时任务未关联订单权益等级字段,无法筛选异常订单,运营后台无告警、无异常工单,资金损失持续累积。
预期
定时任务关联会员表、订单权益表,筛选权益等级>当前会员等级数据并推送告警。
实际
对账逻辑仅校验成长值总数,不校验订单权益匹配关系,无异常产出。

 

posted @ 2026-06-18 09:44  xiaolehua  阅读(15)  评论(0)    收藏  举报