2.8.2 负载生成策略
接下来我们要考虑如何生成负载。有5种常用的负载生成策略,通常在性能测试中组合使用。
“爆炸式(Big Bang)”
所有虚拟用户在同一时间启动。这些用户通常会同时运行,但并不同步;也就是说,在测试执行过程中的同一时刻他们不会做完全相同的事情。这提供了一个对真实用户行为更好的模拟。
递增式
这种模式一开始就设置一些虚拟用户(通常是0或1),然后在指定的时间间隔内添加更多用户,直至达到目标人数。这就是确定应用程序是否能支持一定数量的并发用户的常用方法。
递增式(逐步)
在这种变化的连续递增情况下,有一个并发数或吞吐量的最终目标,但其目的是在执行测试过程中设置一个加压的断点。举例来说,目标可能是1000个并发用户,但是,有必要观察分别在250、500和750个并发用户时平稳的响应时间,因此,在达到这些值的时候,负载的生成会暂停一段时间。并非所有自动化性能测试工具都在一个单独的性能测试里提供这一功能,但它是配置单独测试的每个步骤以便模仿价值和相同的行为的一个简单的事情。
递增式(逐步),递减式(逐步)
在性能测试过程中预先设置一定的并发用户数,可以是逐步增加的方式来增加负载,也可以不是,然后逐渐减少虚拟用户(不论是否逐步),一直降到零,这可能预示着测试的结束。此外,并非所有自动性能测试工具都会在一个单独的性能测试里提供这一功能。
延迟启动
这可能与任何上述负载生成方式结合使用;它只是针对特定的脚本,推迟一段时间后才开始启动加压。
如果您选择递增加压方法的目的是在一段现实的时间内为每个脚本创建并发目标,您应该为每个事务按比例分配负载生成频率,以使它们同时达到满负载。请记住,递增的时间越长,用于性能测试的时间就越短。
对于“爆炸式”的一次加压方式,一定要注意,因为有大量的虚拟用户一起开始创建一个可怕的负载,特别是在Web服务器上。这可能会导致系统故障,使得在性能测试甚至都没有办法正常开始。
例如,许多客户/服务器的应用程序在一个工作日的开始里,有一个用户登录时期,可能持续1个小时或者更长。在同一时刻复制1000个登录用户的做法是不符合实际情况的,实际上这些用户登录是分散在1个小时以内的,这样做实际上是创造了一个人为的极端负载情况,而且增加了系统发生故障的机率。不推荐使用这种类型的负载生成方式,除非是为了进行压力测试。