右击测试计划 - 添加 - 线程(用户)- 线程组 >> 右击线程组 - 添加 - 取样器 - HTTP请求
右击HTTP请求 - 添加 - 配置元件 - HTTP信息头管理器
右击HTTP请求 - 添加 - 监听器 - 查看结果树
右击HTTP请求 - 添加 - 断言 - 响应断言
各个匹配模式含义如下:
JMeter支持以下类型变量:
右击HTTP请求 - 添加 - 前置处理器 - 用户参数。例如:设置变量名为app,值为weather.today,在请求时引用变量格式为:${app}
JMeter由许多内置的函数,可以生成随机数。
点击菜单栏”工具“选项 - 函数助手对话框 - 下拉选择Random函数。
什么是Bean Shell?
BeanShell是一种完全符合Java语法规范的脚本语言,并且拥有自己的一些语法和方法;
BeanShell是一种松散类型的脚本语言(这点和JS类似);
BeanShell是用Java写出的一个小型的、免费的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简;
BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和与语法。
官网:https://beanshell.github.io/intro.html
JMeter有哪些Bean Shell?
BeanShell常用内置变量:
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
vars -(JMeterVariables)操作JMeter变量这个变量实际引用了JMeter线程中的局部变量容器,本质上是Map)它是测试用例与BeanShell交互的桥梁,常用方法:
//定义JMeter变量
vars.put(String key, String value);
//从JMeter中获取变量
vars.get(String key);
log - 写入信息到JMeber.log文件
log.info("hello JMeter!");
BeanShell实践案例
右击HTTP请求 - 添加 - 前置处理器 - BeanShell预处理程序
CSV数据文件变量是指从外部csv文件读取数据出来作为变量。
设置步骤:
问题思考:接口测试过程中经常需要接口之间关联调用,比如获取上一个接口的返回值,作为另一个接口的请求参数,那么该如何处理呢?
操作案例:从“实时天气-当天”请求的响应数据中匹配weaid的值,然后创建“实时天气-未来7天”请求引用weaid作为参数。
设置步骤:右击HTTP请求 - 添加 - 后置处理器 - 正则表达式提取器,字段说明如下:
$num$
引用起来,如果在正则表达式中有多个匹配数据,num表示匹配到第几个值给变量,如:$1$
表示匹配到的第1个值存储在变量中。正则表达式说明:
CSV数据文件:
设置步骤:右击线程组 - 添加 - 配置元件 - HTTP请求默认值
设置步骤:右击线程组 - 添加 - 配置元件 - HTTP信息头管理器
设置步骤:右击线程组 - 添加 - 逻辑控制器 - 循环控制器
设置步骤:右击循环控制器- 添加 - 配置元件 - CSV数据文件设置
设置步骤:右击循环控制器 - 添加 - 逻辑控制器 - IF控制器
设置步骤:右击IF控制器 - 添加 - 取样器 - HTTP请求
设置步骤:右击HTTP请求 - 添加 - 断言 - 响应断言
设置步骤:右击HTTP请求 - 添加 - 监听器 - 查看结果树,运行结果如下:
添加IF控制器
在IF控制器下添加HTTP请求
给HTTP请求添加响应断言
给HTTP请求添加查看结果树,运行结果如下:
很多时候,处于安全考虑我们的接口并不希望对外公开,这个时候就需要使用授权(Authorization)机制。授权过程验证您是否具有访问服务器所需数据的权限。当发送请求时,您通常必须包含参数,以确保请求具有访问和返回所需数据的权限。JMeter提供授权类型,可以轻松地在JMeter本地应用程序中处理身份验证协议。
基本身份验证是一种比较简单的授权类型,需要经过验证的用户名和密码才能访问数据资源。这就需要我们输入用户名和对应的密码。
实践案例
请求接口为:http://httpbin.org/basic-auth/{username}/{password},设置用户名为test,密码为2022
Digest Auth是一个简单的认证机制,最初是为HTTP协议开发的,因此也常叫做HTTP摘要。其身份验证机制非常简单,它采用哈希加密方法,以避免用明文传输用户的口令。摘要认证就是要核实参与通信的两方都知道双方共享的一个口令。
实践案例
请求接口为:http://httpbin.org/digest-auth/{qop}/{username}/{password},{qop}这个参数规定server支持哪种保护方案。client能从列表中(auth, auth-int)选择一个。
禁用HTTP授权管理器则会运行失败,如下:
批量执行完接口测试之后,我们需要查看测试报告,在之前单个接口调试我们是通过”查看结果树“查看结果,但是当大批量执行接口测试之后依旧这样查看肯定会很低效,那么该如何设置呢?
聚合报告是一个比较精简的报告元件,可以查看每个接口的性能情况与执行结果。
设置步骤:右击线程组 - 添加 - 监听器 - 聚合报告
报告各个参数含义如下:
有时候我们需要将测试报告以HTML附件形式发送给各个项目成员,那么需要生成HTML报告。JMeter3.0以后引入了Dashboard Report,用于生成HTML格式图形化报告的扩展模块。
生成步骤:
打开cmd进入jmeter\bin目录执行命令:jmeter -n -t E:\JMeterProject\report.jmx -l E:\JMeterProject\report.jtl -e -o E:\JMeterProject\report
命令的参数:
-n:以非GUI形式运行JMeter(直接用命令行模式启动)
-t:jmeter脚本路径
-l:result.jtl运行结果保存路径(.jtl)此文件必须不存在
-e:在脚本运行结束后生成html报告
-o:用于存放html报告目录(目录需存在),不加该参数默认生成到bin\report-output
生成的测试报告样式如下: