原则2 以静制动

  一般,我们将压力程序、被测模块部署在不同的机器上。(即便是生产环境中压力来自于被测模块所在的机器,我们一般也是分开部署;这是保证被测模块的干净,避免对测试结果的干扰)。因此信息交互是通过网络来完成的。保证环境干净的另一个原因是,一般线上部署是多模块统计部署,在线下没有必要搭建通线上一样的模块,因此使用一套干净的环境进行测试,可以在后期分析中引入多模块统计部署的因素进来,推算上线后的效果。

   2 准备测试数据

  原则3 以小见大

  测试数据是测试环境的一部分,但与环境不同,测试数据很难达到与生产环境一模一样。一方面,生产环境的数据是动态、持续变化的,而测试中我们需要的数据是静态的,我们无法保证数据的实时性;另一方面,生产环境的数据是庞大的,而测试环境中数据量是有限的。

  在数据准备中既要关注数据的质、又要关注量。

  1)质——指数据的频率、分布要尽可能和线上一致。

  2)量——指数据的规模要达到、接近或者超过线上现有水平。

  通常,可以采用同比例缩放或扩放的方式,即使用过去一段时间的生产环境数据来进行测试。一般可以保证数据的频率、分布和真实环境中是一致的。

  五、性能指标分析

  1 性能指标的关注

  性能测试的指标可分为产品指标和资源指标两类。对测试人员而言,性能测试的需求来自于用户、开发、运维的三方面。用户和开发关注的是与业务需求相关的产品指标,运维关注的是与硬件消耗相关的资源指标。

   1)从用户角度关注的指标:用户关注的是单次业务相关的体验效果,譬如一次操作的响应快慢、一次请求是否成功、一次连接是否失败等,反映单次业务相关的指标包括:

  (1)成功率=成功响应次数/统计时间

  (2)失败率=失败响应次数/统计时间

  (3)响应时间

  2)从开发角度关注的指标: 开发人员更关注的是系统层面的指标。

  (1)容量:系统能够承载的大用户访问量是多少?系统大的业务处理量是多少?

  (2)稳定性: 系统是否支持7*24小时(一周)的业务访问?

  3)从运维角度关注的指标:运维人员更关注的是硬件资源的消耗情况。

  需要注意的是,在预估性能压力和指标时,需要给线上运维操作留有必要的性能空间。

   其中,资源消耗往往是制约产品指标的重要因素,是我们在性能测试中需要特别关注的指标。资源消耗包括CPU、内存、硬盘、网络带宽等。

  2 性能指标的统计

  1) 单次业务相关的指标可以通过统计日志信息来计算。

  2) 连续业务相关指标需要从长时间、高压力的性能中统计和分析。

  3) 资源消耗指标可以通过监控进程占用的资源、机器系统的资源变化来观测。