(五)性能测试理论知识-参数化
-
性能测试术语-参数化
什么时候需要参数化?
有没有遇到下面两个场景:
1、我们在调用接口的时候,有入参,那参数里面的值如果经常变化的话,就得每次去改了,很麻烦,这时候我们就把需要经常变的值,改成可以变化的或者是咱们提前设置好的一些值,这样的话,调用的时候就不用每次都改它的值了。
2、我们在调用接口的时候,有重复的信息,我们可以参数化减少工作量
3、从上一个执行的响应数据中获取某个值,作为下一个用例的参数响应数据
5种常见的参数化方式
一、用户参数
1.使用场景
适用于参数取值范围很小的场景,例如测试模拟较少用户登陆某系统交易。
2.操作步骤:右击(如测试计划、线程组、http请求等)> 添加 > 前置处理器 > 用户参数

3.设置参数:通过【添加变量】添加 account 和password两个变量,注意勾选每次迭代更新一次,否则每次都使用同样的数据

4.参数引用:在接口请求参数中通过**${变量名}**的方式来引用变量

由于在【用户参数】中添加了两组数据,而线程组中的线程数只设置了1个,那么执行登录接口的时候取的值为第一组数据(admin/123456)。


5.总结
这种参数化方式较简单,但数据范围有限,适用场景也少。
2、用户定义的变量
1.使用场景
更多用于设置全局变量,常用于数据库地址,测试环境、开发环境地址等常量配置。
我们可以看到前面一篇文章的例子中,数据文件login_data.csv的后三个参数都是一样的,我们可以把这些变量提取出来,放在一个公共的位置。
有两个地方可以设置这种公共的变量:
- 一种是在“测试计划”界面中设置“用户自定义变量”。
- 一种是在配置元件中的“用户自定义变量”组件中添加变量。
2.操作步骤:
1)、方法一:测试计划-->添加-->配置元件-->用户定义的变量



2)、方法二:在【测试计划】中添加用户定义


3、CSV数据文件设置
1.使用场景
这种方式是通常所指的参数化。数据存储在文件中,该种参数化方式取值范围大,灵活性强,适用于大量测试数据时的使用。
2.结合上面的【用户定义的变量】来一个串联的使用的实际案列
(1)测试计划内包含的元件添加元件操作步骤:
1、创建测试计划,并且在测试计划中添加“用户自定义变量”数据。
2、创建线程组:选中“测试计划”右键—>添加—>线程(用户)—>线程组。
3、在测试计划(也可以是线程组)里面添加配置元件CSV Data Set Config组件:选中“线程组”右键—>添加—>配置元件—> CSV数据文件设置。
4、在线程组里面,添加取样器“HTTP请求”组件:选中“线程组”右键—>添加—>取样器—> HTTP请求。
5、在线程组里面,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键—>添加—>监听器—>察看结果树。最终测试计划中的元件如下:

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。
(2)数据文件内容
先用Excel表格编辑所需的请求参数,内容如下:

我们需要把该文件保存为.csv格式。
最后使用Notepad++打开该文件,然后点击“编码” —> 转为UTF-8编码,防止中文乱码。
最终所得到的.csv格式文件的内容如下:

(3)测试计划界面内容
在“测试计划”界面中,把公共的变量设置“用户自定义变量”中,如下图所示:

和在“HTTP请求”组件中添加数据的操作一样,这样在该测试计划中的所有组件都可以使用这些变量。
(4)线程组元件内容
如果需要使用CSV文件中所有的数据,需要设置线程组元件的线程数或循环次数。
因为在CSV数据文件设置组件中,有Recycle on EOF和Stop thread on EOF选项的关系,所以设置线程数和循环次数都可以实现,使用数据文件中的每一组数据进行测试。

(5)CSV数据文件设置组件内容

我一般常用操作,简单说明:
- 文件名:就直接浏览选择文件即可,也就是使用数据文件的绝对路径。
- 文件编码选择UTF-8。
- 变量名称:就是把数据文件的每个变量名都填写上,中间用逗号分割。
- 忽略首行:选择True,如果CSV文件中首行写的是变量名称,选择忽略首行。
- 分隔符:如果CSV文件中的数据,使用的是逗号隔开,就默是默认值。如果是制表符,就用\t表示。
- 是否允许带引号?:如果变量值中有引号就选择True,没有则默认False即可。
- 其他一般默认选择。如果需求看上面说明中写的很详细,按工作中实际情况选择。
(6)HTTP请求组件内容
在JMeter中使用参数化变量的格式:${变量名}。
编辑登录接口内容,信息如下图所示:

我们可以看到${变量名}中的引用变量名,是以CSV数据文件设置组件中变量名称中定义变量名为准。如果不在变量名称栏中定义任何内容,就以数据文件中的标题列名为引用变量名。
(7)脚本运行结果
该测试脚本运行结果如下图所示:

4、正则表达式
1.使用场景
从上一个执行的响应数据中获取某个值,作为下一个用例的参数响应数据
2.操作步骤:
从上一个接口中的响应数据,获取需要的值,具体步骤如下:
1)、右击测试计划——添加——Threads(Users)——线程组
2)、右击测试计划——添加——监听器——察看结果树
3)、右击测试计划——添加——监听器——聚合报告
4)、右击线程组——添加——sampler——Http请求
5)、点击http请求完成对接口的定义
6)、运行,点击查看结果树,确定正则表达式提取内容

下一个响应获取上一个请求的响应数据,具体步骤如下:
1)、右击http请求——添加——后置处理器——正则表达式提取器
2)、点击正则表达式提取器,完成填写
3)、右击线程组——添加——sampler——Http请求
4)、点击http请求完成对接口的定义,下面就可以通过参数${id}来获取内容了,其中id就是方才添加的正则表达式的引用名称
5) 、运行,点击查看结果树,确定是否正确。


正则表达式自己认为是没问题的,可是就是跑起来有问题,百思不得其解,究竟是数据问题还是表达式的问题,有一个“神器”-----Debug Sampler,什么都不用填写,直接在【查看结果】
Debug Sampler会把我们自定义的变量输出在response data中,方便我们调试的时候使用




浙公网安备 33010602011771号