1.下载
登录官网Jmeter下载,得到压缩包jmeter-5.3.tgz,下载地址:http://jmeter.apache.org/download_jmeter.cgi
.Jmeter介绍
既能做接口测试,又能做性能测试的一款工具,开源的,可以进行二次开发,是基于java开发的,需要安装jdk(java -version)
jmeter5.x版本需要jdk1.8以上
Jmeter目录:
bin目录:存放的是Jmeter的主jar包(ApacheJMeter),启动文件(jmeter.bat),配置文件(jmeter.properties),日志文件(jmeter.log)
extras:存放的是测试报告样式,以及和第三方交互的jar文件,如和ant交互的jar文件。
lib:存放jar包
lib\ext:第三方jar包
docx:二次开发文档
.下载后打开英文状态的
.配置成中文
1.找到Jmeter安装文件bin目录下的jmeter.properties文件,用记事本打开
2.替换language=EN为language=zh_CN,然后去掉前面的#号
3.重启Jmeter
.Jmeter 脚本生成方式(脚本也称角本,脚本可以理解为代码)
三种方式:
一:badboy(坏男孩)录制
只能录制web页面,不支持app
二:jmeter自带的代理服务器录制
1.添加线程组:测试计划–线程–线程组
2.添加代理服务器:测试计划—非测试元件–http代理服务
选择目标控制器:测试计划–线程组
排除模式:比如排除png 使用..png.
包含模式:比如:.www.baidu.com.
启动
3.设置代理
手机设置代理
查看电脑的ip地址:cmd–ipconfig
手机设置ip,设置端口号,端口号默认是8888;
浏览器设置代理
找到internet属性–局域网设置–勾选代理服务器
4.停止录制,关闭代理
三:手写脚本
一般是参照接口文档
没有文档熟悉抓包工具
熟悉协议
熟悉工具本身
.手写脚本(天气预报)
www.weather.com.cn/data/sk/101020100.html
1.添加线程组
测试计划–添加–线程–线程组
2.添加取样器
线程组–添加–取样器–http请求
输入协议,路径,服务器名称,端口号,参数等
3.添加查看结果树(监听器)
取样器–添加–监听器–查看结果树
.Jmeter 脚本构成
Jmeter脚本有组件构成
测试计划:必选组件,脚本只有位于测试计划下才能运行。
线程组:线程下的三个线程本质上没有区别,只是位于同一个测试计划下 setup最先执行,teardown最后执行
取样器:实际请求
断言:预言,预期结果
配置元件,监听器,前置,后置,定时器 都是为取样器(请求)服务的.
.Jmeter cookie 管理器,cookie作用
添加cookie管理器:线程组–添加–配置元件–http cookie管理器
.cookie作用
1.可以在客户端上保存用户数据,起到简单的缓存和用户身份识别等作用。
2.保存用户的登陆状态,用户进行登陆,成功登陆后,服务器生成特定的cookie返回给客户端,客户端下次访问 该域名下的任何页面,将该cookie的信息发送给服务器,服务器经过检验,来判断用户是否登陆。
3.记录用户的行为。
Jmeter cookie 的作用:http://lijingshou.iteye.com/blog/1976573
面试题:cookie和session的区别?
服务器生成特定的cookie返回给客户端
服务端称为session,客户端叫cookie
.Jmeter响应断言
断言即预言,对返回结果进行判断.
响应断言添加:sample(取样器)—添加–断言–响应断言
.Jmeter添加变量(参数),参数化
之前参数我们直接在请求里面添加,
常用的添加方式
1.用户定义的变量
线程组–添加–配置元件–用户定义的变量
2.csv数据文件设置
线程组–添加–配置元件–csv数据文件设置
3.用户参数
线程组或者请求---添加--前置处理器--用户参数
4.函数助手
.参数化
简单的说就是将输入的地方使用参数来代替
Jmeter任何可以输入的地方都可以使用参数化操作
参数,变量调用的格式是统一的,使用
参
数
名
,
{参数名},
参数名,{变量}
//jmeter(十)参数化
https://www.cnblogs.com/imyalost/p/6229355.html
面试题:1.什么是参数化?
2.参数化有几种方式?
.Jmeter 对返回的JSON数据的处理方式
1.正则表达式
2.jmeter自带的json处理 方式
JSON断言
JSON提取器:相当与json解析的过程,省去了在beanshell里面做解析的过程。
3.beanshell处理方式
后置处理器--beanshell后置处理程序
.Jmeter beanshell及内部变量
什么是beanshell
beanshell是一种完全符合java语法规范的脚本语言,同时又有自己的方法和内置变量。
Jmeter都有哪些beanshell
打开Jmeter查找,beanshell取样器,beanshell前置处理器,beanshell后置处理器,beanshell定时器,beanshell断言,beanshell监听器。
Jmeter常用的内置变量
内置变量,类似java里面的常用类,如String,通过这些内置变量可以跟jmeter进行交互
vars:操作Jmeter变量,本质是Map
vars.put("key","value"),提交数据到Jmeter中,第二个参数必须是字符串(String)类型。
提交数据相当于把数据保存到全局变量中
vars.get("key"),获取数据,//通过key来获取数据
log:通常把错误、异常信息写入信息到Jmeter.log 文件。使用方法log.info("error info");
prev:处理请求返回的数据,常用方法:
prev.getResponseDataAsString();//获取返回的数据
prev.getResponseCode();//获取返回的状态码
prev.setDataEncoidng("utf-8");//设置编码格式
.Jmeter json解析
1.在Jmeter的lib目录下引入json.jar
2.重启Jmeter
3.添加后置处理器,处理Json数据是在后置处理器里面进行的
4.在beanshell里面引入json数据包,形如:
import org.json.JSONException;
import org.json.JSONObject;
.beanshell断言
Failure:Jmeter常用类,判断断言结果是成功还是失败
Failure失败的意思
Failure=false;//失败为假,说明没有失败
Failure=true;//失败为真,说明失败
FailureMessage:Jmeter常用类,断言失败的时候用FailureMessage打印失败信息
.Json提取器
JSON提取器:相当于json解析的过程,省去了beanshell里面的json解析。
JSON path Assertion(JSON path 断言)
.Jmeter 数据关联
关联:说白了就是有关系,指的是数据的关联。
比如接口测试中,一个接口的入参是另外一个接口的返回值,那么这两个接口就是有关系。
如注册接口需要验证码,验证码是另外一个接口返回的
关联方式:
1.将前一个接口返回的数据提交到Jmeter变量中,再另外一个接口直接引用,引用使用
k
e
y
v
a
r
s
.
p
u
t
(
"
k
e
y
"
,
"
v
a
l
u
e
"
)
;
2.
使
用
J
S
O
N
提
取
器
提
取
的
数
据
,
提
取
过
程
相
当
于
j
s
o
n
解
析
,
如
提
取
的
是
p
h
o
n
e
,
直
接
使
用
{key} vars.put("key","value"); 2.使用JSON 提取器提取的数据,提取过程相当于json解析,如提取的是phone,直接使用
keyvars.put("key","value");2.使用JSON提取器提取的数据,提取过程相当于json解析,如提取的是phone,直接使用{phone}
.Jmeter 添加报文体数据
1.添加http信息头管理器:请求或线程组–添加–http信息头管理器
2.信息头管理器添加Content-Type application/json
3.消息体输入json格式数据形如:{passwd:123456,phone:13087099582}
.Jmeter 接口参数加密处理方法
比如登录需要密文传输
加密算法: MD5 ,Base64, AES, DES, Sha512
从代码引入(登录实例)
一般情况下出于安全的原因公司加密的代码甚至加密方法是不会让我们知道的,那么此时
1.问开发要加密包,java的是jar文件
2.将jar包放到jmeter的lib\ext下,重启Jmeter
3.弄清楚业务逻辑,弄清楚要调用的方法(有文档说明或者找开发了解)
4.Jmeter编写代码,此时一般会用到前置处理器。
PS:需要在前置里面引入加密类的包名,形如:
import com.qiyi.test.qiyi05.SecurityUtil;