前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >寻找负载测试拐点的方法

寻找负载测试拐点的方法

作者头像
顾翔
发布2019-12-11 16:00:18
9740
发布2019-12-11 16:00:18
举报
文章被收录于专栏:啄木鸟软件测试

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

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

图一:负载测试的拐点

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

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

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

编号

设置并发数

响应时间(秒)

1

2000

1.12

2

2200

1.18

3

2400

1.23

4

2600

1.78

5

2800

1.86

6

3000

1.89

7

3200

1.80

8

3400

1.91

9

3600

1.95

10

3800

1.98

11

4000

2.51

12

4200

2.59

13

4400

2.63

14

4600

2.75

15

4800

2.85

16

5000

3.14

17

4900

2.94

18

4950

2.99

当系统设置并发数为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)。同样我们拿上一个例子作为参考。

编号

设置并发数

Pass

Fail

Error

通过率

1

2000

2445

0

0

100.0%

2

2200

2445

0

0

100.0%

3

2400

2445

0

0

100.0%

4

2600

2445

0

0

100.0%

5

2800

2445

0

0

100.0%

6

3000

2445

0

0

100.0%

7

3200

2445

3

0

99.9%

8

3400

2445

3

1

99.8%

9

3600

2445

3

1

99.8%

10

3800

2443

3

1

99.8%

11

4000

2443

3

1

99.8%

12

4200

2440

3

1

99.8%

13

4400

2439

5

6

99.6%

14

4600

2437

5

6

99.6%

15

4800

2434

5

6

99.6%

16

5000

2430

5

6

99.5%

17

5200

2429

5

9

99.4%

18

5400

2426

6

9

99.4%

19

5600

2420

6

9

99.4%

20

5800

2415

7

9

99.3%

21

6000

2410

7

9

99.3%

22

6200

2405

7

9

99.3%

23

6400

2404

15

21

98.5%

24

6600

2400

21

32

97.8%

25

6800

2393

28

34

97.5%

26

7000

2395

59

45

95.8%

27

7200

2080

77

52

94.2%

28

7150

2156

64

50

95.0%

在这里系统的拐点为7150(一般设置通过的事务数在可接受的范围内,系统的拐点值回比其他方式高)。

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

图二:二分逼近法

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

  1. 1. 我们先用m来进行测试,如果测试不通过,我们可以确定,拐点值小于m,也可以说在0到m之间,所以我们1/2为a来作为最小值,重新递归二元函数ƒ (m/2,n)即ƒ(a,n)。
  2. 2. 当m通过测试了,我们就用n值来进行测试,如果n值测试不通过,我们可以确定拐点在m与n之间,于是取(m+n)/2作为k值,重新递归二元函数ƒ ((m+n)/2,n)即ƒ(k,n)。
  3. 3. 如果n值测试通过了,我们拐点比n大,找一个比n大的数字x,重新递归二元函数ƒ (n,x)。
  4. 4. 当最大值与最小值在500内,认为找到拐点

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

编号

采用函数

测试结果

处理取值

差值

1

ƒ (1000, 5000)

1000通过

2

ƒ (1000, 5000)

5000不通过

取值:3000,ƒ (1000,3000)

2000

3

ƒ (1000,3000)

3000通过

取值:4000,ƒ (3000,4000)

1000

4

ƒ (3000,4000)

4000通过

取值:4500,ƒ (4500,5000)

500

5

ƒ (4500,5000)

4500通过

取值:4750,ƒ (4750,5000)

250

6

ƒ (4750,5000)

4750通过

取值:4875,ƒ (4875,5000)

125

7

ƒ (4875,5000)

4875通过

取值:4938,ƒ (4938,5000)

62

8

ƒ (4938,5000)

4938通过

取值:4969,ƒ (4969,5000)

31

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

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

编号

采用函数

测试结果

处理取值

差值

1

ƒ (1000, 5000)

1000通过

2

ƒ (1000, 5000)

5000通过

取值:10000,ƒ (5000,10000)

5000

3

ƒ (5000,10000)

10000不通过

取值:7500,ƒ (7500,10000)

2500

4

ƒ (7500,10000)

7500不通过

取值:6250,ƒ (6250,7500)

1250

5

ƒ (6250,7500)

6250通过

取值:6875,ƒ (6875,7500)

625

6

ƒ (6875,7500)

6875通过

取值:7187,ƒ (7187,7500)

313

7

ƒ (7187,7500)

7187不通过

取值:7031,ƒ (7031,7187)

156

8

ƒ (7031,7187)

7031通过

取值:7109,ƒ (7109,7187)

78

9

ƒ (7109,7187)

7109通过

取值:7148,ƒ (7148,7187)

39

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

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

星云测试

http://www.teststars.cc

奇林软件

http://www.kylinpet.com

联合通测

http://www.quicktesting.net

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档