软件性能测试概述 软件测试工具
摘要:本文从性能测试的过程着手,将性能测试过程划分为性能测试准备和组织、性能测试设计、性能测试结果分析三个阶段,并介绍了每个阶段的主要工作内容和方法。
关键字:软件性能测试 性能测试过程 性能测试设计
性 能测试的重要性是随着网络应用的发展而发展的,在单机应用占据主导地位的时代,软件性能基本上都可以通过提升硬件配置来改善,而且由于硬件设备的快速更 新,软件性能并没有成为制约软件成功的主要因素。而在网络应用高度发展和吸引用户眼球越来越难的今天,系统的性能受到应用开发商和运营商的高度重视;但与 此同时,由于网络环境、数据库环境、应用服务器环境、系统平台和技术等的复杂性和多样性,软件性能又非常难于控制,例如,对一个部署在Internet环境下的Portal来说,由于Internet复杂的网络环境、无法控制的访问者等因素,如果没有好的性能控制手段,要想让其达到好的性能简直是天方夜谈。 当 然,改善系统性能不是单单依靠性能测试就能完成的,需要从需求、设计、代码到测试的整个过程中贯穿性能工程的实践,对产品进行全过程的性能控制。不过,到 目前为止,性能测试仍然是控制性能的非常有效的手段,在软件的能力验证、能力规划、性能调优、缺陷修复等方面都发挥着重要作用。
本文拟结合本人的经验和体会,从性能测试的过程入手,讨论性能测试的过程。
1. 性能测试准备和组织
性能测试的准备和组织是性能测试过程的第一步,在这个阶段,我们需要明确性能测试的目标和性能测试需求,并组织起合适的人员,制订性能测试计划。
一 般来说,性能测试的应用领域分为能力验证、能力规划、性能调优和缺陷修复四个方面,其中能力验证表明测试的目的是验证系统能力是否达到预期的性能标准;能 力规划意味着测试的目的是考察系统的可扩展性;性能调优则表示性能测试的目的是通过性能测试手段,找到系统的性能瓶颈,为性能调优提供依据;缺陷修复应用 领域是指通过性能测试手段,找出系统中存在的并发等方面的缺陷。
明 确性能测试的目标也就是要把性能测试的目的归到相应的应用领域,而确定性能测试需求则是要更详细地确定性能测试的基准。对产品的性能测试需求的来源是软件 需求、设计文档或是用户备忘录等设计和需求相关的文档。当然,并非所有的性能测试需求都在这些文档中以明确的方式标识出来了,此时就需要根据不十分明确的 文档描述进行进一步的细化。我们的经验是在文档评审时高度关注所有与性能相关的描述,例如“要求操作响应时间小于……”、“要求……能够快速……”、“要 求……能够支持……用户访问”、“要求……能快速稳定运行”等,然后依据表1进行进一步的细化,细化后的测试需求就可以作为测试的依据。
问题 |
结果 |
备注 |
需求是否有明确的数据指标? |
|
|
需求是否明确定义到某个业务? |
|
|
需求是否可验证? |
|
|
需求是否同时考虑了记录数、用户数因素? |
|
|
性 能测试涉及的设备、环境、技术、工具较多,性能测试人员的组织也必须兼顾这些方面,根据我们的经验,一个性能测试组最好包括系统工程师(负责测试环境搭 建、服务器和应用服务器的配置)、网络工程师(负责网络环境的维护和验证)、性能分析工程师(负责测试计划的拟定,负责对性能测试结果进行分析,给出性能 测试报告)、自动化工程师(负责测试脚本的编写和测试工具实施),数据库工程师(负责对数据库层进行性能问题定位);在条件允许的情况下,还可以包括开发工程师和客户代表,辅助对性能测试结果进行分析和确认。
性能测试计划是用来指导性能测试过程的主要文档,在测试计划中除了要写明本次测试的测试目标、测试需求外,还需要测试计划中给出明确的测试退出条件和测试的时间和资源计划。
2. 性能测试设计
与功能测试一样,测试设计也是性能测试过程中的主要内容。性能测试的测试设计一般基于测试场景(Test Scenario)进行,一个测试场景就是一个用户的实际使用系统的剖面。例如,对一个用于开发人员工作的OA系统,该系统在每天9:00 - 9:30期间,用户主要是在执行查看邮件和查看BUG操作,在上午的其他时间主要是修改BUG状态和处理邮件,则从对该系统的简单使用分析中,我们至少可以得到两个不同的应用场景:一个是“用户查看邮件和查看BUG”场景,另一个是“用户发送邮件、接收邮件、修改BUG状态”场景。