使用 Apache JMeter™工具进行性能测试

一、性能测试的定义

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

二、性能测试的关注点  --- 系统吞吐量。

吞吐量是衡量系统性能的一个重要指标,在计算机领域,一个系统的吞度量(承压能力)与CPU的运算能力、外部接口、IO、处理任务的程序质量等紧密关联。当一个计算机系统的CPU运算速度更强,外部接口性能更好,IO传输速度更快、程序算法的质量更高的时候,相应地,系统处理任务的的速度就会越快,吞吐量自然就会上去,这时候我们就会认为系统的性能是更好的。
       当我们想选择一些参数来评估一个系统的性能的时候,我们经常会见到 QPS(TPS)和并发数这两个词,QPS(TPS)指的是 每秒钟系统处理的request/事务 数量。并发数指的是  系统同时处理的request/事务数。那么这两个参数是如何衡量系统吞吐量的呢?这里需要清楚的是,QPS/并发数=响应时间,系统的响应时间越短,说明系统提供服务的能力越好。但是由于软硬件的限制,每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,因为系统会超负荷工作,调度程序会更频繁的进行任务上下文切换、内存等其它消耗会导致系统性能下降。

三、如何提高系统的性能? --- 系统保持有一个合理的性能。

当我们部署一个Web系统程序的时候,这个系统的性能高低对用户而言直接的反馈就是响应时间,当响应时间越低,用户的使用体验越好。那我们该如何提高系统的性能呢?作为网站的运维人员和程序开发人员,对系统的性能提升方式有什么不一样的关注点呢?
      3.1 运维人员的关注点
         ① 服务器、数据库、网络的资源如何配置才能最优
         ② 更换哪些硬件设备才可以提升性能,软硬件是否可以扩展
         ③ 系统的性能瓶颈在哪里,是哪方面因素导致的。
         ④ 系统能否保持7*24小时的业务访问,最多支持多少用户访问,系统最大的业务处理量是多少?
      3.2 开发人员的关注点
         ① 系统架构、数据库如何设计才能保持结构最优
         ② 代码如何编写才能最大化的提高效率。
      从上面不难看出,软硬件的协同优化才能给系统提供一个更好地性能。当然也并不是系统的资源配置的越高越好,我们也要根据业务量来合理的配置资源,以免造成不必要的浪费。

四、Apache JMeter™ 介绍

JMeter 是Apache组织开源的一款使用Java语言编写的压力和负载测试工具。最初被设计用于Web应用测试但后来扩展到其他测试领域。主要用来测试部署在服务器端的应用程序的性能,还可以可以通过JDBC对数据进行测试、对FTP服务器进行测试等等。

五、JMeter的安装与配置

由于JMeter是采用Java开发的,因此系统需要安装Java的JRE运行环境,如果需要开发JMeter的相关插件,需要安装JDK开发环境,需要注意的是要配置好相应的环境变量、版本的匹配问题。然后登陆JMeter官网,下载安装包进行安装即可。安装完成后,在bin目录下双击执行jmeter.bat,就可以使用这个程序进行测试了。

六、 JMeter使用实例

6.1 流程综述
       首先需要在Test Plan 下添加 Threads(Users),这个组件是我们进行一次测试计划的基础,我们可以设置有多少线程参与了并发请求,多久这些线程可以全部启动完毕,然后还可以设置这些线程会持续请求多长时间,这有点模拟真实用户并发请求的意思。然后在这个基础上可以添加具体的请求,比如HTTP(s)请求啊,FTP请求啊等等,然后要对这些请求设置具体的参数,例如请求的URL、请求方式,请求参数等等。由于有时候打开一个页面可能会涉及较多的HTTP请求,为了完整的测试这个页面的打开性能,需要将这些请求包含在一个事务当中,这样这些请求就会被一同执行。 再有时候我们需要对某接口进行并发量测试,想让数个Thread同时请求一个接口,由于之前只是设置了Threads在多长时间内启动完毕,并不能满足要求,因此需要引入集合点这个组件,在某一个请求前设置集合点的意思是等待特定数量的线程启动完成,然后同时并发执行请求。我们设置了线程组,添加了请求,配置了事务和集合点等等这些东西,那接下来肯定想看看请求处理之后的结果啊,有没有请求成功啊,成功率是多少啊,请求执行了多久时间啊,这时候我们就要添加监听器组件,看看这些线程执行后的具体情况。有时候WEB页面的请求设置的很复杂,比如有些请求需要登陆才可以进行,那这时候我们就得要设置一些Cookie、Header管理器等等。我们还可以对请求携带的参数进行参数化管理,将相关的参数存放在某一文件中,然后从这个文件中读取参数。
       总之,我们要清楚一个事,JMeter的目的是通过线程组模拟多用户进行并发请求,从而来了解系统提供相关服务的能力大小,在不同的场景下用户进行请求的情况是千差万别的,我们要做的就是尽可能的模拟这些真实应用场景下的用户请求。

6.2 测试示例
      测试百度搜索的接口,并对搜索参数进行参数化,设置集合点模拟5个用户并发请求,添加监听器查看请求结果。

1)待测试的接口:https://www.baidu.com/s?ie=utf-8&wd=IT之旅CSDN。

2)测试过程解释

①添加线程组,并设置好线程组的基本参数。需要设置的有:线程组名称,线程数,线程启动时间,持续时间等等。

②添加HTTP请求,配置请求参数。服务器IP,路径,请求参数等。

③添加 监听器 -> 结果响应数,查看请求的执行情况。

这时候,一个简单的HTTPS请求就已经设置完成了,点击执行按钮可以看到请求已经成功执行了。 接下来可以更进一步的设置集合点等参数了。

④对请求参数进行参数化设置。添加 -> 配置元件 -> 用户自定义变量

当然,也可以将请求的参数以scv格式的形式存放于文件中,

⑤集合点设置,让特定数量的线程同时发起请求。如果线程组要测试很多请求,值得注意的是集合点设置的位置,一定要和需要进行并发测试的那个请求绑定在一起,不然是没有效果的。

⑥事务控制器的作用就是让线程连续执行多个请求,将这多个请求看成一个整体。我们只需要把多个请求一起放在事务控制器下面即可。

七、 总结

性能测试是通过某种特定的方式对被测试系统按照一定的测试策略进行施压,获取该系统的响应时间、运行效率、资源利用情况等各项性能指标,从而来评价系统是否满足用户性能需求的过程,它是我们项目上线之前必须要进行的一个测试步骤。

Apache JMeter™是一款优秀的压力和负载测试工具,能很好地满足我们对性能测试工具的要求,因此,掌握好这个工具的使用对测试人员来说是必要的。

使用 Apache JMeter™工具进行性能测试相关推荐

  1. jmeter工具进行性能测试

    jmeter工具进行性能测试 性能测试理论概述 背景 性能测试指标 TPS 平均响应时间 TOP响应时间 其他指标 性能监控指标 性能测试流程 jmeter工具 jmeter常用组件 jmeter命令 ...

  2. Apache JMeter 记一次使用HTTP工具POST提交JSON数据进行送积分高并发压测(二)

    一.前言 前面文章已经介绍Apache JMeter的基本概率和如果使用,但作为一个开发人员,自己写的代码都应该要好好的COD EREVIEW,好好的自测吧.但是有些场景比如高并发.负载和性能测试的时 ...

  3. 性能测试(三)Jmeter工具

    Jmeter 简介 ·Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. ·它可以用于测试静 ...

  4. Apache JMeter压测工具

    1.工具介绍 是什么 JMeter是一个软件,使负载测试或业绩为导向的业务(功能)测试不同的协议或技术. Apache软件基金会的Stefano Mazzocchi JMeter的最初的开发.他写道: ...

  5. 压力测试工具Apache JMeter:4:压力测试报告说明与使用技巧

    Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件.这篇文章介绍一下使用JMeter生成的报告的概要说明,以及使用的技巧和注意事项. 环境准备 关于Apache JMe ...

  6. 压力测试工具Apache JMeter:3:压力测试报告的生成方法

    Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件.这篇文章介绍一下使用JMeter进行压力测试的两种压力测试报告生成的方法. 环境准备 关于Apache JMeter ...

  7. 压力测试工具Apache JMeter:8:基于Alpine的JMeter镜像

    Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件.这篇文章介绍一下如何使用Alpine基础镜像将JMeter的压测能力进行容器化,并结合具体的示例来演示此镜像从构建到 ...

  8. 压力测试工具Apache JMeter:11:搭建容器化分布式测试环境

    Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件.这篇文章介绍一下建立基于JMeter的一主多从的容器化压测环境. 基于Alpine的JMeter镜像 关于基于Alp ...

  9. Java压力测试工具--Apache JMeter的安装与使用

    一.JMeter 这是一个用于java的压力测试工具,可以用于测试静态和动态资源,例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库.FTP 服务器等 具体的使用见下面的博客链接 ...

最新文章

  1. 解决 git extensions 每次提交需要输入用户名和密码
  2. Oracle中如何使用imp语言导入dmp文件
  3. ubuntu18.04 安装qt5.12.8及环境配置的详细教程
  4. 898 C. Phone Numbers
  5. 拆分列成多行_把订单按货品拆分成多行(上)
  6. 如何使用数据库可移植性将邮箱数据库还原到新服务器
  7. jQuery LigerUI 使用教程入门篇
  8. ios下点击label包含的input checkbox或radio无效问题
  9. html canvas blob image 污染源
  10. Jordan Lecture Note-9: Principal Components Analysis (PCA).
  11. android 拉伸图片
  12. ZeroMQ API(一) 总序
  13. eclipse搭建springmvc
  14. 2021-01-03
  15. Simulink飞行动力学教程
  16. matlab中矩阵运算lu,matlab中矩阵lu分解
  17. 如何实现2019新年愿望:梦想还是要有的,但不能靠“万一实现了呢
  18. python面向对象,烤地瓜应用
  19. PVE 天龙八部TLBB服务端搭建(一)--linux环境搭建
  20. 使用Qt开发的优秀软件汇总

热门文章

  1. sql server从一个数据库复制一张表到另外一个数据库
  2. Ubuntu 16.04 x64 常用软件
  3. 四格漫画《MUXing》——请客记
  4. [C++基础]队列queue中的常用函数
  5. 访问Cache和主存的效率计算问题
  6. django之vue跨域请求
  7. 【转载】C++ function、bind和lambda表达式
  8. jmeter导出测试报告
  9. mySql 查询当天、本周、最近7天、本月、最近30天的语句
  10. LVS(DR)+keepalived+nfs+raid+LVM