首页 > 其他分享 >五分钟搞定幂等本质

五分钟搞定幂等本质

时间:2023-09-27 11:05:40浏览次数:31  
标签:搞定 请求 多次 userid URI 本质 col1 五分钟 资源


幂等概念

幂等性原本是数学上的概念,即使公式:f(f(x)) =f(x)能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。幂等性是系统服务对外一种承诺,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。比如我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统问题重发,也应该只扣一次钱,具体幂等处理流程如下图所示:

五分钟搞定幂等本质_http

SQL中的幂等

SELECT col1 FROM tab1 WHER col2=1,无论执行多少次都不会改变状态,是天然的幂等。

UPDATE tab1 SET col1=1 WHERE col2=1,无论执行成功多少次状态都是一致的,因此也是幂等操作。

UPDATE tab1 SET col1=col1+1 WHERE col2=1,每次执行的结果都会发生变化,这种不是幂等的。

insert into user(userid,name) values(123456,'kevin') 如userid为唯一主键,即重复操作上面的业务,只会插入一条用户数据,具备幂等性。

如userid不是主键,可以重复,那上面业务多次操作,数据都会新增多条,不具备幂等性。

delete from user where userid=123456,多次操作,结果一样,具备幂等性

HTTP方法中的幂等

HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。

GET方法用于获取资源,不应有副作用,所以是幂等的。

DELETE方法用于删除资源,有副作用,但它应该满足幂等性。例如:删掉id为123456的帖子,调用者可以多次调用或刷新页面而不必担心引起错误。

POST方法不具备幂等性,两次相同的POST请求会在服务器端创建两份资源,它们具有不同的URI

PUT方法具备幂等性,他所对应的URI是要创建或更新资源的本身,对同一URI进行多次PUT的副作用和一次PUT是相同的。

PATCH不具备幂等性 他会将一组描述在请求实体里的更改应用到URI标志的资源。这组更改以 "补丁文档" 的格式表示,如果URI未指向现有资源,服务器可能根据补丁文档的类型和权限等来创建一个新资源。

测试角度看幂等

核心测试点包括:

用户重复提交

网络重发

消息重发

系统间重试

重点关注的内容如下:

1)需要关注业务性质和产品设计,是否需要做到幂等,是时间维度的幂等(即幂等对象的范围,是个人还是机构,是某一次交易还是某种类型的交易)还是空间维度的幂等(即幂等的保证时间,是几秒、几分钟还是永久性的)。

2)接口的幂等测试,在做接口测试时对每个接口都思考一下是否需要幂等。

3)业务场景,特别是涉及到钱的业务场景,对失败重试机制一定要验证。

标签:搞定,请求,多次,userid,URI,本质,col1,五分钟,资源
From: https://blog.51cto.com/liwen629/7621643

相关文章

  • 五分钟理解什么是自动化测试架构设计
    自动化测试常见的问题如下:1)产品UI经常变化,导致测试脚本不能复用。(2)测试脚本不够健壮,导致脚本回放时,测试脚本本身经常出错。(3)网络延迟,数据加载延迟造成测试脚本失败。(4)识别对象的ID可读性差,导致测试脚本的可读性差。(5)录制的测试代码过于庞大而且应变性差,导致测试脚本的复用......
  • Python高频面试题——装饰器(带大家理解装饰器的本质)
    装饰器概念装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限验证等场景,装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可......
  • 一文搞定Pandas核心概念之Series
    Pandas概述Pandas是Python语言的一个扩展程序库,他是一个强大的分析结构化数据的工具集,基础是Numpy,用于数据分析。安装Pandas命令:pipinstallpandasPandas的主要数据结构是Series(一维数据)与DataFrame(二维数据),Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据......
  • 一文搞定Pandas核心概念之DataFrame
     DataFrame概述DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。如下图所示:整个表格是DataFrame,每一列就是一个Series。关于Series可以参考文......
  • 干货!一文搞定无头浏览器的概念以及在selenium中的应用
     无头浏览器无头浏览器,即HeadlessBrowser,是一种没有界面的浏览器。它拥有完整的浏览器内核,包括JavaScript解析引擎、渲染引擎等。与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是我们依然可以用GUI测试框架的截图功能截取它执行中的页面。在这里强调一下......
  • 五分钟理解IaaS、PaaS和SaaS
     概念IaaS:基础设施服务,Infrastructure-as-a-servicePaaS:平台服务,Platform-as-a-serviceSaaS:软件服务,Software-as-a-service三者细节展现三者的主要区别是企业需要自己提供的东东不同,IaaS企业需要提供的内容较多,而到了SaaS企业则不需要提供什么东东了,如下图所示:一个生动的例子从Iaa......
  • 搞定!详解MeterSphere 配置外部Mysql5.7的全过程
     最近试用了MeterSphere做接口测试平台,感觉使用起来非常方便,最重要的是开源免费!官方文档还是非常详细的,这里我就不多介绍了,感兴趣的同学可以参考:https://metersphere.io/docs/v2.x/经过讨论,决定在测试团队推广。由于公司数据库管理策略,数据库必须通过dba统一管理,所以需要MeterSph......
  • 五分钟k8s入门到实战-应用配置
    背景在前面三节中已经讲到如何将我们的应用部署到k8s集群并提供对外访问的能力,x现在可以满足基本的应用开发需求了。现在我们需要更进一步,使用k8s提供的一些其他对象来标准化我的应用开发。首先就是ConfigMap,从它的名字也可以看出这是用于管理配置的对象。ConfigMap不......
  • 转 五分钟了解互联网Web技术发展史
    简介:1994年,万维网联盟(W3C,WorldWideWebConsortium)成立,超文本标记语言(HTML,HyperTextMarkupLanguage)正式确立为网页标准语言,我们的旅途从此开始。本文将沿着时间线,从**发现问题-解决问题**的角度,带领大家了解Web技术发展的关键历程,了解典型技术的诞生以及技术更迭的缘由,思......
  • Dell电脑安装Linux,一步搞定
    在这个数字化时代,Linux操作系统的应用越来越广泛。作为一个开源的操作系统,Linux不仅具有高度的稳定性和安全性,还拥有丰富的软件资源和强大的自定义能力。对于使用Dell电脑的用户来说,安装Linux是一个不错的选择。那么,如何在Dell电脑上安装Linux呢?下面小编将为你一一解答。一、了解......