1 前言
1.1 文档目的
本文档的目的在于明确性能测试流程规范,以便于相关人员的使用,保证性能测试脚本的可用性和可维护性,提高测试工作的自动化程度,增加测试的可靠性、重用性和客观性。
1.2 适用对象
本文档适用于部门内测试组成员、项目相关人员、QA及高级经理阅读。
2 性能测试目的
性能测试到底能做些什么,能解决哪些问题呢?系统开发人员,维护人员及测试人员在工作中都可能遇到如下的问题
- 硬件选型,我们的系统快上线了,我们应该购置什么样硬件配置的电脑作为服务器呢?
- 我们的系统刚上线,正处在试运行阶段,用户要求提供符合当初提出性能要求的报告才能验收通过,我们该如何做?
- 我们的系统已经运行了一段时间,为了保证系统在运行过程中一直能够提供给用户良好的体验(良好的性能),我们该怎么办?
- 明年这个系统的用户数将会大幅度增加,到时我们的系统是否还能支持这么多的用户访问,是否通过调整软件可以实现,是增加硬件还是软件,哪种方式最有效?
- 我们的系统存在问题,达不到预期的性能要求,这是什么原因引起的,我们应该进行怎样的调整?
- 在测试或者系统试点试运行阶段我们的系统一直表现得很好,但产品正式上线后,在用户实际环境下,总是会出现这样那样莫名其妙的问题,例如系统运行一段时间后变慢,某些应用自动退出,出现应用挂死现象,导致用户对我们的产品不满意,这些问题是否能避免,提早发现?
- 系统即将上线,应该如何部署效果会更好呢?
并发性能测试的目的注要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能;当扩展应用程序的功 能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能;通过模拟成百上千个用户,重复执行和运行 测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题。
3 性能测试所处的位置及相关人员
3.1 性能测试所处的位置及其基本流程
下面就性能测试的基本流程给予图示说明:
性能测试的具体流程:
3.2 性能测试工作内容
² 软件需求分析阶段:
分析软件需求,提取出待实现的功能点,此时根据需求功能点选取必要的性能测试点,并组织起有效的测试用例。
² 软件单元测试阶段:
单元测试在软件开发周期贯穿,针对已经开发的功能做单元测试,保证组件功能可正常使用,此阶段功能测试占主要的测试比例,性能测试部分主要是了解、分析业务结构及进行数据准备。
² 软件系统集成测试阶段:
软件的功能已经基本实现,此时可以针对稳定的功能点在公司内部部署并实施小规模的性能测试。
² 软件升级及维护阶段:
维护期占整个软件的使用时间,由于日益变更的需求让我们的程序不断升级,为了降低升级过程中出现对已有软件功能的影响。性能测试通常采用2个必要步骤:
a) 补丁升级测试,在数据结构变更处加上时间点,检验每个操作的时间效率是否可接受,并为用户升级程序提供一个参考时间。
b) 补丁升级成功后,对系统改动功能点做性能测试,并验证一些常规功能的效率是否受到升级影响,最后提供升级后系统的性能测试评估报告。
² 历次性能测试数据归档
对历次的性能测试进行归档处理,为预测软件未来的发展状况提供必要的数据基础。
3.3 性能测试涉及的人员角色
人员角色 |
角色职责 |
软件测试工程师 |
负责整个性能测试的计划及方案编写、脚本编写、实施测试、测试数据分析、获取测试结果、编写测试报告,保证性能测试工作的顺利完成。 |
业务系统开发工程师 |
提供完整的测试用例,测试环境的自测,根据性能测试结果跟踪、解决程序问题。 |
系统工程师 |
负责测试环境操作系统、网络环境以及储存设备的系统调优和监控。 |
数据库工程师 |
负责数据库系统的调优和监控。 |
项目经理 | 负责把控项目的整体进度、整体质量、整体完成标准。 |
4 性能测试实施规范
阶段 | 工作范围 | 产出物 | 相关人员 | 工作时间 | 评审 | 约束 | 备注 | |
---|---|---|---|---|---|---|---|---|
性能需求 | 分析系统 | 性能测试人员,系统开发人员,相关责任人从不同的角度提出性能测试点。性能测试人员主要关注功能测试期反映的测试点;系统开发人员着重从程序角度出发考虑,分析哪些点可能存在性能问题;客户主要从业务角度出发发,抽取使用频率较高,较重要的业务功能作为测试点。 确认要素: 1、并发用户数 2、预期系统响应时间 3、生产环境基础数据量 4、测试环境硬件配置信息 5、性能测试功能点确认,及各个业务功能的所占比例 6、分析被测试系统的框架及软件环境 |
性能需求文档 | 测试 |
视需求规模而定 | 是 | ||
性能需求评审 | 对《FI-项目组编码-TEST-性能测试需求YYYYMMDD.doc》进行三方评审,确定最终的性能测试需求。 | 评审记录表 | 测试 开发 需求 项目经理 架构 设计 维护 DBA |
1-2天工作人日 | 是 | |||
性能需求归档 | 根据测试方案、需求文档、设计文档,进行实际测试性能点调研。 文档要素: 1、测试环境软件及硬件信息 2、测试需求功能点对应具体测试用例,包括测试功能点的具体步骤,为下一阶段脚本录制提供参考 3、测试环境基础数据量 |
性能需求文档形成基线 | 测试 开发 配置管理 项目经理 |
1-2天工作人日 | 否 | |||
性能实施 | 性能测试起始时间 | 性 能测试至少是在功能测试进入冻结期时开始进行,但是性能测试的用例确定可以在功能测试期进行;另外,在性能测试起始阶段应对性能测试试点单位进行联机用户 和用户操作模块比例的数据调研,并且在项目性能测试开始前一个星期性能测试负责人发出《性能测试准备状况反馈表.xls》,由项目组填写反馈。 1.熟悉功能流程,编写简单脚本 2.新增的功能点和有较大改动的功能点的性能测试用例分析及评估 3.调研试点单位联机用户和系统操作模块的比例数 |
性能测试准备检查表 | 测试 开发 项目经理 |
5-7个工作人日 |
否 | ||
制定性能计划、方案、用例 | 根 据项目组提供的测试申请内容以及《FI-项目组编码-TEST-性能测试需求YYYYMMDD.doc》,制定和编写性能测试计划、方案以及测试用例。在 测试计划中需明确测试的内容、软硬件当前性能及具体人员及时间的安排,测试方案中详细描写具体功能测试步骤及性能测试点的功能概况及涉及的数据结构,测试 用例中为具体的测试数据。 |
性能测试计划 性能测试方案 性能测试用例 |
测试 开发 需求 项目经理 架构 设计 维护 DBA |
3-4个工作人日(不考虑在功能测试阶段进行用例确定的时间) |
是 | |||
测试环境搭建 | 环境搭建工作主要由项目组来完成。 工作内容: 原则:测试环境应尽量与用户正式环境保持一致。由于每次测试均需要搭建,项目组可以考虑在本地和客户方保留固定的压力测试环境。业务数据以客户正式生产的备份数据为基础,搭建完成后需要对测试环境进行验证 1.硬件条件基本保持一致 保证测试软件的前后台主机配置、储存系统配置和网络保持一致。 2.软件配置基本保持一致 保证数据库服务器的配置参数和中间件配置参数保持一致。 3.业务数据规模保持一致 4.软件版本和测试版本保持一致 升级程序测试目标:在搭建测试环境的同时,进行业务升级程序测试,完成所有升级手册中的步骤,特别注意数据结构变更、数据转数的效率问题,制定升级测试报告(包括升级问题和建议解决办法)。 |
部署手册 | 测试 开发 需求 项目经理 架构 设计 维护 DBA |
4个工作人日 |
否 | |||
验证测试环境 | 性能测试负责人根据项目组提交《性能测试准备状况反馈表.xls》反馈情况及项目组搭建的测试环境情况,验证其是否符合性能测试的条件,以确定是否按期进行性能测试。 该阶段需要考虑以下几点: 1. 软件是否处于一个比较稳定的状态 2.被测功能点是否正常、稳定,且不再进行大的调整。 3.软件部署方式和实际生产环境是否一致(包括应用服务器,数据库服务器以及操作系统的调优工作)。 4.性能测试环境是否有其他不相关应用程序干扰?若无法避免则应保证测试时停止测试无关应用运行。 5.性能测试环境硬件是否与实际生产环境一致?(若不一致请在备注中分别列出测试环境及生产环境硬件配置信息) 6.性能测试环境的数据规模是否与生产环境一致?对于测试环境的数据有两种方式解决, (1)项目组从地市公司导库到测试环境; (2)给测试组预留数据准备时间进行数据准备。建议采取第一种方式,数据更加真实而且节约时间。 |
性能测试准备检查表 | 测试 开发 需求 项目经理 架构 设计 维护 DBA |
1-2天工作人日 | 否 | |||
编写测试脚本 | 测试用例脚本根据测试用例的具体内容,利用测试工具或通过测试人员进行编写。 工作内容: 按照性能测试脚本开发规范根据测试用例编写测试脚本 |
性能测试脚本文件 | 测试 开发 |
视提交性能测试点而定 |
否 | |||
调试测试脚本 | 工作内容: 在测试环境上,使用编写完成的脚本进行脚本调试,主要工作内容是对脚本进行参数化,及关联脚本。 |
性能测试脚本文件 | 测试 开发 |
视提交性能测试点而定 |
否 | |||
基准测试 | 工作内容: 在测试环境中,根据测试方案(例如是测试单个用例还是测试综合用例),缩小测试并发用户进行预测试,目的是检验测试是否能正常进行。完成性能基准测试 |
性能测试数据基准 | 测试 | 2个工作人日 |
否 | |||
执行测试、监控测试数据 |
工作内容: 在测试环境下,根据测试方案进行正式测试。一般在正式测试时应该暂停与测试环境无关的系统及服务,性能测试的环境应单独运行,尽量避免与其他软件同时使用。 采集测试时系统性能数据。注意包括如下指标: 1)主机硬件指标: CPU、内存占用率和磁盘I/O。 2)数据库服务器指标: 会话数、buffer命中率、checkpoint时间以及vp数等。 同时采集SQL,查看SQL是否建立索引。 3)中间件指标: 服务队列。 网络指标: 网络流量、响应时间。 4)业务系统事务指标: 典型事务的响应时间。例如保单保存所消耗的时间。 |
测试监控数据 测试截图 |
测试 系统 DBA 中间件 |
4个工作人日 |
否 | |||
测试数据分析 | 提交《FI-项目组编码-TEST-问题记录.xls》,主要内容包括系统中存在的性能问题。 |
BUG管理工具 | 测试 | 1-2个工作人日 |
否 | |||
调优系统、修改程序 | 协调开发人员查找可能引起性能问题的程序效率点,并修改程序。 协调系统工程师、数据库工程师和中间件系统工程师调整系统参数。 |
测试 开发 |
4-6个工作人日 |
否 | ||||
回归测试 | 工作内容: 针对已经修改的效率点进行复测,检验其效率是否提高。 |
测试数据 | 测试 开发 |
4个工作人日 |
否 | |||
测试评估报告 | 工作内容: 针对性能测试获取的数据和回归的情况,对当前版本编写 《FI-项目组编码-TEST-性能测试评估报告YYYYMMDD.doc》 |
性能测试报告 | 测试 项目经理 |
1-2个工作人日 |
是 | |||
测试分析报告 | 工作内容: 根据测试评估报告的信息进行问题分析 |
性能测试报告 | 测试 项目经理 |
1-2个工作人日 |
是 | |||
性能测试管理 | 测试脚本、测试用例的管理 | 分版本、分业务、分项目管理性能测试用例、性能测试脚本。从而达到有效管理,高复用的目的。 |
管理库 | 测试 | 视具体规模而定 | 否 | ||
性能测试归档管理 | 按照待测系统版本号对测试用例、测试计划、测试方案、性能测试准备状况反馈表、测试脚本、测试结果、评估报告、工作统计及其性能测试问题汇总进行归档管理。 从而对历史版本的性能测试数据进行分析,预测软件未来的发展情况,提出改进性建议。 |
管理库 | 测试 | 1-2个工作人日 |
否 | |||
性能测试工作总结 | 针对测试过程中编写的文档、工具进行总结归档。 从而达到提高文档及工具的可扩展性、重用性。 |
管理库 | 测试 | 1-2个工作人日 |
否 |