1.幂等测试
1.幂等测试
1.1.定义
任意多次执行所产生的影响与首次执行相同,不用担心重复执行会对系统造成改变
1.2.测试场景
同样的请求可能需要做重试(重复调用)的情况
涉及利益类业务比如支付、结算等
1.3.实现思路
唯一主键实现幂等性
利用数据库的数据表主键唯一约束+唯一索引的特性,在插入时会校验数据是否存在,只会有一条数据插入成功,其他数据则插入失败,保证数据幂等。
乐观锁实现幂等
取数据时认为不会有人修改,不会对该记录加锁,在提交更新时判断数据是否已经被修改,检查是否违反数据完整性
例如添加一个版本号version字段,增加版本标识,当读取数据时同步读取该字段,当要更新数据时对该版本号+1,提交更新时判断表内记录的version是否与取出来时的版本号一致,如果一致则更新,否则无法更新。
因为乐观锁对读的影响较小,所以适用于读多写少的情况。
悲观锁实现幂等
每次拿数据时都对数据加锁,使得数据处于锁定状态
执行SQL 语句对记录加锁使其无法操作,直到事务提交后解锁,才能被其他用户操作
如果事务逻辑比较复杂耗时较久,会导致依赖该数据的请求堆积,影响整体响应时长。另外还需要注意预防死锁的出现。
Token实现幂等
服务器生成一个全局唯一ID,客户端进入表单页面时申请一个唯一令牌存储在本地,服务端存储令牌token值,发送表单请求时header带上token令牌,服务端验证token是否存在,存在则删除token,后续执行相关业务逻辑;不存在则响应客户端重复提交提示语。
1.4.测试步骤
明确测试接口/测试功能
确定接口测试/功能测试范围
明确什么样的行为是被认为幂等的,比如多次调用接口不会改变结果或状态
准备测试数据
创建测试数据,尽可能覆盖可能存在的输入情况,例如边界值和异常值。
编写测试脚本
根据测试数据编写测试脚本,构建测试请求,在脚本中模拟多次发起重复请求,保证每次发起的入参完全相同。
执行测试
发起第一次请求并记录返回结果和系统状态
发起多次相同请求,观察记录返回结果和系统状态
在执行测试时同时监控系统日志,观察在测试过程中是否有异常日志或错误信息
分析测试结果
将多次请求结果跟第一次请求结果做对比,保证结果一致
对比系统最终状态和第一次请求后的系统状态,确保一致
如果存在相关差异需要记录并分析可能的原因
优化和再测试
根据测试结果和原因分析,修复问题后进行测试回归,验证修复效果

浙公网安备 33010602011771号