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