JMeter是一个软件,使负载测试或业绩为导向的业务(功能)测试不同的协议或技术。 Apache软件基金会的Stefano Mazzocchi JMeter的最初的开发。他写道:它主要对 Apache JServ(现在称为如Apache Tomcat项目)的性能进行测试。Apache后来重新设计JMeter 增强的图形用户界面和添加功能测试能力。这是一个具有图形界面,使用Swing 图形API 的 Java 桌面应用程序,因此可以运行在任何环境/工作站接受一个Java 虚拟机,例如:在Windows,Linux,MAC等。
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
下载地址:http://jmeter.apache.org/download_jmeter.cgi
http://www.jmeter.com.cn/2800.html
Jmeter线程组默认包含三种:线程组、setUp线程组、tearDown线程组。线程组之间的执行顺序为:setUp线程组->线程组→tearDown线程组。多数情况都是选用线程组,setUp线程组用于做一些脚本的前置准备,比如:跨线程组设计时,需要先登录,需要连接数据库等操作;tearDown线程组用于做一些脚本执行完后回收资源的操作;如:执行完脚本后需要注销测试数据,关闭数据库连接等操作。
线程数:配置几个就代表有几个虚拟用户
Ramp-Up 时间(秒):表示从第一个虚拟用户开始生成直到最后一个虚拟用户开始生成的时间,加入配置了5个虚拟用户,Ramp-Up 设置成10s,那么jmeter会每隔2s生成1个虚拟用户,这个选项主要的作用是控制并发的强度,不让虚拟用户在同一时间产生从而对系统造成多大的复杂,Ramp-Up设置成0,那么所有用户将会同时立即产生
循环数:要么是N次,要么是永远
调度器:就是定时执行的设置方式。我们可以设置在未来的某个时间开始执行也可以设置多少秒后开始执行。
查询运营商基础信息,请求头设置上一步登录获取到的token值(在同一个线程组内)查询运营商基础信息,请求头设置其他线程组登录获取到的token值(在不同的线程组内)
先将获取到的token设置成全局变量,注意:BeanShell后置处理程序必须要在JSON方式提取token值下面(可拖动移动顺序)
其他线程组设置token值
平均值:响应时间的平均用时,单位是毫秒。比如这里的平均响应时间是6361毫秒
中位数:响应时间的中位数,单位是毫秒。
90%百分位:90%的响应时间小于该数值,单位是毫秒。这里有90%的响应时间小于12840毫秒
95%百分位:含义和90%类似
99%百分位:含义和90%类似
最小值:本轮测试最小响应时间,单位是毫秒。
最大值:本轮测试最大响应时间,单位是毫秒。
异常%:本轮测试出现异常的请求比例。
吞吐量:可以理解为QPS,即是我们测试的接口处理请求的能力。比如这里是平均每秒可以处理40.2次请求
接收KB/Sec:响应数据的接收速率
发送KB/Sec:请求数据的发送速率
RT:执行一个请求从开始到最后收到响应数据所花费的总体时间
QPS:代表每秒能响应的查询次数(查询:用户发出的请求到服务器做到响应成功的次数)QPS=并发数/RT 或者 并发数=QPS*RT
TPS:代表每秒处理的事务数,一个事务是指一个客户机向服务器发起请求,然后服务器做出反应的过程,客户机发起请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
一个系统,如果每天 80% 的访问集中在 20% 的时间里,这 20% 时间就叫做峰值时间。
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
1、每天300w PV 的在单台机器上,这台机器需要多少QPS?
( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)
2、如果一台机器的QPS是58,需要几台机器来支持?
139 / 58 = 3