摘要:随着当夸软件开发技术的发展与成熟,越来越多复杂的软件系统应用于人们生活的各个领域,软件系统运行时的性能表现已经成为衡量软件产品质量的一个重要标准。研究了软件系统性能测试的整体的流程,并结合自动化测试工具loadrunner,对软件性能测试的相关信息进行了撂讨和分析。
关键词:软件测试;性能测试;loadrunner
1 软件性能测试
根据测试的目的和内容的不同,性能测试主要包括以下方面:
(1)负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
(2)强度测试:确定在系统资源特别低的条件下软件系统运行情况。
(3)容量测试:在用户可接受的响应范围内,确定系统可处理同时在线的最大用户数。
(4)压力测试:通过确定一个系统的瓶颈或者最大使用极限的测试。
(5)疲劳强度测试:以系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作强度性能的过程。
(6)大数据量测试:大数据量测试侧重点在于数据的量上,包括独立的数据量测试和综合数据量测试。独立的数据量测试针对某些系统存储,传输、统计、查询等业务进行大数据量测试,而综合数据量测试一般和压力性能测试、负载性能测试、疲劳性能测试相结合。
2 软件性能测试流程
2.1 测试方案设计
在软件性能测试的初始阶段,首先应对业务模型和系统架构进行调研,收集测试需求。wwW.133229.COm然后生戚性能测试计划。业务调研和系统调研,需要性能测试团队提前了解被测试项目的业务功能和系统架构。其间。开发部门应协助提供被测系统相关的文档和说明,如系统总体介绍、系统规格书、用户使用手册、网络拓扑结构图和系统配置说明、关键服务器及应用部署与配置等文档。通过和业务部门协商明确本次测试针对哪些业务行为,制定此次测试的目标,细化测试的关注点和性能指标要求。通过以上内容制定详细的测试方案,并制定详细测试计划和各阶段目标。
2.2 测试环境的搭建
测试环境的搭建分为软硬测试系统的环境搭建和测试相关的数据准备工作。环境搭建包括被测试系统的硬件环境建立和软件应用系统建立及基础数据环境建立。保障被测试系统的业务可用性和功能的正确性,包括测试系统(如被测试项目的操作系统、中间件、数据库、压力测试控制台、压力测试发起工具等)的环境搭建、软件的安装;测试环境的网络环境建立(如开放防火墙和网关等);最后进行测试环境可用性验证。测试数据准备包括测试应用系统基础数据准备,即需要按性能测试规模要求,准备足够的、一定规模的基础数据,通常采用全量恢复生产数据的方式以达到和生产环境数据一致性的要求。
2.3 测试场景开发
测试场景开发指测试程序(脚本)的开发。测试程序(脚本)的开发是对被测系统的用户业务行为进行模拟、录制、编程、参数化、脚本定制和调式等一系列工作,以使测试程序(脚本)可以真实模拟实际生产中的业务交易行为,并通过对程序中参数的配置实现对并发数、思考时间等属性的准确控制。
2.4 测试执行
测试执行是在测试方案的制定、测试环境准备、测试场景开发工作正确完成的基础上进行的。
2.5 测试报告和分析
性能测试报告和结果分析是在测试执行完成以后,对性能数据进行采集结果收集工作和针对性能测试过程中暴露的问题进行分析的阶段。性能测试报告是对性能测试过程中的监控结果以及报表进行汇总,按照一定的模板整理出的一份结论性文档。开发团队和性能测试团队应依据对性能测试实施过程中监控和记录的数据和表格,分析系统中存在的性能问题和程序缺陷。并有针对性的在报告中阐述问题、分析原因、提出解决或优化方案。
2.6 回归测试
回归测试是开发部门在性能测试报告的基础上针对软件的性能或者效率缺陷进行优化或者修复,为了验证优化的效果而进行的再测试。
3 软件性能测试工具loadrunner
作为软件质量控制中的重要一环,性能测试已经越来越受到软件开发商和用户的重视,成为软件测试的重中之重。性能测试通常在系统测试阶段执行,常常与强度测试结合起来,一般需要使用测试工具。一个优秀的软件测试工具,不仅可以辅助测试工作,满足科学测试的基本要求;而且可以自动化测试过程,节约大量的时间、成本、人员和资源,提高软件产品的质量。目前市场上主要使用的测试工具有微软公司的was(web application stress tool)、compuware公司的qaload、radview公司的webrunner、hp(mercury)公司的loadrunner。下面以loadrunner为例。介绍软件测试工具的工作流程。
loadrunner是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能检测来确认和查找问题,能够对整个企业架构进行测试。通过使用loadrunner,企业能够最大限度的缩短测试时间,优化性能和加速应用系统的发布周期。loadrunner能支持广泛的协议和技术,功能比较强大,可以为特殊环境提供特殊的解决方案。loadrunner由下面三部分组成:virtual usergenerator用来录制脚本、编辑脚本controller用来布置测试场景、执行测试场景;analysis用来对测试结果进行分析。
用loadrunner进行负载测试的流程通常由五个阶段组成:计划、脚本创建、场景定义、场景执行、监视执行和结果分析。
(1)计划负载测试:定义性能测试要求,例如并发用户的数量、典型业务流程和所响应时间;根据软件项目相关需求,定义相关测试的细节,撰写性能测试报告。
(2)创建vuser脚本:将最终用户活动捕获到自动脚本中loadrunner的脚本是c语言代码,loadrunner有自己的一整套函数接口,可以供外部调用。脚本可分init、action、end三部分,其中:init部分可以理解为初始部分。action可以理解为事务部分,也是测试的主体,end是退出结束。
当录制完一个基本的用户脚本后,在正式使用前我们还需要完善测试脚本,增强脚本的灵活性。一般情况下,我们通过以下几种方法来完善测试脚本。插人事务、插入结合点、插入注解、参数化输入。
(3)定义场景:使用loadrunner controller设置测试环境;录制好脚本之后,就可以把脚本加入到场景里面去了,这里首先介绍一下lr的场景类型,lr有2种大的场景类型。
①manual scenario:该项要完全手动的设置场景,这项下面还可以设置为每一个脚本分配要运行的虚拟用户的百分比,可在controller的scenario菜单下设置。
②goal—oriented scenario,如果你的测试计划是要达到某个性能指标,比如:每秒多少点击。每秒多少transae,tions,能到达多少vu,某个transaction在某个范围vu(5d。一1000)内的反应时间等等,那么就可以使用面向目标的场景。
(4)设置场景:
design:设计测试场景的静态部分,设置模拟用户生成器、模拟用户数量、模拟用户组等。
run:设计测试的动态部分,主要指添加性能计数器,在脚本运行的过程中可以通过这些计数器反馈的数据。
建立了测试场景后,我们可以对edit_schedule进行设置,设置测试开始执行的时问,对于手动设计的测试还可以设定它的持续时间,以及何时起用或禁止调用模拟用户。
(5)运行场景:通过loadrunner controller驱动、管理和监控负载测试。
设置完毕后,点击“开始方案”运行场景。在运行过程中,可以监视各个服务器的运行情况(database server、webserver等)。监视场景通过添加性能计数器来实现,下列数据需要特别关注:
①memory:available mbytes物理内存的可用数(单位mbytes)至少要有10%的物理内存值。
⑦processor:processor time cpu使用率。这是查看处理器饱和状况的最佳计数器。显示所有cpu的线程处理时间。如果一个或多个处理器的该数值持续超过90%,则表示此测试的负载对于目前的硬件过于沉重。为多处理器服务器添加该计数器的o到x个实例。
③processor queue length:是指处理列队中的线程数,小于2。处理器瓶颈时会导致该值持续大于2。
④context switches/sec;如果切换次数到5000*cpu个数和i0000*cpu个数中,说明它忙于切换线程。
⑤network interface:bytes total/sec为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。
(6)分析结果:使用loadrunner analysis创建图和报告并评估性能。
lr的报表分析功能也异常强大,有各种各样的报表,甚至可以将单个报表组合,也可以导出到excel文件和ht-ml文件。