• 0
  • 0
分享
  • 寻找负载测试拐点的方法
  • 恬恬圈 2019-08-23 13:45:59 字数 1833 阅读 2016 收藏 0

软件性能测试中有一类很重要的测试——负载测试,包括并发测试和容量测试。负载测试的重要工作在于找到系统的性能拐点。

在并发测试中我们不断地增加事物的用户并发数,观察系统所可以接受的并发数是否与设置的并发数保持一致,或者在增加并发数的时候观察系统的响应时间是否在可接受的范围之内(比如<3秒》)。当并发数少的时候,实际并发数与设置并发数是一致的,当系统并发数达到一定的数量后,实际并发数保持恒定,不会受到设置并发数的增加而增加了。或者系统的响应时间会超过设定的目标值。如图一所示,A即为我们找到的并发测试的拐点。

1.png


图一:负载测试的拐点

同样,在容量测试中,我们不断地往数据库中灌入数据,在开始数据量比较少的时候,系统的响应时间是在一定的可接受范围之内,但是当数据量达到一定的规模之后,系统响应的响应时间会远远高于设置的可接受范围之内。

如何去寻找性能负载测试中的拐点呢?我发现在许多公司采用的是逐步逼近法,即先设定一个预估值进行测试,观察系统的响应情况,然后增加一定的数量,观察系统的变化,直到系统超出我们所预估的值。

比如,在并发测试的时候,我们先预估设置并发用户为2000,然后以200的速度递增,检查系统的响应时间是否小与3秒,从而找出并发测试的系统拐点,数据如下:

2.png


当系统设置并发数为5000的时候,系统响应时间为3.14秒,超出了可接受范围,我们就不继续增加了,在5000到4800中寻找一个中间值4900进行测试,测试结果为2.94秒,仍旧在可接受的范围之内,所以我们断定拐点一定在4900到5000之间,于是我们寻找4900与5000中的中间点4950进行测试,得到2.99这个结果,由于非常接近3了,且两次测量值的间隔在50之内(4950-5900=50)。

在实际工作中,当我们对系统响应时间没有或者无法预估的时候,我们也往往采取系统通过率是否在可接受范围之内来评测。一般系统通过率可接受范围 = 通过的事务数(Pass)/全体事务数(All) = 通过的事务数(Pass)/(通过的事务数(Pass)+错误事务数(Error)+失败事务数(Fail))*100%,是否在95%以上(含95)。

同样我们拿上一个例子。

测试找拐点也可利用这个方法,但是每次的递增值一定要尽可能的大。大家可以看见利用这种方法是可以找到系统拐点的,但是有一个很致命的问题,即速度很慢,如果预设的起始值远远小于拐点值,且每次的递增值有比较小的时候。那么我们有什么改进办法呢?

见图二。

5.png


图二:二分逼近法

在这里,我们先预估两个值m和n,其中m<n,取值公式为一个二元函数? (m,n)。

1.我们先用m来进行测试,如果测试不通过,我们可以确定,拐点值小于m,也可以说在0到m之间,所以我们1/2为a来作为最小值,重新递归二元函数? (m/2,n)即?(a,n)。

2.当m通过测试了,我们就用n值来进行测试,如果n值测试不通过,我们可以确定拐点在m与n之间,于是取(m+n)/2作为k值,重新递归二元函数? ((m+n)/2,n)即?(k,n)。

3.如果n值测试通过了,我们拐点比n大,找一个比n大的数字x,重新递归二元函数? (n,x)。

4.当最大值与最小值在500内,认为找到拐点

在这里我们用这个方法来检查系统的响应时间是否小与3秒,从而找出并发测试的系统拐点。我们取初始的m为1000,n为5000,即? (1000, 5000)

6.png

认为拐点值为4969,与第一次方法获得的值4950应该比较接近。在第一种方法中我们测试了18步,而采用这种方法仅仅用了8步。

我们在用这种方法来试一下通过“通过的事务数”小与95%来寻找系统性能拐点的方法进行,我们仍旧取初始的m为1000,n为5000,即? (1000, 5000)。

7.png

这里得到的拐点值为7148, 同样与上一个方法得到的7150也是比较接近的,但是上一次一共测试了28次,而这次测试了9次就找到拐点的。

另外对于容量测试寻找拐点也可以使用如下方法,只是容量测试的间距注意取得大一些。最后还要有一处注意的,对于并发测试,拐点是不太明晰的,所以第一次找到拐点的时候最好做二到三次的确认,而容量测试的拐点是非常明确地,在拐点上下的性能有明显的区别。


版权声明:本文出自51Testing原创,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • AI 智能客服几乎是每个业务网站的标配,在大型语言模型能力广泛被应用后,智能客服的实现变得更加轻易,可定制化的程度也更高。本篇内容,将指导你如何在几分钟时间内,使用 Dify 平台快速定制你网站的 AI 智能客服。即使非技术人员也能搞定!点击查看操作视频首先,你需要理解 Dify.AI 是什么?Dify 是一个开源且非常简单易用的 LLMOps 平台,让你能够可视化快速创建并运营 AI 应用的工具平台。 Dify 提供了可视化的 Prompt 编排、运营、数据集管理等功能。你甚至无需具备 AI 相关的技术研究和晦涩概念的理解。Dify 对接了各个出色的大型语言模型供应商,如 OpenAI、Az...
            0 0 902
            分享
          • 比较测试将产品与之前版本或其他类似产品的优缺点进行比较称为比较测试。等价划分它是一种测试技术,也是黑盒测试的一种。在此 等价分区期间,会选择一组组并选取一些值或数字进行测试。可以理解,来自该组的所有值都生成相同的输出。此测试的目的是删除特定组中产生相同输出但没有任何缺陷的冗余测试用例。假设应用程序接受 -10 和 +10 之间的值,然后使用等价分区,选择用于测试的值是零、一个正值和一个负值。因此,此测试的等效分区是 -10 到 -1、0 和 1 到 10。示例测试示例测试是实时测试。它包括实时场景和基于测试人员经验的场景。这种类型的测试也被称为基于经验的测试,因为它使用测试人员对应用...
            0 0 765
            分享
          • 在第一模块,我们用一种新的方式理解了测试用例的概念和意义,也通过对其定义的拆解,了解了好的测试用例的基本特点,这一模块,我们就来看看一个好的测试用例怎么写。作为这一模块的第一节,我们来看看好用例的标准。需要说明的是,好用例的特点是很抽象的一种感觉,偏主观感觉;而好用例的标准,则更多的从客观标准和要求出发,能够去衡量用例的。说清楚了这一点,那我们就开始盘点下我们对好用例标准的定义。唯一的检查点在我们的标准中,作为一个好的用例的第一个标准,即每个用例有且仅有一个检查点。也许有的同学会问,我一个用例的预期结果里面有多个内容,这样不可以吗?不可以的。在我们的标准下,每个用例都只有唯一的检查点,执行到此...
            0 0 84
            分享
          •    模块和包的定义  模块的定义:任何  *.py  的文件都可以当作模块使用  import  导入  包的定义:包含一个__init__.py和其他模块、其他子包的一个目录  实际项目中,所谓的包和模块分别代表什么,如下:  包就是指 test  模块就是 do_excel.py , http_request.py , run.py  我们以上面这个目录讲解,在 run.py 文件中导入各个包的方式  导入单个test包 import test  导入report、log包   ...
            1 1 1614
            分享
          • 1.界面测试界面布局、排版是否合理;文字是否显示清晰;不同卖家的商品是否区分明显。2.功能测试未登录时:将商品加入购物车,页面跳转到登录页面,登录成功后购物车数量增加;点击购物车菜单,页面跳转到登录页面。登录后:所有链接是否跳转正确;商品是否可以成功加入购物车;购物车商品总数是否有限制;商品总数是否正确;全选功能是否好用;删除功能是否好用;填写委托单功能是否好用;委托单中填写的价格是否正确显示;价格总计是否正确;商品文字太长时是否显示完整;店铺名字太长时是否显示完整;创新券商品是否打标;购物车中下架的商品是否有特殊标识;新加入购物车商品排序(添加购物车中存在店铺的商品和购物车中不存在店铺的商品...
            0 0 762
            分享
      • 51testing软件测试圈微信