Jmeter接口测试方法

上一篇 / 下一篇  2022-05-20 15:28:00 / 个人分类:测试

Jmeter脚本编写一般分为五个步骤:

  1. 添加线程组

  2. 添加http请求

  3. 在http请求中写入接入url、路径、请求方式和参数

  4. 添加查看结果树

  5. 调用接口、查看返回值

设置HTTP请求默认值

在有多个请求时,每个请求都需要选择http协议,填写服务器名称或者服务器ip地址,比较重复和麻烦,所以可以定义一个http请求默认值,设置所有的请求默认使用http协议,默认服务器名称或服务器ip地址。

在线程组–添加–配置元件–HTTP请求默认值,然后进行配置,并把该元件放置到请求前面。

协议:http

服务器名称或ip:httpbin.org

断言设置

针对每个请求的响应进行断言,设置步骤:选中一个请求–添加–断言–响应断言

参数设置

Jmeter支持通过Query String Parameters或者requests body请求体来传递参数。

Query String Parameters
Request body

在post请求中参数一般在body中传递,参数的格式需要在http信息头管理器中设置

添加步骤:选定请求——添加——配置元件——HTTP 信息头管理器,然后在管理器里面添加参数类型 Content-Type : application/json

变量

Jmeter支持以下类型的变量:

  • 用户自定义变量

  • 函数生成变量

  • BeanShell变量

  • 数据文件变量

用户自定义变量

设置步骤选中请求–添加–前置处理器–用户参数,设置变量名称变量值

在请求时引用变量如下所示:变量引用格式为:${user},可以在query string parameters参数中引用

函数生成变量

创建步骤:点击菜单栏选项——函数助手对话框——下拉选择

__Random()函数

BeanShell变量 

BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法

创建 BeanShell PreProcessor ,在脚本窗口输入以下代码引用${user}变量

//定义 jmeter 变量
vars.put(user,"51zxw")
//从 jmeter 中获取变量
vars.get(String key);
log:写入信息到 jmeber.log 文件
log.info(“hello 51zxw!” );

CSV数据文件变量

CSV数据文件变量是指从外部csv文件读取数据出来作为变量

设置步骤:选择请求–添加–配置元件–CSV数据文件设置,创建csv文件user_data.csv,文件内容51zxw,8888

csv数据文件设置如下:

 文件编码:UTF-8

 变量名称:user,password

 忽略首行:False

 分隔符:,

 是否允许带引号:False

 遇到文件结束符再次循环:True

 遇到文件结束符是否停止线程:False

 …

在post请求中引用数据变量如下: u s e r , {user}, user,{password}

  • CSV参数化:

user_data.csv内容如下:

51zxw,8888
51zxw1,6666
51zxw2,4444
51zxw3,5555

修改csv数据文件设置配置如下:

 文件编码:UTF-8

 变量名称:user,password

 忽略首行:False

 分隔符:,

 是否允许带引号:False

 遇到文件结束符再次循环:False

 遇到文件结束符是否停止线程:True

 …

修改线程数为4,进行测试

正则匹配

接口测试过程中经常需要接口之间的关联调用,比如上一个接口的返回值作为下一个接口的请求参数,这时就需要用到正则匹配对上一个接口的响应数据进行正则匹配提取指定的数

设置步骤:选中请求–添加–后置处理器–正则表达式提取器

正则表达式配置表

  • 引用名称:请求要引用的变量名称,如填写 result_num,则可用 result num 引用它 。 

  • 正则表达式:匹配需要的内容 。

  • ​模板:用 {result_num}引用它。

  • 正则表达式:匹配需要的内容。 

  • 模板:用 result num引用它。

  • 正则表达式:匹配需要的内容。

  • 模板:用num$引用起来,如果在正则表达式中有多个匹配数据,num 表示匹配到的第几个值给变量。

如:

1 表示匹配到的第 1 个值存储在变量中。

  • 匹配数字: 0 代表随机取值, 1 代表全部取值,

  • 缺省值:如果参数没有取得到值,那默认给一个值让它取。

案例中正则表达式说明,如num: 31,“num”: “(.*?)”

  • ()括起来的部分就是要提取的。

  • .匹配任何字符串。

  • +一次或多次。

  • ?在找到第一个匹配项后停止。

用例数据分离

测试用例数据存放在csv文件中,然后通过csv文件配置来读取用例中的数据,执行测试。

添加一个 循环控制器 步骤为:线程组–添加–逻辑控制器–循环控制器。循环控制器的作用可以控制整个用例的循环次数。默认值是1,可修改为4。

用例设计

caseSeqapiTypeapiSeqapiNamepriorityurlmethodsparameterexpected
C001Http methodsV0.9.2 GET Requests 51zxwH/getGETuser=51zxw151zxw1
C002Http methodsV0.9.2POST Requests 51zxw H /postPOSTuser=51zxw251zxw2
C003Http methodsV0.9.2GET Requests zxw2018H /getGETuser=51zxw351zxw3
C004Http methodsV0.9.2POST Request zxw666H/post POSTuser=51zxw451zxw4

用例名称变量含义:

  • ${caseSeq}:用例编号

  • ${apiType}:api 类型

  • ${apiSeq} : api 版本号

  • ${apiName}: api 名称

  • ${priority}:优先级

  • ${url}:api 路径

  • ${methods}:请求方法

  • ${parameter}: 请求参数

  • ${expectValue}:期望值,用于断言

添加一个循环控制器 步骤为:线程组——添加——逻辑控制器——循环控制器。 循环控制器的作用可以控制整

个用例循环执行的次数。默认值是 1 根据用例数量可以修改为 4

HTTP Cookie管理器

如果你有一个HTTP请求,其返回结果里面包含一个cookie,那么使用JMeterCookie管理器将会自动将该cookie保存起来,而且以后所有对该网站的请求都使用同一个cookie。每个Jmeter都有自己独立的cookie保存区域。

添加cookie管理器:选中线程组–添加–配置元件–HTTP Cookie管理器

权限设置

添加HTTP授权管理器:选中请求–添加配置元件–HTTP授权管理器

basic-auth

diagest-auth

测试报告

聚合报告

比较精简

设置步骤:选中线程组–添加–监听器–聚合报告

HTML报告

JMeter引入了Dashboard Report,用于生成HTML页面格式图形化报告的扩展模块。

生成步骤:

打开 cmd 进入 jmeter 目录 bin 目录

执行命令:

jmeter -n -t httpbin_test.jmx -l httpbin.jtl -e -o C:\Users\Shuqing\Desktop\report

命令的参数 :

  • ​-n :以非 GUI 形式运行 Jmeter

  • ​-t : jmeter 脚本路径

  • ​-l : result.jtl 运行结果保存路径(.jtl)此文件必须不存在。

  • ​-e :在脚本运行结束后生成 html 报告

  • ​-o :用于存放 html 报告的目录,不加该参数默认生成到 bin\report-output


TAG:

 

评分:0

我来说两句

Open Toolbar