性能测试的六种方法 性能测试能力提升-常用知识上篇

本篇文章,我们将主要介绍以下几方面的知识:

  • 线程数&并发用户数
  • 相对并发&绝对并发
  • 吞吐量
  • tps&QPS
  • 响应时间

一、线程数、并发用户数

线程数: 主流的性能测试工具(Jmeter/Loadrunner),以线程式并发的方式,启动复数个线程,让每个线程独立向服务器端发出请求,帮我们达成“短时间内向服务器发送大量请求”的任务。

有时候我们在描述性能测试过程时,会将这个客户端的独立线程数表述为“并发数”。

注意: 这里的“并发”指的是客户端并发,并不是服务端的并发。很简单,客户端能发出很多请求,服务器却未必能处理得了~

并发用户数:某一时刻同时向服务器发送请求的用户数。

需要明白的一个误区:并发用户数和 jmeter 的线程数,它们是不对等的。并发用户数应该和 TPS 是一个概念,假如需求是想获取 1000 个用户同时操作时,系统能否承受得住或者系统各项指标反应如何,我们应该拿 tps 来给出答案。jmeter 的线程数大小仅仅是一个压力的大小概念。

性能测试的六种方法 性能测试能力提升-常用知识上篇(1)

常见问题:计算最大线程数查询功能,需要系统能够在5分钟内能完成5000笔查询业务,同时用户响应时间不超过3s,该用多少线程数施压?计算公式:最大线程数= (单次响应时间业务量)/总的业务时间答案:(35000)/5*60=50

性能测试的六种方法 性能测试能力提升-常用知识上篇(2)

二、相对并发和绝对并发

什么是相对并发和绝对并发?

相对并发:指在一个时间段内发生的事情。在jmeter的测试计划中添加线程组,设置线程属性,2秒之内启动10个线程,其对应的相对并发为5(线程数/启动时间)。

绝对并发:指在同一时刻发生的事情。jmeter可以使用同步定时器(Synchronizing Timer)实现绝对并发,也就是同一个时刻达到了某一集合点才发出请求。

性能测试的六种方法 性能测试能力提升-常用知识上篇(3)

压测时选用哪个更合适?

绝对并发的优点:对服务器来说,会产生一种瞬间高并发。绝对并发的缺点:对服务器来说,平均压力会降低。

根据业务来选择:如果业务场景是瞬间高并发类型的,如抢购、秒杀等,需要加集合点。或者是多场景测试,你需要确保数据流上下游关系,控流的时候可以考虑.其他场景都不需要加,加了集合点后,就不适用tps来衡量系统性能。

性能测试的六种方法 性能测试能力提升-常用知识上篇(4)

集合点功能要慎重选择:因为加了集合点后,系统的平均压力会降低。原因是多线程在集合的时间,服务器和数据库都处于休息状态,他们会有足够的时间去释放连接和内存等恢复工作。

有些加了集合点并发测试通过了,但是上线后就出现某些资源占满情况,就是因为线上真实场景是不会集合的,也就是不会给服务器一个缓解的时间。

三、吞吐量

吞吐量是服务端的指标:吞吐量是站在“量”的角度去度量,是一个参考指标, 是指单位时间内系统能处理的请求数量,体现系统处理请求的能力,这是目前最常用的性能测试指标。

但是光有“量”的数据有时候并无太大价值,一家餐厅1个小时卖出100份餐品和一个月才卖出100份餐品,单从“量”的维度衡量肯定不行,时间维度很重要!

性能测试领域的吞吐量通常会结合上时间维度进行统计。如果吞吐量的“量”以“事务”为统计单位的话,结合时间维度,就可以换算成TPS。

性能测试的六种方法 性能测试能力提升-常用知识上篇(5)

四、TPS & QPS

QPS: Queries Per Second,每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒执行查询sql的次数)。

因此QPS代表的场景不够全面,仅仅适用于只执行单次查询的接口,不建议用QPS来作为系统性能指标。

TPS: Transactions Per Second,每秒事务数,具体事务的定义,是人为制定的,可以是一个接口、多个接口、一个业务流程等等……

以单接口定义为事务为例,每个事务包括了如下3个过程:

  • 向服务器发请求.
  • 服务器自己的内部处理(包含应用服务器、数据库服务器等)
  • 服务器返回结果给客户端

如果每秒能够完成N次这3个过程,TPS就是N。如果多个接口定义为一个事务,那么这多个请求完成一次,算做一个TPS。

性能测试的六种方法 性能测试能力提升-常用知识上篇(6)

TPS和QPS的关系:如果是对一个查询接口(单场景)压测,且这个接口内部不会再去请求其它接口,那么tps=qps,否则,tps≠qps。如果是容量场景,假设n个接口都是查询接口,且这个接口内部不会再去请求其它接口,qps=n*tps。

如何估算TPS:根据已有接口评估:如果是一个老接口–上一次大促峰值的3-5倍为目标TPS如果是一个新接口–可以参考相同业务场景的其他接口目标制定

根据业务量评估:案例:预期20万注册用户,其中每天活跃用户峰值预计占10%,首页存在游客访问则增加一倍;活跃用户平均每人每天访问接口4次;访问时间段大多数在20:00-21:00

计算方式:通过二八原则,80%的业务在20%的时间产生如果是一个新接口峰值TPS=业务量*80%/业务时段(秒)*20%计算:200000*10%*2*4*80%/3600*20%=178

性能测试的六种方法 性能测试能力提升-常用知识上篇(7)

五、响应时间

最小、最大、平均、90th pct响应时间:最小响应时间、最大响应时间、平均响应时间都很好理解。这里只单独说一下90th pct的含义:表示将整个测试过程中,接口所有请求的所有响应时间按从小到大排列为N个点,取N*90%这个点的响应时间即为此请求的90%响应时间,其代表90%的请求在此响应时间以内。

性能测试的六种方法 性能测试能力提升-常用知识上篇(8)

知识扩展:Std.Dev: Standard Deviation

在Jmeter的监听器summary report中,我们会看到有这样的一个字段:

性能测试的六种方法 性能测试能力提升-常用知识上篇(9)

那这个字段是什么意思呢?解释如下:

std.deviation: 标准偏差,一种度量数据分布的分散程度之标准,用以衡量数据值偏离算术平均值的程度.

标准偏差的值越小,则说明各个样本的响应时间越接近平均值,一定程度上也表明系统更加稳定.

计算标准偏差的值,可以在Excel中使用公式:=STDEV.P() 来计算.

举个例子:两组数据,平均值都是70,但是明显第二组数据相比第一组数据,各个样本的值更接近平均值:

性能测试的六种方法 性能测试能力提升-常用知识上篇(10)

计算两组数据的标准偏差值,第二组2.16,第一组17.07,因此标准偏差的值越小,则说明各个样本的值越接近平均值:

性能测试的六种方法 性能测试能力提升-常用知识上篇(11)

以上就是本次的全部内容,如果对你有帮助,麻烦点个赞 收藏 分享,你的支持就是我更新最大的动力~

下一篇文章,我们将主要介绍以下几方面的知识:

基准测试、负载测试、压力测试、容量测试长连接、短连接、连接池分布式压测混合场景压测

最后,如果你对软件测试感兴趣,欢迎百度搜索“特斯汀软件测试腾讯课堂”或关注公众号“特斯汀软件测试”,里面涵盖很多精彩免费视频或干货知识。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页