目录
一、目标
二、环境配置
三、实现成果
四、Jmeter介绍
五、Jmeter环境搭建
六、Jmeter目录介绍
七、Jmeter结构图
八、Jmeter基础操作
8.1 启动Jmeter,
8.2Jmeter页面如下:
8.3测试计划
8.4.添加线程组
8.5.添加http请求
8.6.添加察看结果树
8.7.Jmeter参数化
8.8、添加断言
8.9.添加断言结果
九、Jmeter进阶操作
9.1.如何实现Jmeter使用POST方法发送json数据
9.2.如何实现数据的关联
9.3.for-each控制器的使用
9.4.jmeter性能测试场景化操作
9.5.Jmeter聚合报告分析
9.6.Jmeter脚本封装以及执行的顺序
9.7.Jmeter命令行操作生成性能测试报告
十、Jmeter+ant+Jenkins实现自动化接口测试
10.1 Ant配置
10.2 Jenkins 搭建(By tomcat)
1.Jmeter介绍
2.Jmeter+ant+jenkins实现接口自动化测试集成
备注:版本选择可以自行官网下载配置,以上为本人电脑配置
1.生成html报告如下:
2.邮件通知如下:
jmeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如LoadRunner),在功能的全面性上就稍显不足。
1.Jmeter环境建
Jmeter下载安装,官网地址:http://jmeter.apache.org/download_jmeter.cgi
备注:jdk下载以及环境变量配置自行操作
Bin目录:存放可执行文件和配置文件
Jmeter.bat: windows系统中JMeter的启动文件
ApacheJMeter.jar Java环境下的JMeter启动文件
Jmeter.log:日志文件
Jmeter.sh: linux系统中JMeter的启动文件
Jmeter.properties:系统配置文件
Jmeter-server.bat: windows分布式测试要用到的服务器配置
Jmeter-serve: linux分布式测试要用到的服务器配置
lib/ext/目录 就扩展插件:在配置元件中可以看到到的组件
extras目录 主要是用来做ant自动化和报告模板
点击Jmeter目录下的"jmeter.bat"文件,D:\Develop\apache-jmeter-4.0\bin\jmeter.bat
备注:Jmter4.0版本左侧的树形导航仅包含“测试计划”,“无工作台”
作用:
右键点击“测试计划” -> “添加”-> “Threads(Users)” -> “线程组”
右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求”
接口地址:http://www.baidu.com/s?ie=utf-8&wd=jmeter接口测试
备注
1.自动重定向:仅对get方法有效,可以自动跳转到请求的新url,但不会显示转换url的详情
2.跟随重定向:针对get、post均有效,可以显示链接的请求过程
右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”
这时,我们运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为”jmeter接口测试_百度搜索
方式一:
添加用户自定义变量
我们可以添加用户自定义变量用以Http请求参数化,右键点击“线程组” -> “添加” -> “配置元件” -> “用户定义的变量”:
新增一个参数wd,存放搜索词"自动化测试"
并在Http请求中使用该参数,格式为:${wd}
方式二:"CSV 数据文件设置"
1.新建一个csv文件,保存如下数据:注意使用notepad编辑,将其转换为utf-8编码方式,否则中文在jmeter中显示乱码
2.右键点击“线程组” -> “添加” -> “配置元件” -> “CSV 数据文件设置”:
在Http请求中使用该参数,格式为:${keyword} ,并运行可以在结果树中查看到如下结果,则表示已从csv文件中读取对应的参数
右键点击“HTTP请求” -> “添加”-> “断言” -> “响应断言”
校验返回的文本中是否包含搜索词,添加参数${keyword}到要测试的模式中:
右键点击“HTTP请求” -> “添加”-> “监听器” -> “断言结果”,然后运行测试,即可看到断言的结果
添加"http信息头管理器”
右键点击“线程组”->"添加"->"配置元件"->"http信息头管理器",添加字段:Content-type:application/json
在http请求中选择"BodyData",编写Json数据
方式一:使用后置处理器,"正则表达式提取器"
右键点击“http请求”->"添加"->"后置处理器"->"正则表达式提取器"
(1)引用名称:下一个请求要引用的参数名称,如填写authld,则可用${authld}引用它。
(2)正则表达式:左边界(.+?)右边界
():括起来的部分就是要提取的。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
(3)模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$1$$2$等等,表示解析到的第几个值给title。如:$1$表示解析到的第1个值
(4)匹配数字:0代表随机取值,-1代表全部取值,通常情况下填0
(5)缺省值:如果参数没有取得到值,那默认给一个值让它取,我填的Error。
* 0 表示随机
* -1 表示全部
* 1表示第一个
* 2表示第二个
* ......
测试正常表达式:
引用提取的变量如下:
练习:
查看提取变量的结果可以使用debug Samper
使用表达式:"name":"(.+?)","code":(.+?),
使用模板:$0$,提取包含表达式在内的字符串。如下:
使用模板:$1$,提取包含表达式在内的字符串。如下:
使用模板:$2$,提取包含表达式在内的字符串。如下:
使用模板:$1$$2$,提取包含表达式在内的字符串。如下:
此时的则把2个(.*?)所匹配的内容拼接起来"city=江苏省320",要引用值,可以使用${city_1},${city_2}
方式二:使用后置处理器,"JSON Extractor"
右键点击“http请求”->"添加"->"JSON Extractor"
例如:在接口1中获取比赛id,然后在接口2中使用比赛id,获取当前节目的状态
在接口二中引用变量时,使用${sdspMatchId_1}
使用场景:循环使用变量
例如:接口二中的参数是动态获取接口一的返回的变量
在接口一中,提取的所有赛事的id
添加ForEach控制器
右键点击“线程组”->"添加"->"逻辑控制器"->"ForEach控制器"
在http请求中的变量引用forEach中的输出变量名${competitionid_mip_prd}
在结果树中查看到如下结果,forEach控制器下的http请求会遍历所有的competitionid
添加"Stepping Thread Group"
右键点击"测试计划"->"添加"->"Threads(Users)"->"Stepping Thread Group"
如下图:
(1)共30个线程即30个虚拟用户,每10s启动10个线程,然后运行20s
(2)启动30个线程后在持续运行120s
(3)每3s停止10s线程
备注:Jmeter默认没有"Stepping Thread Group",线程组,需要安装插件
(1):首先下载Jmeter插件管理器"jmeter-plugins-manager-1.3.jar",地址:https://jmeter-plugins.org/install/Install/
(2):下载完成后,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可。
启动jemter,点击选项,最下面的一栏,如下图所示:
启动插件管理器-选择"Available Plugins" -选择"jpgc-Standard Set"->点击"Apply Changes and Restart Jmeter",安装即可
右键点击“线程组”->"添加"->"监听器"->"聚合报告"
聚合报告参数详解:
执行顺序
非GUI界面,命令说明:
-h 帮助
-n 非GUI模式
-t 指定要运行的 JMeter 测试脚本文件
-l 记录结果的文件 每次运行之前,(要确保之前没有运行过,即xxx.jtl不存在,不然报错)
-r Jmter.properties文件中指定的所有远程服务器
-e 在脚本运行结束后生成html报告
-o 用于存放html报告的目录(目录要为空,不然报错)
需要修改报告的输出格式:使用CSV,修改Jmeter目录下的"jmeter.properties"文件,例如:
"F:\接口\jmeter课件资料\apache-jmeter-4.0\bin\jmeter.properties"
修改如下字段:
jmeter.save.saveservice.output_format=csv
命令:
jmeter -n -t E:\project\智慧零售\测试工作\接口\平台接口.jmx -l result.jtl -e -o E:\project\智慧零售\测试工作\接口\html
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Creating summariser
Created the tree successfully using E:\project\智慧零售\测试工作\接口\平台接口.jmx
Starting the test @ Thu Oct 10 15:16:17 CST 2019 (1570691777018)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary = 29 in 00:00:01 = 38.7/s Avg: 20 Min:0 Max: 133 Err: 8 (27.59%)
Tidying up ... @ Thu Oct 10 15:16:18 CST 2019 (1570691778190)
... end of run
19038992@CNHQ-19038992N E:\
报告如下:
1.下载ant
2.下载完成后配置ant的环境变量
3.Jmeter脚本已经录制好了,并测试通过,存在(xxx.jmx)脚本
4.将Jmeter所在的目录下extras子目录的ant-jmeter-1.1.1.jar复制到Ant所在目录lib目录下,这样运行Ant时才能找到"org.programmerplanet.ant.taskddfs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本
5、jmeter默认保存的是.csv格式的文件,所以我们先设置下bin/jmeter.properties文件内存,保存
jmeter.save.saveservice.output_format=xml
6.主要逻辑思路:F:\Test\apiTest\script.jmx脚本,生成.jtl文件放入
F:\Test\apiTest\resultlog\jtl文件中,ant在将相应的文件转换为对应的html文件放入F:\Test\apiTest\resultlog\html中
7.ant的编译文件build.xml 文件:
This email was sent automatically by ANT. Please check the automation test report. Thank you!
生成报告如下:
1、 Jenkins官网https://jenkins.io/download/下载最新版本jenkins.war
2、将jenkins.war 放到D:\Develop\tomcat7\webapps,目录下:
3.启动tomcat 服务:"startup.bat"
4、出现如下信息,则表示Jenkins已启动OK
5.在浏览器中输入地址:http://localhost:8080/jenkins/
6.新建任务
任务配置:
每行由 5 个值组成(空格或TAB分隔),分别表示 分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-7, 0/7=周日)
使用ant执行脚本
保存后,点击Build now
编译完成后可以点击查看控制台的输出如下:
生成的html报告如下: