Jmeter分布式压力测试工具的使用

一、压力测试简介

     软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

      性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

 

  •  负载测试:模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。负载测试更多地体现了一种方法或一种技术。
  •  压力测试:在强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。

二、性能测试指标

 

  •  RPS(Request Per Second):每秒处理请求数(处理开始到处理结束 中间时间成为响应时间) 可以通过测试工具 模拟多线程访问某个http计算 jmeter中是通过聚合报告的throughput(吞吐量)查看 不同的系统由于cpu 内存 磁盘 网络的限制 rps(吞吐量重要指标)也就不同 
  •  QPS/TPS(Query/Transcation Per Second) :每秒查询或者事务数 每个请求可能是基于查询或者修改目的 请求被分为查询请求和事务请求 一般互联网系统QPS>TPS  可以说RPS是QPS和TPS的总和
  •  PV/UV:网站流量是指网站的访问量,用来描述访问网站的用户数量以及用户所浏览的网页数量等指标,常用的统计指标包括网站的独立用户数量、总用户数量(含重复访问者)、网页浏览数量、每个用户的页面浏览数量、用户在网站的平均停留时间等。网站访问量的常用衡量标准:独立访客(UV) 和 综合浏览量(PV),一般以日为单位来衡量和计算。
         独立访客(UV):指一定时间范围内相同访客多次访问网站,只计算为1个独立访客。
         综合浏览量(PV):指一定时间范围内页面浏览量或点击量,用户每次刷新即被计算一次。
  •  并发量:就是同一时刻服务器在同时处理多少个请求  QPS=(同一时刻处理的请求 也就是并发量)/响应的时间,一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。

三、Jmeter简介

Apache Jmeter是一款用于接口测试和压力测试的,可以用于静态和动态资源的测试;

四、Jmeter的安装

直接登录http://jmeter.apache.org/download_jmeter.cgi进行下载,下载完毕之后打开bin目录,启动jmeter.bat就可以;

Jmeter分布式压力测试工具的使用

Jmeter和JDK的版本对应:3.0==JDK1.7、4.0==JDK1.8

五、Jmeter测试实例(模拟网站测试)

模拟一个网站测试,至少需要用户,发送请求,查看结果这三个过程;

  1. 添加线程组(用户)

添加线程组需要设置线程数量,以及设置调用出错时要继续还是停止线程,还是停止测试;还有设置并发线程数,线程循环次数,Ramp_Up Period(in seconds)设置要在规定时间内执行完毕,时间单位为秒。

Jmeter分布式压力测试工具的使用2)添加请求

   请求需要填写协议类型、IP、端口号、方法、路径

Jmeter分布式压力测试工具的使用

Jmeter分布式压力测试工具的使用

  1. 添加监视器(查看结果)

在Jmeter中查看结果可以添加查看结果树,聚合报告或者图形结果还有用表格查看结果

查看结果:

Jmeter分布式压力测试工具的使用

 

   聚合报告:

Jmeter分布式压力测试工具的使用

图形结果:

Jmeter分布式压力测试工具的使用