在各类软件测试工作中,性能测试往往不被重视,而项目中由于系统性能不合格带来损失的例子却非常多。造成这种现象的原因之一是各个公司习惯压缩测试成本,而在性能测试方面的投入则更少。
  本文重点介绍如何基于场景来设计性能测试。选择典型的用户场景来进行测试,不但可以大大降低执行成本,更能提高性能测试执行效率。

  在以前的《治疗软件亚健康》中,笔者重点讨论了运用“全面性能测试模型”来组织各类性能测试的方法。“全面性能测试模型”提出了设计性能测试用例的框架,在实际项目中通过它可以确定性能测试用例的范围和类别。而在测试用例内容确定后,接下来要设计各类性能测试用例中的具体内容。

  性能测试按照场景不同一般可以分为两大类,一类是为了测试目的而进行的场景测试,另外一类是基于用户实际情况而进行的场景测试。因此,性能测试用例的设计应该面向性能测试场景来进行。

  实际上,由于开发环境硬件配置不高,基于用户的测试多在用户现场进行,而为了测试目的而进行的测试多在开发环境即开发团队内部进行,不过两者进行的场所没有严格的界限,例如也可以在开发团队内部模拟用户的环境进行性能测试。

  “ 为了测试目的而设计的测试用例场景”主要根据测试设计人员的经验来进行,但是仍然要参考用户的实际场景,用户实际使用场景是设计所有测试用例的依据。例如一些业务系统,虽然备份历史数据的周期为一年,但是设计大数据量测试用例时仍然包含了系统运行一个月、半年等的数据量模拟测试,因为这些均属于用户的典型场景。

  综合上面可以看出,性能测试用例设计首先要分析出用户现实中的典型场景,然后参照典型场景进行设计。下面详细介绍一下常见的三类用户场景:

  内不同时间段的使用场景。在同内,大多数系统的使用情况都会随着时间发生变化。例如对于新浪、网易等门户网站,在周一到周五早上刚一上班时,可能邮件系统用户比较多,而上班前或者中午休息时间则浏览新闻的用户较多;而对于一般的OA系统则早上阅读公告的较多,其他时间可能很多人没有使用系统或者仅有少量的秘书或领导在起草和审批公文。这类场景分析的任务是找出对系统产生压力较大的场景进行测试。

  系统运行不同时期的场景。系统运行不同时期的场景是大数据量性能测试用例设计的依据。随着时间的推移,系统历史数据将会不断增加,这将对系统响应速度产生很大的影响。大数据量性能测试通常会模拟一个月、一季度、半年、一年、……的数据量进行测试,其中数据量的上限是系统历史记录转移前可能产生的大数据量,模拟的时间点是系统预计转移数据的某一时间。

  不同业务模式下的场景。同一系统可能会处于不同的业务模式,例如很多电子商务系统在早上8点到10点以浏览模式为主,10点到下午3点以定购模式为主,而在下午3点以后可能以混合模式为主。因此需要分析哪些模式是典型的即压力较大的模式,进而对这些模式单独进行测试,这样做可以有效的对系统瓶颈进行隔离定位。与“内不同时间段的场景测试”不同,“不同业务模式下的场景测试”更专注于某一种模式的测试,而“内不同时间段的场景测试”则多数是不同模式的混合场景,更接近用户的实际使用情况。

  上面只介绍了三种典型的场景,实际项目中分析场景一般不会孤立的分析某一特定类型场景,而是把两种或者几种类型场景结合起来进行分析设计,这样做主要是为了选择更典型的场景和节省一些测试成本。

  有了上面的基础知识,下面开始逐一讨论各类测试用例设计的细节。在下面的讨论中,将以图2所示的某视频点播网站做为示例,图2显示了该视频点播网站的主要业务以及各个时间段使用场景。