在基准测试和规划测试中选Flat还是Ramp-up?
Flat测试和Ramp-up测试是各有优势的,下面我们就通过介绍几种实用的性能测试策略来分析这两种加压策略的着重方向。
基准测试
基准测试是一种测量和评估软件性能指标的活动,通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定这些变化对性能的影响。因此基准测试的关键是要获得一致的、可再现的结果。
可再现的结果有两个好处:
◆减少重新运行测试的次数
◆对测试的产品和产生的数字更为确信
从这里我们可以看到flat测试是基准测试的一个理想模式,我们平时在LoadRunner的场景设置里我们就可以考虑将Think Time和Pacing Time设置为0。这样我们就可以通过flat测试区获得一个准确的基准线,通过并发后得到的响应时间、吞吐量以及服务器资源占用的这些数据就能更有效地观察系统当前的性能水平。
规划测试:
在特定的环境下,给定应用程序的性能可以达到何种程度。
可重现性就不如在基准测试中那么重要了,因为测试中通常都会有随机因子。
例如:知道普通用户的考虑时间是5秒,误差20%,那么在设计负载测试时,就要确保不同请求间的时间(ThinkTime)为5X(1+/-20%)秒。此外可以利用调步的理念向负载场景中引入更多的随机性。即在一个虚拟用户完成一整套的请求后,该用户暂停了一个设定的时间段,或者一个小的随机时间段(PacingTime),例如2X(1+/-25%)秒,然后再继续执行下一套请求。将这两种随机变化方法运用到测试中,可以提供更接近于现实世界的场景。
LoadRunner里面的设置页面如下图所示:
Think Time的设置
Pacing Time的设置
规划测试我们如何加载用户以模拟负载情况呢?是使用Flat测试还是使用Ramp-up测试呢,其实最好的方法是模拟一个高峰时间用户与服务器通讯的情况,如果用户的负载情况是在一段时间内逐步达到的,那么就应该用Ramp-up测试,每隔几秒增加多少个用户,如果他的用户是在非常短的时间内同时与系统通信的,那么这样的话我们就需要用Flat测试,将所有的用户同时加载到服务器上。这种情况相当于电商平台的秒杀操作,但是它一般只进行一次大规模的并发操作,后面几次迭代就不一定是相同的并发数了。