如何使用JMeter进行性能和负载测试
JMeter负载测试是使用一个名为Apache JMeter的负载测试工具完成的测试过程,Apache JMeter是一个基于Java的开源桌面应用程序。它还有助于分析高负载下的整体服务器。
JMeter性能测试是使用Apache JMeter测试Web应用程序性能的测试方法。JMeter for Performance Testing有助于同时测试静态和动态资源,有助于发现并发用户JMeter性能测试,包括Web应用的负载测试和压力测试。
Apache JMeter测试工具在性能测试方面提供以下好处
JMeter性能测试包括:
下图显示了JMeter负载测试如何模拟重负载:
在本教程中,我们将对1000名用户进行baidu.com的性能分析 。在测试目标Web应用程序的性能之前,我们应该确定-
以下是这个实际示例的路线图
右键单击“测试计划”,添加一个新的线程组:Add->Thread(Urs)->Thread Group
在线程组控制面板中,输入线程属性,如下所示:
线程计数和循环计数不同。
启动周期告诉JMeter在启动下一个用户之前要延迟多长时间。例如,如果我们有100个用户和100秒的启动周期,那么启动用户之间的延迟将是1秒(100秒/100个用户)
现在我们确定此测试中的JMeter元素。这些元素包括
可以通过右键单击Thread Group并选择:Add->Config Element->HTTP request Defaults来添加此元素。
在Http request Defaults控制面板中,输入正在测试的网站名称( http://www.google.com )
右键单击Thread Group并选择:Add->Sampler->HTTP Request。
在HTTP求控制面板中,路径字段指示要将哪个URL求发送到Google服务器。
例如,如果在路径字段中输入“日历”。JMeter将创建指向谷歌服务器的URL求 http://www.google.com/calendar
如果保留路径字段 空白 jeter将创建指向谷歌服务器的url求 http://www.google.com 。 在此测试中,将路径字段保留为空,以使JMeter创建到Google服务器的 http://www.google.com 请求。
JMeter可以将测试结果以Graph格式显示。 右键单击“测试计划”,选择“添加”->“侦听器”->“绘制结果图”
按工具栏上的Run(运行)按钮(Ctrl+R)开始软件测试过程。将看到测试结果实时显示在Graph上。 下图显示了一个测试计划的图表,其中我们模拟了访问 www.google.com 网站的100个用户。
在图片底部,有以下用颜色表示的统计数据:
让我们在下图中分析一下Google服务器的性能。
要分析被测Web服务器的性能,应该关注两个参数
吞吐量是最重要的参数。它表示吞吐量越高,服务器性能越好。 在本次测试中,Google服务器的吞吐量为1491.193/分钟。该值相当高,因此我们可以得出结论,Google服务器具有良好的性能 偏差用红色表示-它表示与平均值的偏差。越小越好。
让我们将Google服务器的性能与其他Web服务器进行比较。这是网站 http://www.yahoo.com/ 的性能测试结果(可以选择其他网站)
被测网站 http://www.yahoo.com 的吞吐量为867.326/分钟。这意味着该服务器每分钟处理867.326个求,低于谷歌。 偏差为2689,远高于谷歌(577) 。所以我们可以确定这个网站的性能低于谷歌服务器。
注意:上面的值取决于几个因素,比如Google当前的服务器负载,网速,CPU能力等等。所以不要惊慌!
如果在运行上述方案时遇到此问题.执行以下操作
浏览网页: https://www.itxiaonv.com/ ,了解更多IT信息
Jmeter 分布式性能测试方案
Jmeter 分布式工作原理
控制机: 分发脚本 和 回收响应数据
执行机: 一般使用服务器
Jmeter 分布式工作流程
1.选择其中一台作为调度机(master),其他机器做为代理机(Agent)。
2.执行时,master 会把脚本数据发送到每台 Agent上,Agent 拿到脚本后就开始执行,Agent执行时不需要启动GUI,通过命令行模式执行的
3.执行完成后,Agent 会把结果回传给 master,master会收集所有Agent的信息并汇总
分布式操作流程:
1.首先 保证脚本是可以运行的--本机运行是ok的
2.保证 执行机与控制机之间网络是ok,相互ping通
3.执行机与控制机的Jmeter 和 jdk 要版本一致
4.执行机里面的jmeter是可以运行的
运行jmeter
cd ./apache-jmeter-5.1.1/bin
./jmeter.sh
./jmeter-rver
5.关联控制机与执行机
(1)设置执行机的Jmeter 属性文件
(2)设置控制机的Jmeter 属性文件
(3)重启设置过的机器的 Jmeter工具
实战演示
一台控制机 + 一台执行机
准备工作:让执行机的jmeter-rver 运行起来
jmeter 有两种运行模式
1.GUI
2.命令行
代理机设置
1. 打开window本地,进入 cmd命令行,输入 ifconfig,查看 本地 IP地址为 192.168.1.101
2.登录远程服务器,ping 本地连接,保证联通
输入 ping 192.168.1.101
3.登录远程服务器,查看本地ip
输入 ifconfig,查看服务器 ip 为 192.168.1.104
4.打开 本地 cmd,ping 远程链接
输入 ping 192.168.1.104
5. 执行机 jmeter.properties 设置 remote_hosts = 192.168.1.104:1099
rver.rmi.ssl.disable=true
控制机 jmeter.properties 设置 remote_hosts = 192.168.1.101:1099,remote_hosts = 192.168.1.104:1099
rver.rmi.ssl.disable=true
6.执行机启动jmeter
进入 bin 目录,执行 ./jmeter-rver
./jmeter-rver-Djava.rmi.rver.hostname=192.168.1.104
JMeter 接口/并发/性能测试(详尽版)
Jmter工具设计之初是用于做性能测试的,它在实现对各种接口的调用方面已经做的比较成熟,因此,本次直接使用Jmeter工具来完成对Http接口的测试。因为再做接口测试时可以设置线程组,所以也可做接口性能测试。
本篇使用JMeter完成了一个完整的Http接口性能测试流程,从脚本编写(工具化生成),执行到最终结果分析。
> 接口地址 :我们选取最常见的百度搜索接口:https://www.baidu.com/s?ie=utf-8&&wd=新闻
ie:编码方式,默认为utf-8
wd: 搜索词
> 返回结果判断 (断言):
搜索结果,我们可以通过校验结果中是否含有搜索词wd来判断本次请求成功或失败。
> 依次进行如下操作:1) 添加线程组 2)添加请求&http消息头管理器 3)添加结果监听器(察看结果树 )
4)添加用户自定义变量 *)添加定时器(集合点)
5)添加请求的断言 6)添加断言结果 7)添加聚合报告 8)执行
9)结果分析(分析测试报告)
1) 添加线程组
添加虚拟用户组(Thread Group),这些虚拟用户用来模拟访问被测系统
一个 线程组(Thread Group) 等于 一组虚拟用户(virtual urs group) ,
一个Java线程 等于 一个用户
2)添加请求、添加 http消息头管理器
2.1)添加请求
接下来的一步就是要加入实际被测页面,右击“线程组” > “添加” > “Sampler” > “HTTP请求”。
ps: 参数,用于get 或put请求;消息体数据用于post 请求; -----很重要,很容易出错!
2.2)http消息头管理器
3)添加察看结果树
添加结果监听器(察看结果树 ), “监听器”让用户来观察测试结果
运行后点击左侧观察结果数,查看请求执行结果,红色为失败,绿色为成功,如下图:
4)添加用户自定义变量 &集合点
用户自定义变量 -,需要再HTTP请求处,手动修改请求中为变量形式 ${wd}
*)添加集合点
5)添加请求的断言 6)添加断言结果
7)添加聚合报告
8)执行
至此,就完成了一个完整Http接口的JMeter性能测试脚本编写,点击运行即可
>查看运行日志, “选项” > “Log Viewer”看看运行的日志。如果你还是看不到日志,你可以点击下面所示的三角箭头展开或者收起日志视图
9)结果分析(分析测试报告)
待性能测试执行完成后,打开聚合报告可以看到:
10) 脚本查看
可以使用编辑器查看.jmx文件,如下图所示:
使用Jmeter进行http接口性能测试
在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。
但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试,就必须借助其他的工具了,这里推荐功能强大的JMeter自动化测试工具
Apache JMeter - Apache JMeter™
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
下面就以上图的Restful类型的接口为例简单介绍使用Jmeter进行接口测试的方法。
获取某个具体网关设备的基本信息。
请求
方法:GET
URI:/api/gateway/<gateway_id>
参数:
在HTTP请求(http request)的头部(header)添加Urid和Token字段作为用户验证字段
响应
返回值:JSON格式的网关信息
参数:
.启动jmeter:在bin下以管理员身份运行jmeter.bat,启动jmeter
2. 创建测试计划:
默认启动jmeter时会加载一个测试技术模板,保存测试计划:修改名称为Apitest,点击保存,选择保存路径,后面的步骤,每次添加或修改了了一些选项,软件并不会自动保存到jmx文件中,所以进行测试后,如果需要保存本次测试选项,要手动到“文件”菜单中保存一下。
3. 添加线程组
右键左边树中的测试计划“Apitest”节点,“添 加”→”Threads”→”线程组”
添加成功后,“Apitest”节点下多了“线程组” 节点,当然这个线程组的名称是可以自己设定的。
4. 添加http默认请求:(用来配置公共参数,不是http请求)
右键线程组,选择“添加”→ “配置元件”→“HTTP请求默认值”,点击“HTTP请求默认值”后
添加成功后,线程组”节点下多了“HTTP请求默认值”节点
这里可以设置主机地址等一下公共参数,比如我们的例子中请求路径前面都是主机地址+index.php,就可以统一在"http请求默认值"里设置
填写默认请求名、服务器、默认请求路径,保存测试计划。
5.添加http请求信息头
这一项并不是必须的,只不过我们的例子中使用了Urid和Token放在HTTP请求头中用作用户验证
右键“Apitest”,选择“添加”→ “配置元件”→“HTTP信息头管理器”
6. 添加http请求
右键“Apitest”,选择“添加”→ “Sampler”→“HTTP请求”
添加成功后,出现新的节点“HTTP请求”,就可以填写具体的请求参数了。
填写完成,保存测试计划
7. 添加监听器:
右键线程组,选择“添加”→“监听器”→“XXXXXXXXX”
可以添加的监听器有很多种,可以添加多个监听器,这里我们添加几个常用的“图形结果”、“察看结果树”、“聚合报告”
添加成功后,“线程组”下增加了几个节点
8. 试运行
点击执行
可以查看各个“监听器”的结果
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
Note:关于 50% 和 90% 并发用户数的含义,请参考下文
http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec
9. 修改线程组的线程数等参数,用于压力测试
点击左侧树形导航中的“线程组”
设置上面几个参数,模拟的总的请求数是:线程数*循环次数。执行一下,用“图形结果”监听器查看一下
样本数目:总共发送到服务器的请求数.
最新样本:代表时间的数字,是服务器响应最后一个请求的时间.
吞吐量:服务器每分钟处理的请求数.
平均值:总运行时间除以发送到服务器的请求数.
中间值:时间的数字,有一半的服务器响应时间低于该值而另一半高于该值.
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布.
jmeter性能测试步骤是什么?
把登陆改为cookie进行登陆。
负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。负载测试(Load Testing)是确定在各种工作负载下系统的性能。
目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。
负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
python自动化教程Jmeter性能测试
python自动化教程Jmeter性能测试25套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试用例设计,黑盒测试,白盒测试,UFT高级测试,Android测试,Selenium3自动化测试,Python3 测试,Java接口测试项目实战视频教程
软件测试技术包含:性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试用例设计,黑盒测试,白盒测试,UFT高级测试,项目实战,Android测试,Selenium3自动化测试,Python3 测试,Java接口测试,LoadRunner性能测试,Appiumapp自动化测试,UIAutomator,Appium,Unittest测试框架,Kali Linux Web渗透测试,Git+Jenkins持续集成,LR+Jmeter性能测试,分布式性能测试高级视频教程。。。
Dodwnload:https://www.soft1188.com/rjcs/283.html
总目录:25套高级软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试,手机测试,WEB测试,渗透测试,测试用例设计,黑盒测试,白盒测试,目实战视频教程
第一套:【基础精通】软件测试特训营基础到就业班,系统测试,WEB测试,UFT与Selenium自动化测试,LR性能测试视频教程
第二套:【项目实战】软件测试系列之Java Selenium3自动化测试项目实战视频教程
第三套:【微服务课】Spring Cloud微服务最新技术入门到精通视频教程
第四套:【系统学习】Android移动端自动化测试从入门到实战(Java篇)UIAutomator,Robotium,Appium实战进阶视频教程
第五套:【系统学习】Android移动端专项测试与自动化测试(Python篇)UIAutomator,Appium,Unittest框架视频教程
第六套:【性能测试】JMeter深入进阶性能测试体系,接口性能测试,各领域企业实战视频教程
第七套:【项目实战】JMeter全程实战、性能测试实战、分布式性能测试、真实案例分析、基础到精通视频教程
第八套:【性能测试】LoadRunner性能测试基础到精通全程实战视频教程
第九套:【渗透测试】Kali Linux Web渗透测试视频教程
第十套:【系统学习】Appiumapp自动化测试基础到精通视频教程
第十一套:【项目实战】python lenium自动化测试项目实战视频教程(3套)
第十二套:【系统学习】快速上手JMeter性能测试工具视频教程
第十三套:【系统学习】LoadRunner软件性能测试,接口性能测试视频教程
第十四套:【项目实战】Selenium3.0深度解析自动化测试框架设计与实战与平台设计高级测试开发实战视频教程
第十五套:【系统学习】Web自动化测试,Selenium基础到企业应用,用例设计,持续集成视频教程
第十六套:【项目实战】最全面的Java接口自动化测试实战视频教程
第十七套:【项目实战】Python接口自动化从设计到开发,测试框架实战与自动化进阶视频教程
第十八套:【系统学习】达内软件测试零基础到就业视频教程
第十九套:【测试就业】软件测试就业指导视频教程
第二十套:【安卓测试】Android安卓自动化新手进阶测试培训手机app软件开发课
第二十一套:【系统学习】软件测试特训营,自动化测试与UFT应用视频教程
第二十二套:【高新面试】Python高新面试教程移动自动化测试面试面试分析+知识理论+面试技巧视频教程
第二十三套:【高级测试】最新Web自动化测试框架Selenium3.0+Python3,搭建通用的Web自动化测试框架实战视频教程
第二十四套:【高级测试】高级软件测试工程师精英培训班,软件测试工程师(Web自动化+APP自动化+接口自动化+面试)视频教程
第二十五套:【系统学习】软件测试web自动化测试lenium+移动端项目测试appium+接口测试Jmeter+性能测试LoadRunner视频教程
python自动化教程Jmeter性能测试python自动化教程Jmeter性能测试python自动化教程Jmeter性能测试python自动化教程Jmeter性能测试python自动化教程Jmeter性能测试python自动化教程Jmeter性能测试python自动化教程Jmeter性能测试python自动化教程Jmeter性能测试python自动化教程Jmeter性能测试