如何做幂等测试

什么是幂等?

f(x)=f(f(x))

幂等性测试

同一个请求被执行一次与被执行多次的效果是一样的,服务器的状态也是一样的

为什么需要幂等?

接口调用在一般情况下不会重复提交,但在一些特殊情况下会出现重复提交的状况

用户重发
网络重发
系统重发
消息重发

幂等性多数场景运用在支付、订单、和分布式事务处理等

例如:
小明去华住定大床房
一间200
结果在付钱的时候因为网络不好系统提示支付失败
于是小明又付了一次钱
等付完钱后发钱钱被扣了两次!!

幂等的类型

幂等操作在底层无碍乎就是两种操作

1.插入:insert
2.更新:update

一般插入幂等多用于生成流水号

在确保流水号的唯一性的同时也要确保与上下游的数据一致性

没做幂等

如果小明的支付流水号由上游生成或使用全局流水号,就能在保证唯一性的时候发现已经存在该流水号,也就避免了重复插入的问题

幂等校验

小明
发起支付
第二次发起支付
插入上游传递的唯一流水号
第二次支付
发现流水号已存在
查询并返回支付状态阻止第二次生成流水号

更新幂等

小明想要挽回损失,对多付的订单发起退款申请
小明操作失误,同时点了2次退款申请
两次请求都成功了!
小明获得退款400
由于没有做幂等,导致小明赚了200

为何会有更新不幂等

1.未判断原始更新状态
2.事务的并发处理问题

造成什么问题?

  • 1.更新丢失
  • 2.脏读
  • 3.幻读
  • 4.不可重复读

注意

幂等性测试也是验证数据一致性的重要一环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值