1.幂等测试

1.幂等测试

1.1.定义

任意多次执行所产生的影响与首次执行相同,不用担心重复执行会对系统造成改变

1.2.测试场景

同样的请求可能需要做重试(重复调用)的情况

涉及利益类业务比如支付、结算等

1.3.实现思路

唯一主键实现幂等性

利用数据库的数据表主键唯一约束+唯一索引的特性,在插入时会校验数据是否存在,只会有一条数据插入成功,其他数据则插入失败,保证数据幂等。

乐观锁实现幂等

取数据时认为不会有人修改,不会对该记录加锁,在提交更新时判断数据是否已经被修改,检查是否违反数据完整性

例如添加一个版本号version字段,增加版本标识,当读取数据时同步读取该字段,当要更新数据时对该版本号+1,提交更新时判断表内记录的version是否与取出来时的版本号一致,如果一致则更新,否则无法更新。

因为乐观锁对读的影响较小,所以适用于读多写少的情况。

悲观锁实现幂等

每次拿数据时都对数据加锁,使得数据处于锁定状态

执行SQL 语句对记录加锁使其无法操作,直到事务提交后解锁,才能被其他用户操作

如果事务逻辑比较复杂耗时较久,会导致依赖该数据的请求堆积,影响整体响应时长。另外还需要注意预防死锁的出现。

Token实现幂等

服务器生成一个全局唯一ID,客户端进入表单页面时申请一个唯一令牌存储在本地,服务端存储令牌token值,发送表单请求时header带上token令牌,服务端验证token是否存在,存在则删除token,后续执行相关业务逻辑;不存在则响应客户端重复提交提示语。

1.4.测试步骤

明确测试接口/测试功能

确定接口测试/功能测试范围

明确什么样的行为是被认为幂等的,比如多次调用接口不会改变结果或状态

准备测试数据

创建测试数据,尽可能覆盖可能存在的输入情况,例如边界值和异常值。

编写测试脚本

根据测试数据编写测试脚本,构建测试请求,在脚本中模拟多次发起重复请求,保证每次发起的入参完全相同。

执行测试

发起第一次请求并记录返回结果和系统状态

发起多次相同请求,观察记录返回结果和系统状态

在执行测试时同时监控系统日志,观察在测试过程中是否有异常日志或错误信息

分析测试结果

将多次请求结果跟第一次请求结果做对比,保证结果一致

对比系统最终状态和第一次请求后的系统状态,确保一致

如果存在相关差异需要记录并分析可能的原因

优化和再测试

根据测试结果和原因分析,修复问题后进行测试回归,验证修复效果

posted @ 2024-11-15 13:30  ShadowMurloc  阅读(75)  评论(0)    收藏  举报