幂等校验

一个HTTP方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。

 

其实幂等就是一个操作或者接口,不管你调多少次,每次执行的结果都跟第一次一样。

 

比如数学上,1这个数字就是幂等的,无论你用什么数字跟1乘,乘多少次,最后的结果都跟第一次是一样的。

试想这样的一种场景:在电商平台上支付后,因为网络原因导致系统提示你支付失败,于是你又重新付款了一次,等完成后检查网银发现被系统扣了两次款,这是一种什么样的体验?

造成上述问题的原因可能有很多,比如第一次付款时实际支付成功,但是信息返回时网络中断导致系统误判;又比如第一次付款的确失败了,但第二次付款时发生意外,导致支付请求被重复发送等等。在一次支付的过程中,每个环节都有可能会发生问题,我们要如何规避这类问题引发的分险?

幂等性是解决这类问题的方案之一,所以在电商,银行,互联网金融等对数据准确性要求很高的领域中,这一特性具有十分重要的地位。

所以对于一些重要的接口或者操作,我们是要求后台保证其幂等性的。因为客户端可能有重试机制,另外中间人攻击可能会进行请求的重放,这些都有可能导致接口被多次调用,像上面的扣款操作,如果接口没有实现幂等,那么后果是相当不堪设想的。

如何测试?

  • 首先在需求分析的时候我们要有能力识别出需要实现幂等的接口,提前要求开发同学去实现;
  • 测试过程中由于幂等的特性是多次调用的结果相同,那么可以用自动化的方式去反复调用,这样会比较高效;
  • 异常情况需要考虑到,比如除了第一次调用之外的调用是否有性能问题,稍微修改一些无关紧要的参数是否会破坏幂等之类的;
原文地址:https://www.cnblogs.com/by170628/p/14543568.html