第2章 有效应用程序性能测试的基本原则
为了那颗马蹄钉[1]……
——西方民谣
在本章中,我们将讨论性能测试中的一项基本任务——“获取性能需求”。这项任务在进行性能测试过程中常常被忽略,即使测试服务公司在提供测试服务的过程也常常忽略这项任务。所谓的“功能性需求”是回归测试和单元测试的基础;与此不同,性能相关的需求可以定义为“非功能性需求”。撇开字面上的意思,获取性能需求绝对是十分重要的活动,为了进行有效的性能测试,必须完成此项任务。
在许多人看来,对应用程序进行一次正规的性能测试,这样的想法仍然像小说里的情节一样。之所以会这样,是因为任何项目未能妥善计划将不可避免地导致误解和问题,这样的性能测试不是所期望的。
有了这样的信念,让我们重申我们的性能测试箴言:在应用程序的生命周期中,应尽早建立性能测试意识。
换句话说,如果对于性能,没有在心中做好规划,那么将面临一个重大风险,那就是:应用程序的性能根本达不到预期的要求。
对于任何一个新项目,都应该问问以下的这些问题:
·应用程序部署后需要支持多少最终用户?6个月后呢?12个月后呢?2年后呢?
·这些用户分布在哪里?他们是如何与系统建立连接的?
·应用程序部署后有多少同时在线的用户?6个月后呢?12个月后呢?2年后呢?
这些问题的答案将会引出其他一些问题,比如:
·对于每个应用程序,我需要多少台服务器?这些服务器的配置是怎样?
·我需要提供什么类型的网络基础设施?
以上这些问题您可能没法立刻明确地回答,但重点是,您已经开始学会尽早地考虑这两个非常重要的问题:“容量”和“性能”。
在实施有效的性能测试策略之前,您需要解决很多问题。当然,所谓性能测试,可不仅仅是创建负载,并且观察系统响应这么简单的事情。以我的经验来看,应该重点包含以下这些内容:
·选择一个合适的性能测试工具。
·设计一个合适的性能测试环境。
·设置切合实际的性能测试目标。
·确保和编写被测应用程序足够稳定。
·做到代码冻结。
·确定和编写关键业务脚本。
·提供高质量、足够的测试数据。
·确保准确的性能测试设计。
·确定监控服务器和网络的关键性能指标(KPI)。
·安排有足够的时间进行有效的性能测试。
注意
有很多机制可以实现功能需求和性能需求的收集。对很多公司来说,这并不会比微软的Word精密多少,但是严格的需求管理和严格的性能测试一样,都是需要进行自动化管理。许多厂商提供的工具都让您可以自动管理需求,通过简单地收集与组织的解决方案,并遵照整套统一建模语言(UML)规范。在附录C中,您可以找到这些主要厂商的工具列表。
以上这些需求大多数是很明显的,然而有一些常常被我们忽视,但它们却是影响性能测试项目成败的关键因素,本章中将在后续的内容中逐一进行详细讲述。