性能测试工具---JMeter的安装与使用详解(第一篇)
目录
一、主流性能测试工具
主流性能测试工具:LoadRunner和JMeter
1.1 LoaderRunner
HPLoaderRunner是一种工业级标准性能测试负载工具,可以模拟上万用户实施测试,并监控性能提供报表。
支持多协议:Web(HTTP/HTML)、Windows Sockets、FTP、ODBC、MS SQL Sever等协议,由C语言编写。
优点:多用户(支持数量单位万),提供详细分析报表,支持ip欺骗;
缺点:收费、体积庞大(单位GB)、无法定制功能。
1.2 JMeter
JMeter是由Apache组织开发的基于Java的开源软件,用于对系统接口测试和性能测试。
最初设计用于Web应用测试,后来逐步扩展,可用于静态文件、Java程序、shell脚本、Mail等;
优点:免费、开源、小巧、丰富的学习资料及扩展组件、应用广泛、容易上手;
缺点:不支持ip欺骗、分析和报表能力相对于lr欠精度。
选择JMeter的原因:免费、功与lr基本一致,能满足绝大部分性能测试需求。
二、JMeter环境搭建
2.1下载安装JDK
官网:http://www.Oracle.com/
JDK8下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151html下载时注意电脑系统是32位或者64位
配置环境变量
JAVA_HOME=安装路径
在path中添加:%JAVA_HOME\bin;%JAVA_HOME%\jre\bin
校验:java -version

2.2 下载安装JMeter
下载地址:http://jmeter.apache.org/download_jmeter.cgi
安装提示:安装目录中不要出现空格,也不要将其装在中文文件夹内。要关注与JDK版本匹配。
环境配置:
1)新建JMETER_HOME变量,并添加jemeter所在目录,如:->D:\Program Files\apache-jmeter-5.4.3
2)PATH->.;%JEMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\loki
启动验证:
进入JMeter安装目录下的bin目录,以下三种方式任意一种打开都可。
·双击 jmeter.bat
·双击ApacheJMeter.jar选择使用java程序打开
·命令行输入:java -jar ApacheJMeter. jar

2.3 JMeter文件目录介绍
jmeter目录结构
bin目录:存放可执行的文件和配置文件
printable-docs:存放用户手册
lib目录:jmeter运行时以来的jar包
docs目录:存放jmeter接口文档
2.3.1 bin目录
存放可执行文件和配置文件

2.3.2 docs目录
是JMeter的api文档,可打开api/index html页面来查看
printable_docs的usermanual子目录下的内容是JMeter的用户手册文档;

printable_docs的demos子目录下有一些常用的JMeter脚本案例,可参考;
usermanual下component_reference.html是最常用到的核心元件帮助文档。

2.3.3 lib目录

三、JMeter中基本元件和组件
3.1 基本元件及组件
元件:类似于类的概念;组件:类似于类中定义的方法的概念。

| JMeter中基本元件和组件 | |
| 取样器 | 发送请求,类似于自动化中的业务测试语句; |
| 逻辑控制器 | 控制元件执行顺序,类似于自动化中的逻辑控制语句; |
| 前置处理器 | 对发送的请求参数进行预处理,类似于自动化中的参数化; |
| 后置处理器 | 对收到的响应数据进行处理。类似于自动化中获得对应的测试结果; |
| 定时器 | 等待一定时间,类似于自动化中的sleep语句; |
| 测试片段 | 封装的脚本,供其他脚本调用。类似于自动化中封装的函数 ; |
| 配置元件 | 测试前的环境及数据配置。类似于自动化中的初始化动作 |
| 监听器 | 查看测试的结果。类似于自动化中的日志和报告。 |
| 组件 | 实现独立的某个功能(类似于方法) |
3.2 JMeter元件作用域及执行顺序
在JMeter中,按照jmeter测试计划的树形结构中的父子关系来定义作用域;
作用域的原则:
1)取样器:jmeter核心,其他组件都以取样器为核心运行,不作用于其他组件。
2)逻辑控制器:只对子节点中的取样器和控制器起作用。
3)其他六大元件:
·如果父节点是取样器,则只对父节点起作用。
·如果父节点不是取样器,则对父节点下所有组件起作用
元件的执行顺序:
写脚本的顺序:定义参数-->对参数进行赋值-->发送请求-->收响应-->提取响应数据-->断言响应中的字段-->观察运行结果
元件执行顺序:配置元件->前置处理器->定时器->取样器->后置处理程序->断言->监听器
注:
1.前置处理器、后置处理器和断言等组件只对取样器起作用,若其所在作用域内没有任何取样器,则 不会被执行。
2.如果同一作用域内有多个同类型的元件,则这些元件按照所在测试计划中的上下顺序依次执行。
3.3 JMeter三大重要组件
在JMeter中,基本每一次操作都至少包含三大重要组件:线程组、HTTP请求和结果树。
3.3.1线程组
线程组主要是模拟多人操作;如果有多个线程组,可以并行或者串行执行。串性即从上到下顺序执行,并行的先后顺序无法保证。

线程组分类:
普通线程组:用于发送业务请求的线程组(受并行、串行配置的影响)
setup线程组:在所有的线程组之前执行(不受并行、串行配置的影响)
terdown线程组:在所有的线程组之后执行(不受并行、串行配置的影响)
线程组属性:
线程数:模拟用户数
ramp-up time:模拟用户全部启动所需时间,目的是为了模拟性能测试场景,用户慢慢接入系统。
循环次数:设置固定次数为n,脚本发送请求n次后停止;设置循环次数为永远,脚本将一直运行;
调度器:配合循环次数为永远使用,其他请无效;
·调度器设置持续时间为n,则脚本发送的时间为n秒
延迟启动设置为n,脚本等待n秒后发送;
延迟创建线程直到需要:当启动线程发送请求时,才分配资源;如果暂未启动该线程,则不分配。
如果 不勾选,在jmeter点击运行时立即分配(使用不多,了解即可,无法观察效果)
线程数m和循环次数n的关系
如果同时配置,实际发送的HTTP请求数应该为:m*n,
虽然发送的请求次数相同,但不能相互代替线程数,代表并发用户数,体现服务器的负载量,循环次数代表执行时间。
3.3.2 HTTP请求

案例一:发送http请求
发送请求时:协议未填写,默认HTTP协议;
端口号未填写,默认80;
将 GET 请求参数放在路径中填写![]()
案例二:发送https请求
发送请求时,协议要填https;端口号为443,
将GET请求参数放在下面的参数列表中进行填写
案例3:发送POST请求
将参数内容放入到消息体数据中,在发送时参数会添加到请求体中发送![]()
3.3.3结果数



注:如果jmeter响应中出现乱码:
修改路径:bin目录下,修改配置文件jmeter.properties中的内容:

四、JMeter参数化
4.1用户定义的变量
配置方法:
1)配置元件中配置:测试计划—>线程组—>配置元件—>用户定义的变量
参数设置:
参数名:参数值
在HTTP取样其中应用:${参数名}
线程组下配置的用户定义的变量,在线程组下生效,与测试计划中配置的变量冲突时,以线程组下的为准;
2)在测试计划中配置(全局生效)

使用用户定义变量,不同的用户在访问时,读取的数值完全相同;如果要是读取的数值不同,就要使用用户参数。
4.2 用户参数设置
配置方法:线程组—>前置处理器—>用户参数
添加用户:可以添加多组用户
添加参数:每个用户添加多个参数

4.3 CSV数据文件设置
添加方式:测试计划—>线程组—>配置元件—>CSV数据文件设置
案例:请求https:www.baidu.com
要求:循环4次,每次请求时附带参数username,password,code的值不同。
1.定义CSV数据文件
2.添加线程组
3.配置CSV数据文件设置:线程组—>配置元件—>CSV数据文件设置
参数配置:
4.添加HTTP请求:引用参数值时,使用时CSV数据文件中定义的变量名
5.查看结果树
4.4函数(_counter)
函数:计数函数,一般做执行次数统计使用;对于传递内容无要求,仅仅要求传递内容不一样,可以使用函数助手。
位置:在菜单中—>工具—>函数助手对话框
函数助手

在HTTP取样器中,应用counter函数生成的函数字符串,就可以读取counter函数生成的数值。
如果counter参数设置为TRUE,则每个用户分别从1开始计算,每循环一次加1 ;
如果counter参数设置为FALSE,则所有用户公用一个计数器,每发送一个请求时,取值加1。
更多推荐





所有评论(0)