https://mp.weixin.qq.com/s?__biz=MzI5NzIyMjQwNA==&mid=2247484370&idx=1&sn=618ea4d51907d9f2be7bf368acf402e8&chksm=ecb92bb9dbcea2afcc18c913dba917309bb8b2708e421e14baa5abff2e848c5a4b61d89f4209&scene=21#wechat_redirect简介
Jmeter是apache组织使用纯java开发的一个开源免费测试工具,它可以实现接口和性能测试。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领 域。它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、 Java 对象、数据库、FTP 服务器, 等等。Jmeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回 了你期望的结果。
软件包下载地址
Jmeter官网:http://Jmeter.apache.org/ Jmeter下载地址:http://Jmeter.apache.org/download_Jmeter.cgi
安装:
首先安装JDK,并且配置好环境变量,这个就不在赘述了。在bin目录下,双击jmeter.bat。
目录简介
先大概了解下各个目录的作用
bin目录:主要存放可执行文件,主程序的jar包,配置文件,日志文件等。常用文件:
-
jmeter.bat:windows下的应用启动文件。
-
jmeter.sh:linux下启动文件。
-
jmeter.log:应用运行的日志文件。
-
jmeter.properties:系统配置文件,经常需要根据需要修改。
说明:jmeter.bat/jmeter.sh:启动脚本中,可以对Jmeter的启动参数JVM堆内存大小进行配置,默认为512M,建议修改成1024M。* setHEAP=Xms1024m-Xmx1024m*
docs目录:存放Jmeter官方API文档,便于进行二次开发。extras目录:扩展插件目录,常用的是 Jmeter与ant集成的文件。lib\ext目录:该目录存放的是Jmeter的插件或者扩展组件。Jmeter会自动在lib和ext下寻找需要的类。一般扩展的依赖包,会打成jar包放入ext目录。printtable_docs目录:该目录存放的是官方用户手册。
Jmeter的体系结构
两个维度:
-
X1到X5模拟一个负载请求的过程
-
Y1完成请求的实现,Y2断言:实现请求结果的判断,Z监听器:实现结果收集,分析统计。
组件分类
-
测试计划(Test Plan):使用 Jmeter 进行测试的起点,它是其它 Jmeter 测试元件的容器。
-
线程组(Thread Group):代表一定数量的并发用户,它可以用来模拟并发用户发送请求。
-
采样器(sampler):定义实际的请求内容,被线程组包含,比如HTTP请求、java请求等。
-
监听器(Listener) :响应结果的显示,统计等。
-
逻辑控制器(Logic Controller) :帮助用户控制Jmeter的测试逻辑及执行顺序。
-
断言(Assertions) :用来检查从服务器获得的响应内容是否符合预期。
-
配置元件(Config Element) :初始化默认值和变量,以便采样器使用。
-
前置处理器(Pre Processors)和后置处理器(Post Processors) :请求前后的处理操作。
-
定时器(Timer):为采样器设置等待时长。
原件库的执行顺序
-
配置元件
-
前置处理器
-
定时器
-
sampler
-
后置处理器
-
断言
-
监听器
作用域
在Jmeter中,配置元件、定时器、前置处理器、后置处理器、断言、监听器都是用来辅助脚本功能实现的,都是 依赖于Sampler组件,这六类组件和Sampler之间就存在一个作用关系,即作用域。作用域的原则
-
取样器(sampler):不与其它元件相互作用,所以不存在作用域的问题。
-
逻辑控制器(Logic Controller):只对其子节点中的采样器和逻辑控制器起作用。
-
除采样器和逻辑控制器元件外,其他6类元件,如果是某个sampler的子节点,则该元件只对该sampler及子节点起作用。
-
除采样器和逻辑控制器元件外的其他6类元件,如果其父节点不是sampler ,则其作用域是该元件父节点下的其他所有后代节点,包括内部节点。
在同一作用域范围内,有多个相同类型元件,则按照它们在测试计划中的顺序依次执行。
一个简单的http请求测试
首先添加线程组:
线程组用来模拟用户,所以也叫Users。一个线程组模块可以包含多个线程,每个线程代表一个用户,这样可以模拟高并发下的请求,并根据网站的响应信息来判断网站的相关性能。
线程数:虚拟用户数,即并发数,一个线程表示一个虚拟用户;
Ramp-Up Period:所有线程启动的时间,单位s。通过这个参数可以设置每个线程间的启动间隔;
循环次数:测试循环的次数,如果勾选了“永远”,那么所有线程会一直发送请求,直到手动停止运行脚本;
添加http请求
一般填写如下要素:
添加监听器
监听器(Listener):是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展示的一系列元件。
图形结果、查看结果树、聚合报告、用表格察看结果都是我们经常用到的元件。
点击启动按钮,在监听器中查看请求结果
添加聚合报告
聚合报告(aggregate report)
对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,错误率,大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量.
我们修改线程数为10,点击运行,查看你聚合报告统计结果。
。
每个接口请求会显示独立的一行数据,每行有13个字段,含义分别如下:
-
Label:请求名或者请求标签,每个JMeter 的组件(例如 HTTP Request)都有一个 “名称” 属性,这里显示的就是“名称”属性的值。
-
#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示就是100了。
-
Average:平均响应时间,默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间。
-
Median:中位数,也就是所有请求响应时间中排在中间的那个响应时间点,也就是50% Line,请参考90% Line解释。
-
90% Line:90%用户请求响应时间,如果把某次任务的所有请求的响应时间按从小到大排序,它是指排在90%处那个点的请求的响应时间,也就是说有90%的请求的响应时间小于等于这个响应时间。后面的50/60/70/80/90/95/99 % Line 也是类似的含义。
-
95% Line:95%用户请求响应时间,请参考90% Line解释。
-
99% Line:99%用户请求响应时间,请参考90% Line解释。
-
Min:最小响应时间,所有请求样本中的最小响应时间。
-
Max:最大响应时间,所有请求样本中的最大响应时间。
-
Error%:本次测试中“出现错误的请求数/请求的总数”百分比值。
-
Throughput:吞吐量,就是服务器在一定时间范围内处理的请求数。在本报告中它的含义其实其实是吞吐率,表示每秒完成的请求数(Request per Second),此指标代表服务器的处理能力,比如支付宝峰值处理量达到12万笔/秒。
-
Received KB/sec:每秒从服务器端接收到的数据量。
-
Sent KB/sec:每秒从客户端发送到服务器端的数据量。