JMeter如何构建可靠的负载/压力测试

时间:2014-09-23 15:02:28

标签: jmeter load-testing stress-testing

我一直在寻找一个很好的资源,让我知道如何创建一个可靠的负载/压力测试,但我找不到任何东西。

假设我想测试一个用于销售书籍的应用程序。

事实证明,销量最高的那一天是平安夜(12月24日),每分钟最高销售量为21。 仔细研究这些结果后,确定每秒的最大销售峰值为2次,如下图所示。

enter image description here

因此,考虑到上述所有结果,这是我迄今为止所尝试的内容:

负载测试:

  • 主题数量: 2

  • 加速期:1秒

  • 循环计数:永远

  • 持续时间:3600秒(1小时)

enter image description here

压力测试:

  • 主题数量: 4 (增加100%)

  • 加速期:1秒

  • 循环计数:永远

  • 持续时间:3600秒(1小时)

enter image description here

既然你知道我尝试了什么,我想问你一些问题:

  1. 如何创建负载和压力测试以确保它们可靠?您考虑哪些事情?
  2. 增加线程数是否正确,但保持加速期 不变?
  3. 您认为使用一小时的持续时间是否合适?
  4. 对于我的压力测试,我将线程数增加了100%,你怎么看?我应该使用更高的值还是增加100%是否过多?
  5. 提前致谢。

1 个答案:

答案 0 :(得分:1)

嗯,相当复杂的问题......

我通常开始写下一个场景,即应该由用户完成的一系列动作。 在你的情况下,最后的行动是书籍购买,但可能还有很多工作要做,比如浏览目录,做一些搜索,选择标题,注册个人数据等。

深入了解网站统计分析非常有用。

一旦脚本正常工作,您可以设置计时器,以便模拟用户行为。

所以你会发现这个脚本需要1秒多的时间。也许,在现实世界中,用户在购买图书之前在网站上花费至少5分钟,但再次与营销人员一起检查这些数据。

假设每个循环花费5分钟,这给出了300秒。 如果你想达到1个销售/秒,你需要300个线程才能到达那里。

如果你一起开始线程,你将测试一个非常不切实际和悲观的情况,所有300个用户将同时购买同一本书。 因此,您必须随机化所有内容:搜索,图书清单和计时器,以便每个用户看起来真正独立且与另一个不同。

完成后,您已完成第1点。

2)你可以使用加速时间来控制启动所有线程所需的时间。根据我的经验,5线程/秒是一个安全的数字。

3)再次取决于你正在构建的用户建模:如果基本脚本需要5分钟,甚至30-40分钟对我来说似乎是一个保存期限,但是YMMV。

4)这几乎取决于您的测试所具有的目标。尝试与您的客户澄清这一点。 我通常用60%80%100%和120%的目标负载进行测试,但每种情况都不同。 另外,请考虑响应时间目标和错误率目标:如果较低的目标失败,那么使用较高负载是没有意义的。