设计jmeter接口自动化测试框架通用参数替换方案

在这里插入图片描述

背景

在实现接口自动化测试的时候,无论如何设计,都会走上数据驱动之路,最终归结于参数化/参数关联的问题上来,做这类自动化的最终问题分两类:一类技术类、一类业务类,何为技术、业务呢?

业务流程,即请求接口的顺序、数据流向,在框架中体现于测试用例的设计,若是单接口只关注入参,若是单接口则需关注接口之间的业务关联,即请求接口有先来后到,否则数据就无法对应上!

技术呢,就是去实现业务场景测试中所需要的处理过程,如组装接口请求、参数关联、日志系统等等,最终不得不提一句的是高内聚低耦合:保证单/多接口之间减少关联性,发挥一个函数的最大功效。

设计

在做自动化测试框架设计的时候,往往我们会把一些hard code的数据进行参数化,动态从接口响应或通过函数实现替换的过程再发起请求。譬如下图:
在这里插入图片描述

从请求地址来看,这是一个单接口的测试用例设计,登录接口,分析一下,其实它不一定需要参数化设计,为啥,因为它只有一种成功的期望结果,唯一正确的就是它使用正确的手机号登录;那么其他错误的参数请求,只是它为什么会失败?就是我们给的参数不正确,那么只需要覆盖几种错误参数的请求即可。

那么在示例图中,如果是一个常规的业务场景:用户注册–登录–实名–绑卡–交易–查看订单–余额–退出;那么可能出现的情况是:登录的账号需是注册的账号,实名绑卡的手机号也许是注册的手机号等等; 还有交易之后的订单号是查看订单的请求参数之一,所有在线操作的接口都需要token等等,这些接口请求就是环环相扣,每一个操作直接都存在依赖关系;这时需要对入参进行参数化,实现可替代的通用方法。

实现

分享一篇JMeter关于beanshell批量处理参数的java脚本:

import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  //获取变量的值,使用一个变量接收,但此时变量接收后并不能直接作为参数使用
  //String mobile=vars.get("phone");
  //String empty=vars.get("empty");
  //String passwd=vars.get("passwd");
  //json字符串,此处是举例,应该是csv用例中的params参数;可以是从csv或其他变量元件获取
  String content =</
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值