(五)性能测试理论知识-参数化

首先感谢各位前辈的博客分享,把点滴学测试过程整理成文字,与感兴趣者分享,勿多怪咎。
  • 性能测试术语-参数化


什么时候需要参数化?

  有没有遇到下面两个场景:

  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中,方便我们调试的时候使用

 

 

 

 

posted @ 2022-08-08 12:45  履冰  阅读(688)  评论(0)    收藏  举报