我一直在寻找一个很好的资源,让我知道如何创建一个可靠的负载/压力测试,但我找不到任何东西。
假设我想测试一个用于销售书籍的应用程序。
事实证明,销量最高的那一天是平安夜(12月24日),每分钟最高销售量为21。 仔细研究这些结果后,确定每秒的最大销售峰值为2次,如下图所示。
因此,考虑到上述所有结果,这是我迄今为止所尝试的内容:
负载测试:
主题数量: 2
加速期:1秒
循环计数:永远
持续时间:3600秒(1小时)
压力测试:
主题数量: 4 (增加100%)
加速期:1秒
循环计数:永远
持续时间:3600秒(1小时)
既然你知道我尝试了什么,我想问你一些问题:
提前致谢。
答案 0 :(得分:1)
我通常开始写下一个场景,即应该由用户完成的一系列动作。 在你的情况下,最后的行动是书籍购买,但可能还有很多工作要做,比如浏览目录,做一些搜索,选择标题,注册个人数据等。
深入了解网站统计分析非常有用。
一旦脚本正常工作,您可以设置计时器,以便模拟用户行为。
所以你会发现这个脚本需要1秒多的时间。也许,在现实世界中,用户在购买图书之前在网站上花费至少5分钟,但再次与营销人员一起检查这些数据。
假设每个循环花费5分钟,这给出了300秒。 如果你想达到1个销售/秒,你需要300个线程才能到达那里。
如果你一起开始线程,你将测试一个非常不切实际和悲观的情况,所有300个用户将同时购买同一本书。 因此,您必须随机化所有内容:搜索,图书清单和计时器,以便每个用户看起来真正独立且与另一个不同。
完成后,您已完成第1点。
2)你可以使用加速时间来控制启动所有线程所需的时间。根据我的经验,5线程/秒是一个安全的数字。
3)再次取决于你正在构建的用户建模:如果基本脚本需要5分钟,甚至30-40分钟对我来说似乎是一个保存期限,但是YMMV。
4)这几乎取决于您的测试所具有的目标。尝试与您的客户澄清这一点。 我通常用60%80%100%和120%的目标负载进行测试,但每种情况都不同。 另外,请考虑响应时间目标和错误率目标:如果较低的目标失败,那么使用较高负载是没有意义的。