测试准备包括测试客户端机器准备、测试数据准备、测试脚本准备。

  客户端机器:要足够,否则,如果瓶颈在客户端,无法评估服务端。要和服务器保持网络通畅,否则,如果瓶颈在网络,也无法评估服务端。包括:网络带宽要高于服务器吞吐量、网络带宽要稳定。

  测试数据

  如果被测功能涉及数据库和高速缓存,通常需要预设很大的数据量才能凸显性能瓶颈,这通常是挺困难的一个环节。

  如果是已经上线的应用,数据可以从线上拷贝得到;如果还没有上线,那需要构造类似于线上的数据量。

  比如,要测试群聊性能,我们首先需要注册大量用户;然后把测试用户都加入到聊天群中。

  测试数据准备的脚本,有时候比测试脚本本身还要多。

  对于实在没有办法构造大数据量的情况,如果要测试高速缓存,我们有时候会按数据量的比例减少高速缓存,以使测试结果尽量准确。

  测试脚本

  Grinder脚本用jython实现

  测试脚本的实现往往会花费比较长的时间

  因为涉及到应用实现的细节,需要和开发不断交流才能完成。这也是需要了解应用架构的原因之一。

  关于sleep time

  基于真实模拟的考虑,sleep time还是尽量按照真实时间,并给一定的偏差。

  不过对于测试客户端来说,sleep time往往会引起很多客户端测试线程的调度,浪费客户端系统资源。

  Sleep time越小,客户端能模拟的吞吐量越大,所以,实际测试中,我们往往会把sleep time设置为0 。