简介

接口测试是目前最主流的自动化测试手段,它组合不同的参数向服务器发送请求,接受和解析响应结果,通过测试数据的交换逻辑来验证服务端程序工作的正确性。我们在测试过程中需要考虑不同的输入组合,来覆盖不同的测试范围;除此之外,系统中往往存在一些有唯一性校验的接口,不允许重复录入关键字段(eg: 用户名,身份证…),针对这些有唯一性校验的接口,需要在每次运行时动态输入不同的数据。

为了解决上述问题,Jmeter提供了一些参数化的工具,最常用的有RandomString函数,CSVRead函数以及CSVDataSetConfig。

RandomString函数

Jmeter通过RandomString函数助手可动态生成字符串,它包括三个变量:

• Random string length:生成的String长度

• Chars to use for random string generation:用于生成String的字符集

• Name of variable in which to store the result (optional):可选,指定存储生成的String变量名,供后续接口调用。

通过RandomString可以生成任意长度的指定字符集的字符串,除了生成随机字符串,还可以基于RandomString拼接扩展特定格式的字符串。

比如有些系统会校验手机号前三位,即可通过RandomString生成后8位数字,然后拼接满足需求的前三位数字组合。

RandomString函数非常强大,几乎可以实现接口单个请求参数的所有参数化工作,但在实际应用中,有时候不同请求参数有一定的关联性,此时无法通过RandomString来解决多请求参数之间的关联性问题,需要引入CSV组件来解决。

CSVRead函数

CSVRead函数适用于一组关联请求参数的场合,比如要选择用户的收获地址,往往需要选择省->市->区,而省市区这三个请求参数之间有关联性,此时可以通过自定义一组满足关联性要求的数据,将其写入CSV文件,然后在Jmeter中通过CSV函数来读取CSV文件。

Jmeter中通过函数助手可引入CSVRead函数的支持,它有两个参数:

• CSV File to get Values from: 需要读取的CSV文件

• CSV文件列号:从0开始

CSVRead函数有一些局限性,CSVRead不可指定编码,跨系统调用时可能出现乱码;另外多次循环同一个请求时会重复读取第一行数据,只有当线程数设置为多个时,才会读取多行数据。

CSV Data Set Config配置元件

CSV Data Set Config 是CSVRead函数的升级版组件,它可以配置更多选项来控制读取的过程:

• Filename:CSV文件路径

• File Encoding:编码格式,中文系统下生成的CSV文件编码使用GBK (英文系统使用UTF-8)

• Variables Name:生成的变量名,通过顺序和Excel列数据对应,指定变量名以后DebugSampler中可查看变量值

• Delimiter:分割符,CSV默认的分割符是逗号,tab分割符用

• Allow quoted data: 是否允许双引号内的拆分,设置为Ture时,“a,b”,c 会被解析为3列数据,设置为False时,会被解析为2列数据,默认False

• Recycle on EOF:参数文件是否循环遍历,设置为False时,文件遍历完则终止提取,请求的参数值为EOF,默认True。无论是设置多线程,还是多次迭代,都会循环遍历CSV文件。

• Stop thread on EOF:参数值为EOF时,是否停止执行线程。当 Recycle on EOF 设置为 true 时,此项不起任何作用。当且仅当 Recycle on EOF? 为 false 时,此项配置才生效。默认为False

• Sharing mode:共享模式,All threads:参数文件对所有线程共享,包括同一测试计划中的不同线程组;Current thread group:只对当前线程组中的线程共享;Current thread:仅对当前线程获取。

以上三个组件基本涵盖了接口自动化中参数化的绝大多数功能,对于更复杂的参数化需求,可通过编码方式实现脚本,并通过Jar包的方式引入脚本支持。

作  者:Testfan Kitty

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

接口测试参数化详解(Jmeter)的更多相关文章

  1. 接口测试断言详解(Jmeter)

    接口测试是目前最主流的自动化测试手段,它向服务器发送请求,接收和解析响应结果,通过验证响应报文是否满足需求规约来验证系统逻辑正确性.接口的响应类型通过Content-Type指定,常见的响应类型有: ...

  2. LoadRunner参数化详解

    LoadRunner参数化详解 距离上次使用loadrunner 已经有一年多的时间了.初做测试时在项目中用过,后面项目中用不到,自己把重点放在了工具之外的东西上,认为性能测试不仅仅是会用工具,最近又 ...

  3. 详解JMeter正则表达式

    详解JMeter正则表达式(1) 1.概览 JMeter中包含范本匹配软件Apache Jakarta ORO .在Jakarta网站上有一些关于它的文档,例如a summary of the pat ...

  4. 详解JMeter函数和变量(转载)

    详解JMeter函数和变量(1) JMeter函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用.函数调用的语法如下: ${__functionName(var1,var2,var ...

  5. 全网最全最细的jmeter接口测试教程以及接口测试流程详解

    一.Jmeter简介 ​ Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试. Jmeter具备高移植性,可以实现跨平台运行. Jmeter可以实 ...

  6. 基于python的直播间接口测试实战 详解结合项目

    基于python的直播间接口测试详解 一.基本用例内容描述 以设置白名单 /advisor/setUserWhiteList.do接口为例,该方法为POST at first,先要导入一些常用到的模块 ...

  7. Jmeter接口测试流程详解(中科软测认证中心)

    1.jmeter简介 Jmeter是由Apache公司开发的java开源项目,所以想要使用它必须基于java环境才可以: Jmeter采用多线程,允许通过多个线程并发取样或通过独立的线程对不同的功能同 ...

  8. jmeter接口测试json详解

    本篇围绕jmeter(压力测试工具),请求json与返回json串处理进行解析,初入测试,理解如有不对的地方请大家及时提点~~ 在这里jmeter工具的使用不在做解释 首先说下乱码问题,在这里无脑5步 ...

  9. LoadRunner参数化详解(转)

    距离上次使用loadrunner 已经有一年多的时间了.初做测试时在项目中用过,后面项目中用不到,自己把重点放在了工具之外的东西上,认为性能测试不仅仅是会用工具,最近又想有一把好的利器毕竟可以帮助自己 ...

随机推荐

  1. 使用django-cors-headers 来解决跨域问题

    在settting里面这样配置 ALLOWED_HOSTS = ["*"] # Application definition INSTALLED_APPS = [ 'django. ...

  2. leetcode 82 删除排序列表中的重复元素II

    与83类似,不过需要注意去除连续的重复片段的情况,如2 2 3 3这种情况,以及[1,1]这种情况下最终的cur为NULL,因此不能再令cur=cur->next; /** * Definiti ...

  3. 多变量线性回归时使用梯度下降(Gradient Descent)求最小值的注意事项

    梯度下降是回归问题中求cost function最小值的有效方法,对大数据量的训练集而言,其效果要 好于非迭代的normal equation方法. 在将其用于多变量回归时,有两个问题要注意,否则会导 ...

  4. Ubuntu系统下各种报错杂烩(持续更新)

    在Github时报Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hos ...

  5. jenkins与docker(DevOps二)

    Jenkins官网 https://jenkins.io/download/ centos 7安装Docker https://www.cnblogs.com/stulzq/p/7743073.htm ...

  6. 关于JS的prototype详解

    JavaScript面向对象 构造函数和原型链 首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类.我们所常见的类包括 ...

  7. nginx源码包安装

    一.下载码源包 1. 获得源码包途径官方网站,可以获得最新的软件包 Nginx: www.nginx.org 2.具体实例展示(tengine) 下载源码包,准备软件包 准备编译环境如编译器gcc.m ...

  8. websocket服务器推送 (node+express+vue+socket)

    简介: 此项目需要懂一点node.express 功能: 1.前端用户登录,查看服务端推送的消息,用户只能在一个地方登录,也就是单点登录 2.服务端首先登录,上传需要推送的信息文本,后台读取文本后,存 ...

  9. CentOS7安装配置MariaDB(mysql)数据主从同步

    CentOS7安装MariaDB并配置主从同步 环境声明: 防火墙firewalld及SElinux均为关闭状态 主库节点:192.168.0.63 从库节点:192.168.0.64 配置主库节点: ...

  10. centoss7下将命令加开机服务

    https://www.cnblogs.com/hxun/p/11075755.html