概 述
Apache JMeter 是 Apache组织开发的基于 Java的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web应用测试但后来扩展到其他测试领域。它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。
JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。
通过官网 http://jmeter.apache.org/即可方便地下载使用 JMeter,不过注意需要预先准备好 Java环境。
JMeter基本概念
在介绍如何使用Jmeter之前先介绍下Jmeter里的一些基本概念:
1)测试计划 是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
2)线程组 代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。
3)取样器(Sampler) 模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、ftp请求等等。
4)监听器 负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。
5)逻辑控制器 允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
6)断言 用于来判断请求响应的结果是否如用户所期望,是否正确。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。
7)定时器 负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。
8)配置元件 维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
9)前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
接下来模拟高并发进行压力测试
建立线程组
要想模拟高并发,线程组是必不可少的,所以首先我们建立一个线程组
配置线程组
这里是建立了300个线程, Ramp-UpPeriod
参数是为了防止一下子创建300个线程导致程序假死而设计的,意思是在多少秒之内建立起所有的线程。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】
建立一个循环控制器
进行压力测试,不可能只是让每一个线程进行一次操作。肯定是让每一个线程一直循环的往下跑。这里就设置为永远了,手动进行停止才生效
循环控制器配置
设置http信息头管理器
因为测试的网站做了访问限制,只有浏览器才能进行访问,所以必须指定 User-Agent
去模拟浏览器进行请求。
新建http信息头管理器
http信息头管理器配置
设置一个固定定时器
这一步的作用是让线程每过多少毫秒进行下一次操作,我这里设置500毫秒也就是每一个线程1秒进行2次操作
新建固定定时器
固定定时器配置
设置一个http请求
这里的参数都很好理解,需要注意的是 服务器名称或ip这里我们也可以填写域名,还有路径这里不需要加域名或者服务器ip
添加HTTP请求
HTTP请求配置
图形结果
图形结果监视器
图形结果
聚合报告
查看结果树
测试计划的排列顺序
这里的顺序是有讲究的,从结构上可以看出,也可以这么类比
创建了一个线程组 for(循环多少次){ 设置请求头 设置sleep时间 进行http请求 }
结果的分析
- 聚合报告
查看聚合报告如下:
Samples
本次场景中一共完成了多少个Transaction
Average
平均响应时间 (ms) Median
统计意义上面的响应时间的中值 (ms) 90%Line
所有transaction中90%的transaction的响应时间都小于xx
Min
最小响应时间 (ms)
Max
最大响应时间 (ms)Error
出错率Troughput
吞吐量,单位:transaction/sec
KB/sec
以流量做衡量的吞吐量
- 以树状列表查看结果
我们可以看到很详细的每个 transaction它所返回的结果,其中红色是指出错的transaction,绿色则为通过的。如果你测试的场景会有很多的transaction完成,建议在这个Listener中仅记录出错的transaction就可以了。要做到这样,你只需要将Log/Display:中的Errors勾中就可以了。
若有错误或者不当之处,可在评论区反馈,一起学习交流!
END今天的分享就到此结束了,点赞关注不迷路!