大家好,欢迎来到IT知识分享网。
jmeter安装
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在 linux/windows/macos上都可以使用。
jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权 限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理json-json path extractor)和jmeter操作数据库等等。
1、下载地址:https://jmeter.apache.org/download_jmeter.cgi,下载之后解压
2、配置JDK环境变量:JAVA_HOME, cmd命令窗口下使用java -version查看
3、双击Jmeter解压路径(apache-jmeter-5.0\bin)的bin下面的jmeter.bat
注意事项:
- 避免在一个有空格的路径安装JMeter,这将导致远程测试出现问题。
- 打开的时候会有两个窗口,JMeter的命令窗口和JMeter的图形操作界面,不可以关闭命令窗口
- JMeter的classpath:
- 如果你想添加其他JAR文件到JMeter的classpath中,你必须复制他们到lib目录中;
- 如果你开发了一个JMeter特定组件或有效的jar文件,复制到lib目录下的ext目录中。
- 中英文界面切换:菜单选项(Options)->选择语言(Choose language)->英文(English/Chinese(simplified))
- 使用JMeter无法验证JS程序,也无法验证页面UI,必须要和Selenium配合来完成Web2.0应用的测试。
jmeter界面说明
主界面
JMeter的主界面主要分为菜单栏、工具栏、树形标签栏和内容栏:
- 菜单栏:全部的功能的都包含在菜单栏中。
- 工具栏:工具栏中的按钮在菜单栏都可以找到,工具栏就相当于菜单栏常用功能的快捷按钮。
- 计划的树形标签栏:树形标签栏通常用来显示测试用例(计划)相关的标签。
- 内容栏:配合树形标签栏显示,树形标签中点击哪个标签,内容栏中就显示相应的内容和操作。
菜单栏
文件
- 关闭:关闭当前打开的JMX文件 。
- 打开:打开一个JMX文件。
- Templates 模板:对常用的功能使用指导。主要有录制、JDBC测试、webserver测试等等,分为基本步骤和详细截图。 如果点用户链接,则会链接到apache jmeter 网站查看详细的步骤和截图指导。
- 合并:会将多个JMX合并为一个 。
- 保存测试计划:仅保存测试计划 工作台中添加的内容不会被保存。
- 保存测试计划为:将测试计划另存。
- 另存为:可以对工作台和测试计划或者测试例另存为JMX 注意另存为是点哪个位置,存的就是哪个内容。
- save as Test fragment:存为一个测试片段,只有线程组、测试计划、工作台不能 保存为一个测试片段。
- Revert:还原,将现在的jmx还原为已经保存过的JMX
编辑
- Save Node As Image(保存节点为图片): 将菜单的配置GUI保存为图片。
- Save Screen As Image(保存屏幕为图片): 将整个jmeter界面保存为图片。
- Toggle(切换):类似于java中设置断点的意思。
查找
- Search: 搜索所有配置中匹配的项,匹配成功显示为红色。
- Reset Search: 重置搜索,清除搜索结果。
运行
- 启动: 启动运行测试计划
- Start no pauses(不停顿开始): 无停顿启动运行测试计划 1,可以忽略定时器 2,再启动时运行更快
- 远程启动/停止: 指定一个远程agent运行/停止测试计划。
- 远程全部启动/停止: 让所有远程agent运行/停止测试。
- 停止: 停止执行测试计划。
- 关闭: 关闭测试计划。
- Remote Shutdown: 关闭一个指定远程agent。
- Remote Shutdown All: 关闭所有远程agent。
- 远程退出: 指定一个远程agent退出执行。
- 远程退出全部: 所有远程agent退出执行。
- 清除: 清除选择菜单的执行结果。
- 清除全部: 清除所有菜单的执行结果。
选项
- 函数助手对话框: 在编写脚本的时候,使用函数助手可以协助生成指定的代码。
- 外观: jmeter界面样式。
- Log Viewer: 日志查看器,选中后可以在右下方查看运行日志。
- SSL管理器: 导入外置的SSL管理器,用于更好的管理证书, JMeter代理服务器不支持记录 SSL(https)。
- 选择语言: 选择界面的语言,目前支持中文、英文、法语、德语等等。中文版很多翻译不全,可以直接使用英文版的。
- Collapse All: 展开所有菜单。
- Expand All: 折叠所有菜单
帮助
- What’s this node?: 当鼠标放在某个菜单的时候显示其含义。
- Enable debug: 开启调试。
- Disable debug: 取消调试。
- Create a heap dump: 创建堆转储。这是创建当JVM崩溃的堆转储。这个文件可以用堆分析工具(如JHAT),以确定根本原因进行分析。
jmeter测试计划
打开Jmeter页面:包括测试计划 +工作台。
Test Plan (测试计划):用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就说性能测试的所有内容是于基于一个计划的。
右键单击“测试计划”弹出菜单:
注意
“函数测试模式”复选框,如果被选择,它会使Jmeter记录来自服务器返回的每个取样的数据。如果你在测试监听器中选择一个文件,这个数据将被写入文件。如果你尝试一个较小的测试来保证Jmeter配置正确并且你的服务器正在返回期望的结果,这是很有用的。这样做的后果就是这个文件会快速的增大,并且Jmeter的效率会影响。
如果不记录数据到文件,这个选项就没有不同了。
Threads (Users)线程 用户
虽然有三个添加线程组的选项,名字不一样, 创建之后,其界面是完全一样的。
测试片段(Test Fragment)
测试片段元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。
JMeter有两种类型的控制器:取样器(sample)和逻辑控制器(Logic Controller),用这些原件来驱动处理一个测试。
取样器(Sampler)
取样器(Sampler)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler , 如 HTTP Request Sampler 、 FTP Request Sampler 、TCP Request Sampler 、 JDBC Request Sampler 等,每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。
在Jmeter的所有Sampler中,Java Request Sampler与BeanShell Requst Sampler是两种特殊的可定制的Sampler。
逻辑控制器(Logic Controller)
逻辑控制器,包括两类无件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,常用的有 如果(If)控制器 、 switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的, 如 事务控制器、吞吐量控制器。
配置元件(Config Element)
配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 可以将本地数据文件形成数据池 (Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则可以修改 Sampler的默认数据。
例如:
- HTTP Cookie Manager 可以用于对 HTTP Request Sampler 的 cookie 进行管理。
- HTTP 请求默认值不会触发Jmeter发送http请求,而只是定义HTTP请求的默认属性。
定时器(Timer)
定时器(Timer)用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。类似于LoadRunner里面的“思考时间”。 JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
前置处理器(Per Processors)
前置处理器用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则可以实现URL重写,当RUL中有sessionID 一类的session信息时,可以通过该处理器填充发出请求的实际的sessionID 。
后置处理器(Post Processors)
后置处理器是用于对Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似LoadRunner测试工具中的关联概念)。例如,XPath Extractor 则可以用于提取响应数据中通过给定XPath 值获得的数据;正则表达式提取器,则可以提取响应数据中通过正则表达式获得的数据。
断言(Assertions)
断言用于检查测试中得到的相应数据等是否符合预期,断言一般用来设置检查点,用以保证性能测试过程中的数据交互是否与预期一致。
监听器(Listener)
这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。 图形结果、查看结果树、聚合报告、用表格察看结果都是我们经常用到的元件。
jemter使用
创建线程组
设置线程数
线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“Test Plan(鼠标右击) -> 添加 ->Threads(Users) -> 线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。
Number of Threads(users): 一个用户占一个线程, 100个线程就是模拟100个用户
Ramp-Up Period(in seconds): 设置线程需要多长时间全部启动。如果线程数为200 ,准备时长为10 ,那么需要1秒钟启动20个线程。也就是每秒钟启动20个线程。
Loop Count:每个线程发送请求的次数。如果线程数为200 ,循环次数为10 ,那么每个线程发送10次请求。总请求数为200*10=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
添加请求
设置请求方法
参考:
|
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31873.html