一、了解性能测试

  性能测试是不断的通过不同场景的系统表现去探究系统设计与资源消耗之间的平衡。

  我们可以认为性能测试是:通过在测试环境下对系统或构件的性能进行探测,用以验证在生产环境下系统性能是否达到预估的性能需求,发现系统可能存在的性能瓶颈,进而改善优化并系统的性能,提高系统的可扩展性、稳定性。

  从上面的描述可以看出,性能测试的主要工作包括:获得预估的性能需求、搭建测试环境、执行测试、分析测试结果。其中,为重要两个工作是确定测试的目的、方案,并对结果进行分析。

  二、确认测试目的

  性能测试的需求包含但不限于用户的需求。在性能测试前我们同样需要充分了解开发、运维对系统的关注点。此外,要对被测模块的设计有深入了解,基本判断该模块是cpu密集型或是io密集型。以上这些是为更确立测试的目的,并有针对性的梳理测试方案和分析做好准备。

  性能测试的目的包括:

  (1)验证系统是否满足预期需求;

  (2)验证系统在高压下的表现;

  (3)验证系统是否能持续稳定的运行;

  (4)探测系统的瓶颈和产生瓶颈的原因;

  (5)探测系统设计与资源之间的佳平衡,改善并优化系统的性能。

  三、确认测试方案

  根据性能测试目的的不同,所实施的测试方案也不同。

  一般,性能测试主要包括如下几种:

  1)验证系统在预估负载下的表现:负载测试

  2)验证系统在极端负载下的表现:压力测试

  3)验证系统是否能持续稳定的运行:稳定性测试

  以下是对上述三种测试的图示。一般,常态负载低于瓶颈负载,从常态负载到瓶颈负载区间系统的承受能力可以看作是可扩展能力。当瓶颈负载小于等于常态负载时,说明该系统的性能没有满足预计要求,是存在问题的。探测常态负载与瓶颈负载的关系,正是负载测试所要完成的工作。压力测试则验证从系统到达瓶颈之后,继续持续加压时系统的表现。

   根据性能测试的目的,选择是进行负载、压力、稳定性测试还是几种测试。每种测试中一般会安排几个场景,场景的变换主要根据压力值、系统配置等参数而改变。首次测试一把根据预估的性能需求和经验值开决定,后续的测试场景依赖于首次测试的各项指标的特征。例如,首次测试后,发现系统的性能很好,完全满足预期且机器各项负载指数很低,后续可以考虑n倍压力值探测系统瓶颈。如果首次测试的结果表现出不能满足预期,则需要调整各参数值进行测试,通过比较个参数值下的性能表现来分析系统瓶颈。

  四、准备环境数据

  1 搭建测试环境

  什么是测试环境?测试环境=软件+硬件+网络+数据+测试工具。

  原则1 以假乱真

  软、硬件配置要与生产环境的配置一致,如果条件有限,则要尽量逼近于生产环境的真实条件。同时,要保证测试工具的稳定性。如果性能测试环境不够真实、稳定,则测试的结果的可靠性无法满足。