【软件测试】Jmeter性能测试(性能测试,Jmeter使用与结果分析) |
您所在的位置:网站首页 › 功能测试需要掌握什么 › 【软件测试】Jmeter性能测试(性能测试,Jmeter使用与结果分析) |
文章目录
前言一、性能测试1. 什么是性能测试?2. 性能测试的重要性3. 性能指标——QPS和TPS①QPS②TPS
二、压测工具Jmeter1. 什么是Jmeter?2. Jmeter主要元件3. 下载安装
三、一个简单的测试案例①新建一个线程组②新建一个HTTP请求③添加HTTP信息头(请求头)④添加合适的响应断言⑤添加监听器⑥点击运行
四、 Jmeter结果分析1.如何得到可靠的测试报告?①简单数据写入器②后端监听器③其他解决方案
2.简单数据写入器+HTML报告DashBoard案例演示①修改合适的测试规模②添加简单数据写入器③运行生成文件④生成HTML报表
3.结果分析①成功率②响应时间变化③TPS
4.性能优化方案
前言
性能测试是一个全栈工程师/架构师必会的技能之一,只有学会性能测试,才能根据得到的测试报告进行分析,找到系统性能的瓶颈所在,而这也是优化架构设计中重要的依据。 本文简单讲述了性能测试以及性能测试工具Jmeter。另外,我会将其他测试相关的文章也放在这个系列。 一、性能测试 1. 什么是性能测试?性能测试就是通过特定的方式对被测试系统按照一定测试策略施加压力,获取该系统的响应时间、TPS、吞吐量、资源利用率等性能指标,来检测系统上线后能否满足用户需求的过程。 2. 性能测试的重要性性能测试是检验我们系统性能的重要步骤,只有经过性能测试,得到对应的测试报告,才能根据报告中所呈现的现象(成功率、响应时长、TPS等)来进行分析,找出系统的瓶颈所在,优化系统的性能。 3. 性能指标——QPS和TPS ①QPSQPS,全名 Queries Per Second,意思是“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 ②TPSTPS 即 Transactions Per Second的缩写,每秒处理的事务数目。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。 客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息作出的评估分。 Qps 基本类似于 Tps,但是不同的是,对于一个页面的一次访问,形成一个 Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。 QPS和TPS都是衡量一个系统性能的重要指标之一。 二、压测工具Jmeter 1. 什么是Jmeter?ApacheJMeter ,是一个100%纯Java的开源软件,旨在加载测试功能行为和测量性能。它最初设计用于测试Web应用程序,但后来扩展到其他测试功能。 相较于世面上一些其他性能测试工具,Jmeter是为数不多的既好用又开源免费的测试工具。 2. Jmeter主要元件1、测试计划:是使用 JMeter 进行测试的起点,它是其它 JMeter测试元件的容器 2、线程组:代表一定数量的用户,它可以用来模拟用户并发发送请求。实际的请求内容在Sampler中定义,它被线程组包含。 3、配置元件:维护Sampler需要的配置信息,并根据实际的需要修改请求的内容。 4、前置处理器:负责在请求之前工作,常用来修改请求的设置 5、定时器:负责定义请求之间的延迟间隔。 6、取样器(Sampler):是性能测试中向服务器发送请求,记录响应信息、响应时间的最小单元,如:HTTP Request Sampler、FTP Request Sample、TCP Request Sample、JDBC Request Sampler等,每一种不同类型的sampler 可以根据设置的参数向服务器发出不同类型的请求。 7、后置处理器:负责在请求之后工作,常用获取返回的值。 8、断言:用来判断请求响应的结果是否如用户所期望的。 9、监听器:负责收集测试结果,同时确定结果显示的方式。 10、逻辑控制器:可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。 3. 下载安装进入官网,点击左侧的Download Releases选择和是的版本即可下载。 进入bin目录,双击运行jmeter.bat启动jmeter,
如果不习惯英文也可以在设置里进行更改 这里我演示一个测试常规restful接口的例子。演示接口的项目来源于上次参加服创省赛时写的网脉铁塔监测物联网平台,这个接口主要是获取设备列表。正常获取响应结果如下: (1)线程数:即虚拟用户数。设置多少个线程数也就是设置多少虚拟用户数 (2)Ramp-Up时间(秒):设置虚拟用户数全部启动的时长。如果线程数为20,准备时长为10秒,那么需要10秒钟启动20个线程。也就是平均每秒启动2个线程。 (3)循环次数:每个线程发送请求的个数。如果线程数为20,循环次数为10,那么每个线程发送10次请求。总请求数为20*10=200。如果勾选了“永远”, 那么所有线程会一直发送请求,直到手动点击工具栏上的停止按钮,或者设置的线程时间结束。 这里我们设置30个线程(不要加太多,这里只是为了演示), 启动时间设置为3s,循环次数为3次
这里需要添加对应的消息头信息,在大多数web系统里,往往都对api接口做了权限认证,而这次测试的系统也不例外,是典型的token机制,如果不在请求头里加上合法的token,那么这个测试是会被拦截的,也就没办法对业务接口进行测试。所以这里需要把请求头中token复制过来(不同系统权限设计不同,我这里是X-Access-Token)。 当然如果是使用cookie机制来实现的权限认证,则需新建一个Cookie管理器,这里就不多赘述了。
对相应结果添加合适的断言 JMeter有许多UI Listener,可用于直接在JMeter UI中查看结果: 以树形式查看结果:查看结果树显示所有样本响应的树,允许您查看任何样本的响应。图形结果:图形结果监听器生成一个简单的图形,绘制所有采样时间,聚合报告:聚合报告为测试中的每个不同命名的请求创建一个表行,在表中查看结果:此可视化工具为每个样本结果创建一行。与查看结果树一样,此可视化工具使用大量内存,聚合图:聚合图与聚合报告类似。主要区别在于聚合图提供了一种生成条形图并将图形保存为PNG文件的简便方法,生成摘要结果:此测试元素可以放在测试计划中的任何位置。生成到目前为止测试运行的摘要到日志文件和/或标准输出。显示运行和差异总计。选择合适的结果呈现方式,这里我加了查看结果树、汇总报告和图形结果 点击运行图标便可运行测试了 运行完成后我们可以点击对应的监听器查看运行结果。 以上我们便完成了一次简单的测试案例,但我们的测试还未结束。我们需要对测试结果进行分析,但是在真实项目中上述的测试结果是不可靠的,只能用作调试。你如果细心的话,应该能在运行Jmeter的命令行里找到这句话 在负载测试期间不得使用图形结果,因为它消耗了大量资源(内存和CPU)。仅用于功能测试或测试计划调试和验证期间。 大多数UI监听器非常适合调试/测试目的。不要期望达到高负荷(> = 500个用户),谨慎使用它们。这些侦听器设计用于在JMeter UI中运行负载测试时快速获取指标,以实现轻负载。(Generate HTML report 在用户配置文件一栏我们可以选择bin目录下有的user.properties文件,也可以根据官网用户手册去配置一个。这里我们选择bin目录下的文件即可。 输出目录我们选择一个合适的空目录即可。 点击index.html即可看到测试结果 报告图表很多,以下几个我们需要特别注意: ①成功率在仪表盘,我们可以清楚看到成功请求的占比,在本次测试中,成功率99.9%,这是完全可以接受的
在这次测试中请求时长达到了恐怖的9000ms,一般用户是没办法忍受的,所以,在1000个用户下(1000个模拟线程),系统响应没法达到用户期望。 ③TPSTPS 即 Transactions Per Second的缩写,每秒处理的事务数目。 这个是我们经常拿来当做系统性能好坏的指标之一,也是在微服务架构中最常提到的词。 这里我们可以看到我们测试的接口TPS大概在138左右。 4.性能优化方案根据测试报告所表现出来的性能,我们可以结合实际cpu、内存负载率去判断系统瓶颈,针对自己的业务场景进行优化。 由于博主也没有过多调优经验,在此也就不多赘述了,未来如果遇到相关的问题了再回来补充。 最后, 愿大家以梦为马,不负人生韶华! 与君共勉 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |