• 0
  • 0
分享
  • 寻找负载测试拐点的方法
  • 恬恬圈 2019-08-23 13:45:59 字数 1833 阅读 2409 收藏 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软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   面试中遇到的现场编码挑战,特别是那些故意设计来让你失败的挑战,确实会让人感到不悦。这里有12个关于Playwright的面试问题及答案,希望能给你一些优势。  这些问题的创建是为了迷惑你,所以如果你没有答对,也不要对自己太苛刻。同时,一些答案包含解释和代码示例。请滚动到页面底部查看。  1. 本地环境  如果你在本地机器上使用你需要设置并启动的本地环境运行测试,例如在 http://localhost:3000/,你将如何在测试运行期间处理本地环境的设置?  可能的答案:  · 在运行测试之前启动你的本地环境  · 在package.json中编写一个脚本来启动本地环境...
            0 0 700
            分享
          • HTTP首部字段根据实际用途被分为以下4种类型。1.通用首部通用首部字段(General Header Fields)请求报文和响应报文两方都会使用的首部。Cache-Control:用来声明服务器端缓存控制的指令。包括请求设置指令和响应请求指令。请求控制指令如下。no-cache:不使用缓存实体,要求从 Web 服务器去请求内容。max-age:只接受 Age 值小于 max-age 值的内容,即没有过期的请求对象。max-stale:可以接受过去的对象,但是过期时间必须小于 max-stale 值。min-fresh:接受生命期大于其当前 Age 跟 min-fresh 值之和的缓存对象。...
            0 0 915
            分享
          •   YouTube 宣布了一系列 YouTube Shorts短视频相关的新功能,其中一些现在就可以使用,比如新的文本到语音视频旁白可以让你添加人工配音。  在 TikTok 上,有时你会在一些宣传视频中听到令人惊愕的机器人声音。事实上,YouTube添加语音的过程与 TikTok 很相似:创建一些文本后,点击屏幕左上角的一个新的"添加语音"图标,然后选择你想要的语音。YouTube 目前只提供四种语音供你选择,而 TikTok 则有更多。  YouTube 表示,它还将推出自动生成的字幕,用户可以将其添加到视频中而无需切换到另一个应用程序(如 CapCut)。与现有的 Y...
            0 0 508
            分享
          • 前言:本篇讲堂是紧接【安全测试工具-进阶篇[密码重置和安全密码]】的内容。例牌,先说下安全测试工具的更新情况【工具地址:https://gitee.com/samllpig/SafeTool-51testing】服务平台,HTTP服务增加XXE外部实体引用集成平台,增加嗅探器插件POC平台,增加经典XXE和盲注XXE的POC脚本正文:漏洞讲解:所属模块: (A3) Sensitive Data Exposure [敏感信息泄露]4.1 菜单项: Insecure Login [登录信息泄露],本章共2个小节4.1.1 第一节主题:为什么需要对敏感数据进行加密?内容:在本课程...
            0 0 72
            分享
          •   有没有独立搭建过自动化测试框架?  这个问题我觉得可能是大家最怕面试官问到的问题,自动化测试框架,对吧。比如说你像问一下三种等待时间的区别和场景应用这一类问题,你去百度一下,问一下身边做软件测试的朋友也能知道,其实有些问题其实是比较抽象模糊的概念。有没有标准答案?我们该怎么去说服面试官。  这个问题,今天我来和大家总结一下!  这个问题有遇到过的朋友欢迎在评论区留言,说一说你当时是怎么回答的。  我相信这个问题肯定是有同学遇到过的。  一些对自动化测试框架不是很了解的同学,在面试的时候可能会吞吞吐吐的说,呃~我有搭建过。用过Selenium然后去做了一些简单的自动化测试。然后没有然后了,像...
            0 0 910
            分享
      • 51testing软件测试圈微信