学习Jmeter,这一篇就够了
Jmeter在软件测试中的常用功能,看完你应该就会了
1、Jmeter的下载安装
1.1 Jmeter的官方网址是:http://jmeter.apache.org/;下载最新的包到本地进行解压,路径按照自己的喜好自己设置;根据下图官网的提示,Jmeter是要依赖Java8的哦,不同的版本不同,根据实际情况按照好对应的Java版本。
1.2 解压到本地之后,一般常用的有2种方式启动:
1.2.1
直接启动:打开apache-jmeter-5.3\bin\jmeter.bat 批处理文件,就可打开Jmeter.
1.2.2 命令行启动:需要设置环境变量
先设置 JMETER_HOME=E:\AutoTest\apache-jmeter-5.3
再在系统变量Path中添加: %JMETER_HOME%\bin
最后还要在CLASSPATH中添加:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar.
环境变量设置完毕之后,在命名行输入jmeter即可打开Jmeter.
1.3 Jmeter中文显示:初学者直接使用中文有助于很快理解很多功能;在bin目录下打开jmeter.properties文件,将#language=en 的#注释去掉,en修改为zh_CN,保存之后重启Jmeter。
2、Jmeter的简单认识
2.1 测试计划:用来描述一个性能/接口测试脚本和场景设计,包含与本次测试所有相关的功能。也就是说,使用JMeter进行测试的所有内容都是基于一个测试计划的。
2.2 线程组:每个测试需求的必备组件,用来模拟用户并发的组件。Jmeter的每个任务都是用线程来处理的;
2.3 线程数:请求并非的数量。
Ramp-Up Period(in seconds):在多少秒内创建线程数中定义的所有线程;每秒并发数 = 线程数/RUP;
循环次数:当前线程组中的测试脚本循环运行次数;
2.4 HTTP Request Defaults:设置http请求默认值;
2.5 HTTP Cookie Manager:像浏览器一样存储和发送cookie;如果发送一个http请求的响应中包含Cookie,那么 Cookes Manager就会自动地保存这些Cookie并在所有后来发送到该站点的请求中使用这些Cookie值。
2.6 HTTP Header Manager:
2.7 HTTP Request:
2.8 Response Assertion(响应断言):
2.9 Flow Control Action(请求延迟):
2.10 Uniform Random Timer(均匀随机定时器):
2.11 View Results Tree(查看结果树):
3、Jmeter实现简单的接口测试,添加响应断言,使用百度举例。
如下就是响应断言,百度二下的断言是失败的;百度一下的断言结果是成功的,所有未打印出来。
3.1 添加HTTP信息头管理器:
再此请求,执行完查看结果树,Request Headers中添加了Content-Type:application/json类型。
3.2、通过httpbin.org (是一个开源的,支持HTTP请求和响应的测试网站)这个项目进一步做简单的练习。
3.2.1 post请求:
接口请求说明:
查看结果树:
3.2.3 put请求
4、线程用户之setUp和tearDown。
4.1 平时测试当个接口时,我们使用线程组;而setUp和tearDown线程组作用等同于unittest测试框架中的setUp和tearDown。setUp线程组一般用于登录等,而tearDown一般用于释放资源等。
4.2 setUp和tearDown及接口测试的练习,根据结果树的结果看,执行顺序就是按照setUp->测试线程组->tearDown的顺序执行。
5、配置元件之CSV数据文件配置
5.1 单线程读取CSV数据文件实现参数化
建一个如下的CSV数据:
Jmeter中CSV元件的配置:
请求界面配置:
运行结果:
5.2 逻辑控制器
5.2.1逻辑控制器之循环控制器
根据上个章节的结果,一个线程运行一次只能读取一行,如果一次要将所有行的数据都执行,就需要使用逻辑控制器的循环控制器。
执行结果:
5.2.2 逻辑控制器之if控制器
第一种写法:去掉Interpret
Condition as Variable Expression?的勾选,直接写判断条件
第二种写法:默认写法(勾选Interpret
Condition as Variable Expression?),使用带有变量的表达式。
6、监听器之查看结果树+断言结果 +聚合报告+图形结果+用表格查看结果。
6.1.1 查看结果树
查看结果树上面的很多例子都有查看结果树,这里就不做过多阐述了。
6.1.2 断言结果
之前的章节说过断言,这里要讲的是断言结果保存到本地文件中;可以选择需要保存的文件格式,有三种文件格式,Jmeter自身的文件格式jtl,还有xml及CSV,在工作中根据需要选择。
打开本地文件,保存的结果如下:
6.1.3聚合报告
6.1.4图形结果
6.1.5
用表格查看结果
7. 配置元件之用户定义的变量+抽离公共数据
7.1 用户自定义变量的2种方式
7.1.1第一种是手动添加组件,配置元件-->用户自定义变量
7.1.2第二种是测试计划内部的用户自定义变量
7.2
引用变量,JMeter产生变量的方式有10多种,前置/后置/函数助手/CSV组件/用户定义的变量/用户参数/JDBC请求等等,但是,引用变量的方式只有一种。
8. 参数传递
在工作中接口测试的时候需要传递token,,此时就需要进行参数传递,Jmeter很方便的实现参数的传递,需要用到beanshell解释器。
8.1 传参方式
8.1.1 内置变量
8.1.2 函数助手
8.2 传参形式
8.2.1 同线程组
8.2.2 跨线程组
8.3 以跨线程组举例
第一步,使用json提取器获取token:
第二步:使用BeanShell后置处理器将获取的token存储到Jmeter变量。
第三步:引用上一步的变量即可。
最后,查看结果树:传递token值成功。
9. 后置处理器
9.1 json提取器
jSON
后处理器使您能够使用
JSON-PATH 语法从
JSON 响应中提取数据。此后处理器与正则表达式提取器非常相似。它必须作为
HTTP 采样器或任何其他具有响应的采样器的子级放置.
可以在查看结果树里面进行调试。
9.2 正则表达式提取器
使用
Perl 类型的正则表达式(不过多赘述正则表达式的类型)从服务器响应中提取值。作为后处理器,此元素将在其作用域中的
请求之后执行,应用正则表达式、提取请求的值、生成模板字符串并将结果存储到给定的变量名称中。
在查看结果树种进行调试:
9.3 边界提取器
允许用户使用左和右边界从服务器响应中提取值。作为后处理器,此元素将在其作用域中的每个取样器请求之后执行,测试边界、提取请求的值、生成模板字符串并将结果存储到给定的变量名称中。
在查看结果树种调试:
9.4 其他提取器:
//CSS提取器
https://jmeter.apache.org/usermanual/component_reference.html#CSS_Selector_Extractor
//XPath提取器
https://jmeter.apache.org/usermanual/component_reference.html#XPath2_Extractor
//结果状态操作处理程序
https://jmeter.apache.org/usermanual/component_reference.html#Result_Status_Action_Handler
9.5 Json提取器+正则表达式提取器+边界提取器的应用
退出接口使用添加接口的响应数据,使用关联参数:
查看结果树:
10. 前置处理器
前置处理器主要用来处理请求前的一些准备工作,比如参数设置、环境变变量设置、加密等操作。本章介绍最常用的2种前置处理器。
10.1 JDBC预处理程序
平时在我们做测试的过程的常用场景有:第一,准备了大量的测试数据,CSV文件使用不方便,就放到数据库里,那么,测试之前需要把测试数据读取出来;第二,接口参数比较多,一个一个入参比较麻烦,从库里导出准确数据,然后进行修改调整;
10.1.1 JDBC连接说明
由于Jmeter默认没有提供MySQL的驱动,所以要自行下载,将下载好的驱动放到:lib-->ext目录下。
10.1.2 连接示例
地址写法:
// jdbc:数据库类型://地址
jdbc:mysql://127.0.0.1:3306
连接数据库,这个步骤要注意:SQL语句和类型是否对应。
示例:
10.2 BeanShell预处理程序
BeanShell 这个在调整乱码的时候用到过,大家已经知道这个组件就是编写Java代码的了,这个组件的使用场景有哪些?最直接的,接口数据加密(执行测试用例之前进行加密),常见的加密方式如下:
加密前:
加密后:
11. 常用断言
11.1 json断言
JSON断言组件适用于返回数据是JSON格式的,对JSON
文档执行验证。首先,它将解析 JSON,如果数据不是 JSON,它将失败。JSON断言有两种匹配规则:
a. 使用JsonPath的语法搜索指定的路径。如果未找到路径,它将失败。
b.如果在文档中找到 JSON 路径,并且请求对预期值进行验证,它将执行验证。对于null值,GUI 中有一个特殊的复选框。
11.2 大小断言
大小断言测试每个响应中包含正确的字节数。可以指定大小等于、大于、小于或不等于给定的字节数。
12.生成HTML报告
Jmeter生成测试报告有2种方式,GUL生成和CLI生成。
12.1 GUL生成
jmeter3.0 版本之后开始支持动态生成测试报表(3.0版本的Dashboard Report模块会中文乱码),GUI 模式下,性能测试的结果往往误差很大,因为 GUI 本身就会消耗一部分资源,所以不会使用GUI生成测试报告;功能测试下,通常只看察看结果树,运行是否正确,然后就把脚本抛到集成工具上了,也不会使用GUI生成测试报告。
打开位置
12.2 CLI生成
PS D
:\apache
-jmeter
-5.3\test
> jmeter
-n
-t test
.jmx
-l result
.jtl
-e
-o html
//命令
Creating summariser
<summary
>
Created the tree successfully using test
.jmx
Starting standalone test
@Fri Jun
2611:02:51
CST
2020(1593140571507)
Waiting
forpossible Shutdown
/StopTestNow
/HeapDump
/ThreadDump message on port
4445
summary
+11
in
00:00:08
=
1.3/
s Avg
:729
Min
:1
Max
:1107
Err
:4
(36.36%)
Active
:1
Started
:3
Finished
:2
summary
+7
in
00:00:05
=
1.6/
s Avg
:637
Min
:1
Max
:913
Err
:2
(28.57%)
Active
:0
Started
:1
Finished
:1
summary
=18
in
00:00:13
=
1.4/
s Avg
:693
Min
:1
Max
:1107
Err
:6
(33.33%)
Tidying up
...@
Fri Jun
2611:03:04
CST
2020(1593140584695)
由于测试报告是一个文件,建议和配套的HTTP服务器使用,把报告放到服务上。
生成的报告:
生成的测试报告(自带的是性能测试报告,附带很多信息),官网详解:
https://jmeter.apache.org/usermanual/generating-dashboard.html
1.2 解压到本地之后,一般常用的有2种方式启动:
1.2.1
直接启动:打开apache-jmeter-5.3\bin\jmeter.bat 批处理文件,就可打开Jmeter.
1.2.2 命令行启动:需要设置环境变量
先设置 JMETER_HOME=E:\AutoTest\apache-jmeter-5.3
再在系统变量Path中添加: %JMETER_HOME%\bin
最后还要在CLASSPATH中添加:
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar.
环境变量设置完毕之后,在命名行输入jmeter即可打开Jmeter.
1.3 Jmeter中文显示:初学者直接使用中文有助于很快理解很多功能;在bin目录下打开jmeter.properties文件,将#language=en 的#注释去掉,en修改为zh_CN,保存之后重启Jmeter。
学习Jmeter,这一篇就够了的更多相关文章
- 学习Hibernate5这一篇就够了
配套资料,免费下载 链接:https://pan.baidu.com/s/1i_RXtOyN1e4MMph6V7ZF-g 提取码:8dw6 复制这段内容后打开百度网盘手机App,操作更方便哦 第一章 ...
- 学习go语言一篇就够了(持续更新)
前言:写博客也写了差不多一年了,我更多的时候是记录自己学习的情况,有时也有自己工作上遇到的bug,自己有时候也比较迷茫,不知道怎么去写博文,我也很想别人跟我提提建议,但是有时候觉得写写博客还是很有成就 ...
- 学习git这一篇就够了!!!
git命令操作 本地库操作 初始化本地仓库 初始化命令 git init $ work % cd workspace $ workspace % mkdir WebService //创建文件夹 $ ...
- 学习MySQL这一篇就够了
MySQL 第一章 数据库概述 1.1.数据库的好处 将数据持久化到本地 提供结构化查询功能 1.2.数据库的常见概念 DB:数据库,存储数据的仓库 DBS:数据库管理系统,又称为数据库软件或者数据库 ...
- 学习JDBC这一篇就够了
配套资料,免费下载 链接: https://pan.baidu.com/s/1CKiwCbQV4FGg_4YMQoebkg 提取码: 7cn3 复制这段内容后打开百度网盘手机App,操作更方便哦 第一 ...
- SpringBoot入门学习看这一篇就够了
1.SpringBoot是什么? SpringBoot是一套基于Spring框架的微服务框架. 2.为什么需要SpringBoot 由于Spring是一个轻量级的企业开发框架,主要的功能就是用于整合和 ...
- Vue学习看这篇就够
Vue -渐进式JavaScript框架 介绍 vue 中文网 vue github Vue.js 是一套构建用户界面(UI)的渐进式JavaScript框架 库和框架的区别 我们所说的前端框架与库的 ...
- [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...
- 关于 Docker 镜像的操作,看完这篇就够啦 !(下)
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
随机推荐
- 合并模拟器和真机的静态库动态库aggregate
创建Aggregate的target 在Build Phases 添加Run Script,内容为 scriptFile=${SRCROOT}/universalA.shsh ${scriptFile ...
- java初探(1)之秒杀项目总结
在开始总结之前,先记录一个刚看到的博客,编程规约.该博客记录了一些java开发上的规范,可以在编码的时候引入这些规范. 无论流行框架一直怎么改变,web开发中的三层架构一直属于理论的基础存在. 表现层 ...
- MD5截断比较验证
最近在打De1CTF时在Web项目中碰到了两次MD5截断比较验证的题目,在做题时为了方便顺手写了一个小脚本来爆破Code,下面就简单分享一下思路 以De1CTF线上赛Web3为例,在De1CTF中,我 ...
- 03 父子组件sync&update
父组件传给子组件是基本数据类型. 父组件 <template> <el-container class="consele-container"> <e ...
- Zabbix housekeeper processes more than 75% busy
原因分析 为了防止数据库持续增大,Zabbix有自动删除历史数据的机制,即housekeeper,而在频繁清理历史数据的时候,MySQL数据库可能出现性能降低的情况,此时就会告警. 一般来说,Zabb ...
- 基于arm v8搭建区块链环境
服务器信息: cpu:华为鲲鹏 cpu架构:arm v8 系统:CenOS-AltArch 7.6 相关工具安装 yum更新 yum update 安装vim/gcc/git/curl工具软件 yum ...
- 如何将tensorflow1.x代码改写为pytorch代码(以图注意力网络(GAT)为例)
之前讲解了图注意力网络的官方tensorflow版的实现,由于自己更了解pytorch,所以打算将其改写为pytorch版本的. 对于图注意力网络还不了解的可以先去看看tensorflow版本的代码, ...
- jenkins 下载插件失败 有效的处理办法(亲测)
jenkins 下载插件失败,提示: java.io.IOException: Downloaded file /app/jenkins_home/plugins/jacoco.jpi.tmp doe ...
- Python解答蓝桥杯省赛真题之从入门到真题(二刷题目一直更新)
蓝桥刷题 原文链接: https://github.com/libo-sober/LanQiaoCup Python解答蓝桥杯省赛真题之从入门到真题 不同字串 """ 一 ...
- python面向对象单继承,多继承和super()调用
python 目录 python 1.继承 1.单继承 2.多继承 3.子类重写父类的同名属性和方法 核心点: 4.多层继承 5.super()的使用 1.继承 1.单继承 说明: 虽然子类没有定义_ ...