Jmeter 安装与使用
1.下载安装
官网下载地址:http://jmeter.apache.org/download_jmeter.cgi 从官网下载选择binary版本,下载后解压到方便使用的位置,路径名称尽量不要使用中文。 jmeter需要有java环境支持,不同版本对java版本要求不同,按照图片选择自己对应的java版本
2.配置环境变量
计算机鼠标右键>属性>高级系统设置>高级>环境变量>系统变量 1.创建JMETER_HOME,值是Jmeter的解压文件路径
3.启动jmeter
进入解压目录的bin文件下,【windows环境】双击jmeter.bat,【Linux环境】双击jmeter.sh 【注】启动时不可以关闭小黑窗 1.2 语言设置 这里偶尔会出现一个bug,重启jmeter后会重新展示英文,下面是解决方法。 我们可以使用Notepad++ 右键打开编辑jmeter.bat,当然这里使用其他软件或记事本也可以编辑。 我们在里面查找关键字为set JMETER_LANGUAGE=-Duser.language=“en” -Duser.region="EN"的内容 对其进行编辑。 搜索到的内容如下:
if not defined JMETER_LANGUAGE (
rem Set language
rem Default to en_EN
set JMETER_LANGUAGE=-Duser.language="en" -Duser.region="EN"
)
我们需要在他的头和尾分别加入goto remove_language_reset_bug_4.0和:remove_language_reset_bug_4.0 修改后的代码内容如下:
goto remove_language_reset_bug_4.0
if not defined JMETER_LANGUAGE (
rem Set language
rem Default to en_EN
set JMETER_LANGUAGE=-Duser.language="en" -Duser.region="EN"
)
:remove_language_reset_bug_4.0
这样修改后,我们再次重启jmeter就会显示为中文了,以后打开也不会恢复为英文。
4.插件下载
下载plugins-manager.jar,官方下载地址:https://jmeter-plugins.org/downloads/all/ 完成后将jar包放在jmeter安装目录下的\lib\ext文件夹中,启动jmeter,plugins manager出现在选项下。
5.Jmeter的使用
1.添加一个单接口测试 右键测试计划>添加>线程>线程组
右键线程组>添加>取样器>HTTP请求 我们拿百度当例子: 添加一个结果树,方便查看请求的发送数据和响应数据 点击运行,在结果树里可以看到请求数据和响应数据。
6.压力测试
1.在测试计划下添加线程组 在线程组下添加请求类型,使用HTTP请求为例
填写HTTP请求的各项数据,IP,方法,接口路径,端口号等,然后加上参数化,关联,断言等。 需要配置设置多少并发,循环次数,以及持续时间,配置好后点击菜单栏绿色箭头启动运行。
7.录制脚本
1,使用badboy软件,点击工具栏上面的红色圆形按钮,在地址栏目中输入被测试的地址,录制结束后,点击工具栏旁边黑色按钮,结束录制。 选择文件>Export to Jmeter…导出 然后打开jmeter工具,选择文件>打开刚刚导出的jmx类型文件,导入文件。 2.打开jmeter文件,创建一个线程组>创建一个http代理服务器 打开浏览器>设置一下浏览器的局域网设置
设置为本机IP就可以了,端口号需要与jmeter端口号一致,然后点击jmeter上面的启动按钮,打开浏览器输入需要录制的web项目地址,jmeter会自动记录你浏览器所访问的页面。
8.对数据库的压力测试
1.将要用到的数据库jar包放入jmeter中 拷贝到jmeter的lib目录中 2.配置jmeter 新建线程组>添加JDBC Connection Configuration>配置JDBC Connection Configuration>从取样器sampler中添加 JDBC Request>添加监听器 查看结果树、设置断言>运行测试,查看查询结果>设置集合点、线程数、循环控制器循环次数即可执行压测试
9.断言
1.响应断言
适用于判断返回内容与预期结果的对比
例如,响应文本中含有“南京”,表示请求响应成功。
在“测试模式”中添加“南京”,点击“启动”图标,执行请求,查看结果树。可能到此有朋友感觉奇怪,怎么与未加断言时执行效果一致。
那再修改“响应断言”为“南京我爱你”,再次执行请求。 这时请求结果为红色表时请求执行结果与预期设置不同,未包括“南京我爱你”字符,证明此条接口用例执行失败。 下面对“响应断言”内容进行详细介绍。
APPly to:
Main sample and sub-samples:作用于主取样器及对应子取样器
Main sample only:仅作用于主取样器
Sub-samples only:仅作用于子取样器
JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
测试字段:响应文本、响应代码、 响应信息、响应头部…
模式匹配规则: 包括、 匹配、Equals、字符串、否、或者
测试模式:可以添加/删除需要判断的内容,按钮“添加”、“删除”是进行指定内容的管理。
除响应断言外,还有其他断言。
2、大小断言
适用于:判断返回内容的大小。
步骤:在需要判断的“HTTP”请求接口上,右击“添加”\“断言”\“大小断言”。
APPly to:同“响应断言”
Response Size Field to Test(响应字段的测试范围):完整响应、响应头、响应的消息体、响应代码、响应信息。
Size to Assert:断言字节大小
响应字段可以通过察看结果树看到
根据返回响应消息体的大小设置断言值,一般什么大于多少字节,不采用=,因为数据是变化的,大多数会在一定范围内。例如本请求的“Body size in bytes: 1748”,在“大小断言”中设置如下:
3、断言持续时间
适用于:判断请求的响应时间
步骤:在需要判断的“HTTP”请求接口上,右击“添加”\“断言”\“断言持续时间”。
APPly to:同“响应断言”
持续时间(毫秒):设置期时间的时间,例如预计3秒响应,即设置为3000,如果响应时间在3秒回返回,则断言成功,否则失败!
10.参数化关联、正则提取器
1.jmeter的参数化
1.配置元件:用户定义的变量 针对接口请求里面都有的相同的变量,进行参数化引用,便于修改,引用方式${变量名}; 用户定义的变量填写变量名和值;
接口请求里面引用变量,引用方式${变量名}; 2.配置元件:CSV Data Set Config 如果要批量操作可以用CSV 先准备一个.TXT格式文档,或者excel记住保存为.CSV格式的,或者.dat格式的文件; 多个参数用逗号隔开; 添加CSV数据文件设置 文件名:设置文件路径; 文件编码:如有中文用utf-8; 变量名:设置被变量的名称,多个用逗号隔开; 忽略首行:如果你的数据是从第二行开始的,就需要忽略首行; 在线程组里面修改线程数,有多少组数据就修改为多少,设置多了会再次循环; 3.函数助手—random string函数进行参数化 将我们的手机号后8位进行随机生成; 字符串长度:设置为8; 选择范围:0123456789; 变量名:可填可不填 点击生成:得到随机字符串; 复制这个字符串 粘贴到我们手机号后面即可。
2.关联
关联概念:两个请求,上一个请求的响应结果,作为下一个请求的参数传入; 关联运用场景:下一个请求的参数值是变化的; 1.正则表达式(登录和充值的关联为token) 从登录的响应结果写一个正则表达式获取到token; 添加一个正则表达式提取器 要检查的响应字段:我们是从响应体里面获的token所以选择主体; 引用名称:设置获取的字段的变量名; 正则表达式:将我们的正则表达式填上; 模板:1 11表示引用组1,2 22表示引用组2,0 00表示引用所有,我们这里只获取了一组,用1 11即可; 匹配数字:-1代表全部,0表示随机,1表示第一个,2表示第二个 缺省值:如正则表达式没提取到则使用这个默认值,可不写; 添加一个调制后置处理程序,看下我们的正则表达式提取器是否提取到了token。 给我们的充值添加一个信息头管理器,将获取到的token填在里面Bearer ${token} 这个时候设置完毕,点击run,查看充值成功
11.固定定时器
Jmeter的线程组在发送2个请求之间需要设置一个等待时间时,可以用固定定时器解决。
配置方式,在第二个请求中添加>定时器>固定定时器。 配置定时器等待时间 需要控制2个http请求顺序执行还需在线程组中添加>逻辑控制器>临界区控制器(Critical Section Controller) 可以看到http请求1发送后,等待时间过后发送了http2。
特殊说明 固定定时器需要添加在发送前需要执行等待时间得http请求中,才能达到等待固定时间再发送指定http请求的目的。 如果固定定时器直接配置在线程组下面,无论放在哪个位置,执行效果都是先执行固定定时器,在执行http请求,如下图所示的配置,执行效果是每个http请求发送前都会等待固定时间。
|