原地址:https://blog.csdn.net/weixin_44464726/article/details/86152691
Apache JMeter软件的安装与使用
一、JMeter的简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache JMeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
二、JMeter的作用
1、能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2、完全的可移植性和100% 纯java。
3、完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
4、精心的GUI设计允许快速操作和更精确的计时。
5、缓存和离线分析/回放测试结果。
三、与LoadRunner的异同
1、Jmeter的架构跟LoadRunner原理一样,都是通过中间代理,监控&收集并发客户端发现的指令,把他们生成脚本,再发送到应用服务器,再监控服务器反馈的结果的一个过程.
2、Jmeter没有IP欺骗功能,IP欺骗是指在一PC台上多个IP地址来分配给并发用户.这个功能对于模拟较真实的客户环境来说,是较有用.LoadRunner有此功能.
3、Jmeter本身也可进行录制生成脚本,不推荐使用。但是有一个工具badboy,利用这个工具进行录制操作,然后将脚本保存为Jmeter脚本,然后利用Jmeter可以打开并修改脚本
4、Jmeter做性能测试,主要是通过增加线程组的数目,或者是设置循环次数来增加并发用户,而LoadRunner可以通过在场景中选择要设置什么样的场景,然后选择虚拟用户数。
5、Jmeter是开源的,而LoadRunner是商业软件,如果是正版,有技术支持,同时,网络上的资料相当多。
四、JMeter的安装与配置
1、下载并安装jdk,注意jdk版本最好1.8即1.8以上。因为JMeter是基于Java开发的。
2、安装Jmeter,解压zip包
3、新增环境变量JMETER_HOME,填好路径之后,点击确定,具体如附图所示注意:具体路径根据实际情况填写。
4、编辑CLASSPATH变量,在CLASPATH加上 %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar,然后点击确定,再次点击确定,此时路径已经添加完成。如附图所示:
5、双击解压后的文件夹,进入解压后的目录,再点击bin文件夹。
6、进入bin文件夹目录后,找到jmeter.bat文件,双击,并且在提示框点击”运行“,进入此页面,则安装成功。注意:此时会打开一个黑色dos窗口,该窗口不要关闭,若关了该黑色窗口,意味着关闭了JMeter的UI窗口
7、汉化(可忽略),启动软件后,点击options->Choose language->Chinese
8、可参考:https://blog.csdn.net/a13124837937/article/details/79628838
五、JMeter插件的安装(可忽略)
Jmeter如何监控服务器CPU、内存、i/o等资源在并发测试中使用情况。
1、需要准备好插件:JMeterPlugins-Standard-1.4.0、ServerAgent-2.2.1
2、解压JMeterPlugins-Standard-1.4.0.zip,将其中\lib\ext\JMeterPlugins-Standard.jar包复制到jmeter安装目录下的\lib\ext下;重启jmeter,选择监听器,我们可以看到监听器中多了一些东西(这里边就有我们监控要用到的功能),如下图所示:
3、选择上图中的jp@gc-PerfMon Metrics Collector,这个就是我们监控服务器资源的功能,点击之后如下图:
4、到此,我们监控的工作准备的差不多了,还差一个重要的卧底,那就是ServerAgent,我们需要将它放到服务器中,解压下来打开如下图所示:
注意:如果你的服务器是windows,那么直接运行startAgent.bat文件即可;如果你的服务器是linux,那么需要运行startAgent.sh文件即可(运行方式:找到startAgent.sh文件所在路径,打开终端命令行,保险起见可以先将startAgent.sh设置成可执行文件,然后执行命令:./startAgent.sh,这样我们的agent服务就启动了);
5、可参考:https://blog.csdn.net/menofgod/article/details/79009646
六、JMeter的简单使用
1、右键测试计划->添加->线程(用户)->线程组,配置线程数、循环次数、几秒内将所有线程启动
2、右键线程组->添加->取样器->HTTP请求,按照并发测试的接口依次配置,注意:填写路径时由于工具不能自动url编码,所以需要通过工具将测试路径进行编码。
工具:http://tool.oschina.net/encode?type=4
3、右键HTTP请求->添加->监听器,目前本人常用监听器有“图形结果”、“察看结果树”、“汇报结果”、“聚合报告”、“用表格察看结果”,如果想要监控cpu内存等,在监听器中选中“jp@gc - PerfMon Metrics Collector”,并配置,配置如下图所示:
4、此时启动
5、查看并发测试结果
可查看每次请求返回的响应数据等
属性说明:
Sample:每个请求的序号
Start Time:每个请求开始时间
Thread Name:每个线程的名称
Label:Http请求名称
Sample Time:每个请求所花时间,单位毫秒
Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
Bytes:请求的字节数
样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数
平均:每个线程请求的平均时间
最新样本:表示服务器响应最后一个请求的时间
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
属性说明:
Label:每个JMeter的element的Name值。例如HTTP Request的Name
#Samples:样本数量。多少个请求
Average:平均响应时间(单位:)。默认是单个Request的平均响应时间,当使用了TransactionController时,也可以以Transaction为单位显示平均响应时间
Median:中位数,也就是50%用户的响应时间
90%Line:90%用户的响应时间
95%Line:95%用户的响应时间
99%Line:99%用户的响应时间
注:为什么要有*%用户响应时间?因为在评估一次测试的结果时,仅仅有平均事物响应时间是不够的。假如有一次测试,总共有100个请求被响应,其中最小响应时间为0.02秒,最大响应时间为110秒,平均事务响应时间为4.7秒,你会不会想到最小和最大响应时间如此大的偏差是否会导致平均值本身并不可信?
我们可以在95 th之后继续添加96/ 97/ 98/ 99/ 99.9/ 99.99 th,并利用Excel的图表功能画一条曲线,来更加清晰表现出系统响应时间的分布情况。这时候你也许会发现,那个最大值的出现几率只不过是千分之一甚至万分之一,而且99%的用户请求的响应时间都是在性能需求所定义的范围之内的;如下图则是最低响应时间的值出现几率是很小的,实际99%的用户请求响应时间都要20000+。
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量。默认情况下标示每秒完成的请求数(具体单位如下图)
KB/sec:每秒从服务器端接收到的数据量。
Cpu、memory、IO的汇总图
七、JMeter+badbody录制脚本进行web并发测试
1、下载安装badbody,通过badbody内置的浏览器对要测试得页面进行操作
2、点击开始脚本的录制
注意:在录制操作过程中,尽可能避免无用操作。
3、最后点击结束脚本的录制
4、点击Export to JMeter 生成一个JMeter可识别的.jmx文件
5、此时进入Jmeter,右键测试计划,打开刚刚保存的.jmx文件
接下来并发测试的操作如第六章。
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
</div>