版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、论 文 摘 要 随着当下软件开发技术的发展与成熟,越来越多复杂的软件系统应用于人们生活的各个领域,软件系统运行时的性能表现已经成为衡量软件产品质量的一个重要标准。本文研究了软件系统性能测试的整体的流程,并结合自动化测试工具LoadRunner,对软件性能测试的相关信息进行了撂讨和分析。关键字:软件测试 性能测试 LoadRunner目 录论 文 摘 要1一、 引论3二、 软件性能测试4三、 软件性能测试流程5(一) 测试方案设计5(二) 测试环境搭建5(三) 测试场景开发6(四) 测试执行6(五)测试报告和分析6(六) 回归测试6四、 软件性能测试工具LoadRunner7五、 LoadRun
2、ner脚本编写实例9六、总结14致谢14参考文献15软件性能测试研究李悦(开封大学 计算机应用专业)1、 引论软件在性能方面的“亚健康”问题一直伴随着国内很多企业的软件产品而存在。早期由于多数软件应用系统在企业中得不到有效的推广应用,因此用户往往会忽略自己在性能方面的需求。而现在软件几乎渗透到人们工作与生活的各个方面,因而软件的性能开始得到越来越多的重视。随着软件工程技术、软件开发方法和软件开发工具的发展,一方面使人们可以快速开发更加复杂的应用,另一方面也使开发出的软件规模越来越庞大,架构越来越复杂。随之而来的是软件性能问题也越来越多,最终导致很多软件系统由于性能方面存在问题而停止使用,给软件
3、公司以及客户都带来了一定的损失。因此,解决软件性能问题是十分必要的一项工作中,对于企业自身以及客户都具有重要的现实意义。性能测试,是软件测试中的重中之重,它在软件的质量保证中起着重要的作用。性能测试并不仅仅是请求、点击次数或是最快的系统,它的主要目的是考查在大压力和大数据量情况下,应用服务器最大处理能力和系统响应时间,从而分析出软件或系统的瓶颈所在,使系统运行在最佳的性能。使系统达到最佳性能,是性能测试根本目的。对于性能测试工作而言,不但需要好的性能测试理论作为工作指导,更需要掌握好的性能测试工具,因此本文中主要介绍性能测试的规划和设计的相关内容及目前国内性能测试领域应用最广泛的工具之一Loa
4、dRunner。 LoadRunner是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner能支持广泛的协议和技术,为您的特殊环境提供特殊的解决方案。2、
5、 软件性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。根据测试的目的和内容的不同,性能测试主要包括以下方面:(1)负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。(2)强度测试:确定在系统资源特别低的条件下软件系统运行情况。(3)容量测试:在用户
6、可接受的响应范围内,确定系统可处理同时在线的最大用户数。(4)压力测试:通过确定一个系统的瓶颈或者最大使用极限的测试。(5)疲劳强度测试:以系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作强度性能的过程。(6)大数据量测试:大数据量测试侧重点在于数据的量上,包括独立的数据量测试和综合数据量测试。独立的数据量测试针对某些系统存储,传输、统计、查询等业务进行大数据量测试,而综合数据量测试一般和压力性能测试、负载性能测试、疲劳性能测试相结合。3、 软件性能测试流程(1) 测试方案设计在软件性能测试的初始阶
7、段,首先应对业务模型和系统架构进行调研,收集测试需求。然后生成性能测试计划。业务调研和系统调研,需要性能测试团队提前了解被测试项目的业务功能和系统架构。其间。开发部门应协助提供被测系统相关的文档和说明,如系统总体介绍、系统规格书、用户使用手册、网络拓扑结构图和系统配置说明、关键服务器及应用部署与配置等文档。通过和业务部门协商明确本次测试针对哪些业务行为,制定此次测试的目标,细化测试的关注点和性能指标要求。通过以上内容制定详细的测试方案,并制定详细测试计划和各阶段目标。测试方案设计测试环境搭建测试场景开发测试执行测试报告和分析回归测试图1(2) 测试环境搭建测试环境的搭建分为软硬测试系统的环境搭
8、建和测试相关的数据准备工作。环境搭建包括被测试系统的硬件环境建立和软件应用系统建立及基础数据环境建立。保障被测试系统的业务可用性和功能的正确性,包括测试系统(如被测试项目的操作系统、中间件、数据库、压力测试控制台、压力测试发起工具等)的环境搭建、软件的安装;测试环境的网络环境建立(如开放防火墙和网关等);最后进行测试环境可用性验证。测试数据准备包括测试应用系统基础数据准备,即需要按性能测试规模要求,准备足够的、一定规模的基础数据,通常采用全量恢复生产数据的方式以达到和生产环境数据一致性的要求。(3) 测试场景开发 测试场景开发指测试程序(脚本)的开发。测试程序(脚本)的开发是对被测系统的用户业
9、务行为进行模拟、录制、编程、参数化、脚本定制和调式等一系列工作,以使测试程序(脚本)可以真实模拟实际生产中的业务交易行为,并通过对程序中参数的配置实现对并发数、思考时间等属性的准确控制。(4) 测试执行 测试执行是在测试方案的制定、测试环境准备、测试场景开发工作正确完成的基础上进行的。(五)测试报告和分析性能测试报告和结果分析是在测试执行完成以后,对性能数据进行采集结果收集工作和针对性能测试过程中暴露的问题进行分析的阶段。性能测试报告是对性能测试过程中的监控结果以及报表进行汇总,按照一定的模板整理出的一份结论性文档。开发团队和性能测试团队应依据对性能测试实施过程中监控和记录的数据和表格,分析系
10、统中存在的性能问题和程序缺陷。并有针对性的在报告中阐述问题、分析原因、提出解决或优化方案。(6) 回归测试回归测试是开发部门在性能测试报告的基础上针对软件的性能或者效率缺陷进行优化或者修复,为了验证优化的效果而进行的再测试。4、 软件性能测试工具LoadRunner作为软件质量控制中的重要一环,性能测试已经越来越受到软件开发商和用户的重视,成为软件测试的重中之重。性能测试通常在系统测试阶段执行,常常与强度测试结合起来,一般需要使用测试工具。一个优秀的软件测试工具,不仅可以辅助测试工作,满足科学测试的基本要求;而且可以自动化测试过程,节约大量的时间、成本、人员和资源,提高软件产品的质量。目前市场
11、上主要使用的测试工具有微软公司的WAS(Web Application Stress Tool)、Compuware公司的QALoad、RadView公司的WebRunner、HP(Mercury)公司的LoadRunner。下面以LoadRunner为例。介绍软件测试工具的工作流程。LoadRunner是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能检测来确认和查找问题,能够对整个企业架构进行测试。通过使用LoadRunner,企业能够最大限度的缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner能支持广泛的协议和技术,功能比较强大,可以为特殊
12、环境提供特殊的解决方案。LoadRunner由下面三部分组成:Virtual UserGenerator用来录制脚本、编辑脚本;Controller用来布置测试场景、执行测试场景;Analysis用来对测试结果进行分析。用LoadRunner进行负载测试的流程通常由五个阶段组成:计划、脚本创建、场景定义、场景执行、监视执行和结果分析。(1) 计划负载测试:定义性能测试要求,例如并发用户的数量、典型业务流程和所响应时间;根据软件项目相关需求,定义相关测试的细节,撰写性能测试报告。(2)创建Vuser脚本:将最终用户活动捕获到自动脚本中LoadRunner的脚本是C语言代码,LoadRunner有
13、自己的一整套函数接口,可以供外部调用。脚本可分INIT、ACTION、END三部分,其中:INIT部分可以理解为初始部分。ACTION可以理解为事务部分,也是测试的主体,END是退出结束。当录制完一个基本的用户脚本后,在正式使用前我们还需要完善测试脚本,增强脚本的灵活性。一般情况下,我们通过以下几种方法来完善测试脚本。插人事务、插入结合点、插入注解、参数化输入。(3)定义场景:使用LoadRunner Controller设置测试环境;录制好脚本之后,就可以把脚本加入到场景里面去了,这里首先介绍一下LR的场景类型,LR有2种大的场景类型。Manual Scenario:该项要完全手动的设置场景
14、,这项下面还可以设置为每一个脚本分配要运行的虚拟用户的百分比,可在Controller的Scenario菜单下设置。GoalOriented Scenario,如果你的测试计划是要达到某个性能指标,比如:每秒多少点击。每秒多少transae,tions,能到达多少VU,某个Transaction在某个范围VU(5D。一1000)内的反应时间等等,那么就可以使用面向目标的场景。(4)设置场景:Design:设计测试场景的静态部分,设置模拟用户生成器、模拟用户数量、模拟用户组等。Run:设计测试的动态部分,主要指添加性能计数器,在脚本运行的过程中可以通过这些计数器反馈的数据。建立了测试场景后,我们
15、可以对Edit_Schedule进行设置,设置测试开始执行的时问,对于手动设计的测试还可以设定它的持续时间,以及何时起用或禁止调用模拟用户。(5)运行场景:通过LoadRunner Controller驱动、管理和监控负载测试。设置完毕后,点击“开始方案”运行场景。在运行过程中,可以监视各个服务器的运行情况(DataBase Server、WebServer等)。监视场景通过添加性能计数器来实现,下列数据需要特别关注:Memory:Available Mbytes物理内存的可用数(单位Mbytes)至少要有10的物理内存值。Processor:Processor Time CPU使用率。这是查
16、看处理器饱和状况的最佳计数器。显示所有CPU的线程处理时间。如果一个或多个处理器的该数值持续超过90,则表示此测试的负载对于目前的硬件过于沉重。为多处理器服务器添加该计数器的O到x个实例。Processor Queue Length:是指处理列队中的线程数,小于2。处理器瓶颈时会导致该值持续大于2。Context Switches/sec;如果切换次数到5000*CPU个数和i0000*CPU个数中,说明它忙于切换线程。Network Interface:Bytes Total/sec为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。
17、(6)分析结果:使用LoadRunner Analysis创建图和报告并评估性能。LR的报表分析功能也异常强大,有各种各样的报表,甚至可以将单个报表组合,也可以导出到Excel文件和Html文件。 5、 LoadRunner脚本编写实例 用LoadRunner编写socket应用的测试脚本 LoadRunner提供了很好的对socket应用的支持,用户可以通过录制方法完全获得客户端发送和接收的数据,然后在录制的基础上对相应的数据进行参数化和关联等处理。 但在有些情况下(例如,客户端程序没有windows上的版本),我们就很难通过录制达成生成脚本的目标了。但如果我们能够完全知晓服务端和客户端的交
18、互过程,完全手工编写一个测试脚本也并不是一件特别困难的事情。 在本文中,我们以一个实际的例子说明如何根据服务端和客户端交互的过程,用LoadRunner自行编写相应的脚本。以下是服务端工作线程的代码:DWORD WINAPI mythread( LPVOID lpParameter) /客户线程 struct My my; memcpy(&my,lpParameter,sizeof(My); printf("One client connect!n"); char str11024; /接收字符串 char str21024; int i; i=recv(my.sk
19、t,str1,sizeof(str1),0); /接收客户请求 str1=0; char *filename; filename=new char255; for(int j=2;j<i;j+) /获得文件名 filenamej-2=str1j; filenamei-2=0; if (str10='S') printf("The file name : %sn",filename); ofstream out(filename); /创文件流 if (!out) printf("cannot open file.n"); /文件是否
20、正确打开,打开错误则退出 send(my.skt,"q",1,0); /向客户发送退出信息 closesocket(my.skt); /解除客户连接; return 0; str20='O' str21='K' str22=0; send(my.skt,str2,strlen(str2),0); /回复OK信息 i=recv(my.skt,str1,sizeof(str1),0); /接收文件长度 str14=0; int len; len=str10*1000+str11*100+str12*10+str13; printf("T
21、he File lenght is: %d Byten",len); for(int j=0;j<len;j+) char str1; i=recv(my.skt,str,sizeof(str),0);/接收文件,按字节接收,接收字符串为2个字节 str=0; out.put(str0); out.close(); /关闭文件 printf("over!One client quit!n"); /接收文件完毕 closesocket(my.skt); /解除此客户连接 return 0; if (str10='R') ifstream in(
22、filename); if (!in) printf("cannot open file or file not exist.n"); /文件是否正确打开,打开错误则退出 send(my.skt,"q",1,0); /向客户发送退出信息 closesocket(my.skt); /解除客户连接; return 0; char ch; int len=0; while(in.get(ch) len+; /get file lenght in.close(); str20='O' str21='K' str22=len/100
23、0; str23=(len%1000)/100; str24=(len%100)/10; str25=len%10; printf("%s",str2); send(my.skt,str2,6,0); /发OK文件长度 in.open(filename); if (!in) printf("cannot open file or file not exist.n"); /文件是否正确打开,打开错误则退出 send(my.skt,"q",1,0); /向客户发送退出信息 closesocket(my.skt); /解除客户连接; ret
24、urn 0; while(in.get(ch) /发文件 char str1; strcpy(str,""); str0=ch; str1=0; send(my.skt,str,1,0); /发送一个字符 in.close(); printf("over,One client quit!n"); /传输文件完毕 closesocket(my.skt); /解除此客户连接 return 0; printf("Bad command!n"); closesocket(my.skt); return 0; 从这段代码中可以看到,当客户端和服
25、务端建立连接后,客户端会先向服务端发送一个请求,该请求的第一个字节是大写的“S”或是“R”,分别向服务端写文件或是从服务端读取文件。从第三个字节开始,后面的内容是请求文件的文件名。 服务端在接收到客户端的请求后,根据请求的类型,如果是“S”,则打开指定的文件,并返回一个字符串“OK”;如果是“R”,则打开指定的文件并向客户端发送“OK”“文件长度”。 随后,如果是“S”,则由客户端发送写入的文件长度和文件内容给服务端;如果是“R”,则向客户端发送文件的内容。 到此我们已经完全明了了客户端和服务端的交互过程,因此,我们可以尝试在LR中建立一个脚本用户模拟客户端行为。下面我们以“S”的处理过程为例编写脚本。 1、打开VUGen应用; 2、新建脚本,选择“windows sockets”协议,不需录制; 3、在Action Section中增加以下内容: /建立到服务端的连接 lrs_create_socket("socket1","TCP","RemoteHost=127.0.0.1:8000",LrsLastArg); /发送“S”和文件名 lrs_send("socket1", "buf0&q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度二手汽车贷款违约处理合同2篇
- 2024年度无人机销售合同
- 2024年度企业知识产权保护与许可使用合同3篇
- 恩下册语文课件
- 2024年度工程合同谈判策略与标的竞争限制3篇
- 2024年度担保存货监管与供应链金融服务扩展合同
- 《传染病和寄生虫》课件
- 2024年度租赁期满后物业续租合同3篇
- 2024年度甘肃省中药材种植加工合作协议
- 高层民用建筑钢结构技术规范-JGJ-99-98
- rmxprt电机中文版教程5
- 常用CMYK色值表大全
- 五年级上册美术课件-第2课 画人像 ▏人美版 (共9张PPT)
- 有限元法基本原理及应用全套课件完整版电子教案最新板
- 污水处理厂日常水质监测体系
- 心理健康状况排查问题学生登记表样表
- 三年级数学上册苏教版《认识几分之一》学习单(校际公开课)
- 《调皮的小闹钟》 课件
- 食品金黄色葡萄球菌检验原始记录
- CISG联合国国际货物销售合同公约中英文对照复习过程
- 中国八大菜系对外汉语课课件
评论
0/150
提交评论