幂等测试
Posted 可萌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了幂等测试相关的知识,希望对你有一定的参考价值。
1.什么是幂等
- 数学
f(n) = 1^n 就是一个幂等函数
- 编程
任意多次执行所产生的影响与一次执行相同,不用担心重复执行会对系统造成改变
2.为什么要做幂等
- 故障:
保底系统因为线上swallow消息重复发送,产生了三个线上问题:
a、ts-treasure-pool大面积告警,全部为db主键冲突的错误。
b、同一笔保底抵扣数据,在归还保底时当做两笔进行归还,影响总数据量1500笔左右。
c、同一笔保底申请审核通过后,被当做两笔审核通过进行了保底占用和预付款生成,共9笔。
3.什么时候要做幂等
- 场景:
同样的请求可能需要重试(或可能被重复调用)的情况
按业务场景做针对性判断,利益相关型业务(支付、结算等)
- 接口类型:
PegionService 接口
Swallow消费机
Http接口
4.如何做到幂等
- 一般情况下:利用唯一交易号(或流水号)实现
eg1:创建统一订单 case337
-
eg2:更新订单可用数量 case2178
eg3: 支付成功后消耗抵用券 PCT_CouponConsume
幂等要做到:
1、同一个OutBizID,多次消耗该抵用券的结果都是成功。
2、但对于一个CouponID,只能被消耗一次,如果换一个OutBizID来调用时应该始终返回失败。
5.如何测试幂等
- 方法
可在iTest上新增待测Pegions接口、Http接口、发送指定topic的swallow消息的幂等测试用例,重复执行来模拟多次调用
- 检查点
检查接口返回的Response是否幂等
检查对数据库数据的变更影响是否幂等
以上是关于幂等测试的主要内容,如果未能解决你的问题,请参考以下文章