火龙果-软件性能测试培训初级教程_第1页
火龙果-软件性能测试培训初级教程_第2页
火龙果-软件性能测试培训初级教程_第3页
火龙果-软件性能测试培训初级教程_第4页
火龙果-软件性能测试培训初级教程_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件性能测试培训初级教程性能测试基础知识LoadRunner基础知识Vuser-用户行为模拟器Controller-性能测试的指挥中心Analysis-寻找系统瓶颈的得力助手培训内容简介什么是性能测试性能测试策略性能测试方面的技能性能测试流程性能测试基础知识性能测试基础知识性能测试的含义:通过自动化测试工具模拟生产运行的业务压力或用户使用场景来测试系统的性能是否满足生产性能的要求。性能测试的目的:评估系统的能力识别系统的弱点系统调优验证稳定性、可靠性性能测试基础知识性能测试策略:性能测试(PerformanceTesting)负载测试(LoadTesting)压力测试(StressTesting)并发测试(ConcurrencyTesting)可靠性测试(ReliabilityTesting)……性能测试基础知识性能测试需要的相关技能:测试专业技能软件编程技能网络知识操作系统知识数据库知识中间件知识行业知识个人素养性能测试基础知识性能测试流程:PerformanceTestProcessTestPhasesTaskDeliveryAssessPhaseCollectRequirements,testscope,testgoalPerformancechecklistPlanPhaseFinalizetestscope,milestones,goal,toolsPerformancePlanDesignPhaseDesignthedetailtestcase;CreatetestscriptPerformancetestcaseExecutePhaseCreateScenario;Execute

ScenarioPerformancetestresultPerformanceTuningPhaseAnalyzeissuesandre-testingRe-testresultPostProductionPhaseReviewthefinalperformancetestresultPerformanceTestreportBusinessProfileCreateScriptsScenarioCreationScenarioExecutionResultAnalysisPerformanceTuningLoadRunner基础知识LoadRunner的组件LoadRunner工作原理LoadRunner在性能测试中的映射LoadRunner常用术语LoadRunner的协议HTTP协议详解LoadRunner基础知识LoadRunner的总体架构图,包括各个组件Vuser,Controller和Analysis之间的关系。LoadRunner的三大高手Vuser:用户行为模拟器Controller:性能测试的指挥中心Analysis:寻找系统瓶颈的得力助手LoadRunner基础知识这是LoadRunner的工作原理,从图中可以看出如何利用LoadRunner进行一次典型的系统性能测试。LoadRunner基础知识LoadRunner在性能测试中的映射:PlanningTheTestCreatingVuScriptCreatingTheScenarioRunningTheScenarioAnalyzingTheResultsMonitoringTheScenarioLoadRunner性能测试的过程:制定性能测试计划开发测试脚本创建运行场景执行测试监视场景分析测试结果LoadRunner基础知识LoadRunner常用术语<基本概念>:事务(Transaction):为了衡量服务器的性能,我们需要定义事务以获取这一操作所花费的时间。例如:有一数据查询操作,输入查询条件的时间是我们所不关注的。从点击“查询”按钮之后到查询结果显示出来,这段时间才是我们真正需要获取到的。也就是说当点击按钮之前让LoadRunner开始计时,直到而且显示出来计时结束。这个事务的响应时间才会在结果中显示出来。?思考如何定义一个事务的大小?它是单一的任务还是一系列复杂的任务?LoadRunner基础知识LoadRunner常用术语<基本概念>:思考时间(ThinkTime):用户在执行两个连续操作期间等待的时间称为“思考时间”。?思考在一个事务中如果插入了思考时间,对事务会有什么影响?有思考时间的脚本和没有思考时间的脚本相比,哪个给服务器造成的压力大?哪个更符合用户实际的工作场景?LoadRunner基础知识LoadRunner常用术语<基本概念>:集合点(Rendezvous):用以同步虚拟用户以便恰好在同时刻执行任务。!提示:集合点只能在Action中添加,Init和End部分不能添加。由于集合点是协调多个虚拟用户的并发操作,因而在VU运行脚本时它是没有任何意思的,它只有在Controller多用户并发场景时才有意义。?思考集点应该放在脚本的何处为益?LoadRunner基础知识LoadRunner常用术语<基本概念>:检查点(Checkpoint):用以验证程序的运行结果是否与预期结果相符。它并不是LoadRunner里专有的,在WinRunner和QTP中都有检查点。对于自动化测试来讲,检查点是一个很重要的概念。!提示:选取的检查点必须满足是验证事务通过与否的充分必要条件。它能够确定系统是一个正常的状态。检查点可以是常量、变量、文本、图像文件或是数据库记录等。LoadRunner基础知识LoadRunner常用术语<基本概念>:场景(Scenario):即测试场景,主要表现为Controller中设计与执行测试用例中的用户场景。主要工作有,在Controller中选择虚拟用户脚本、设计虚拟用户数量、配置虚拟用户运行时的行为、选择负载发生器、设置执行时间等。!提示:LoadRunner中的场景分为两种:手工场景(ManualScenario)和面向目标场景(Goal-OrientedScenario)。在面向目标场景中,集合点是不可用的。LoadRunner基础知识LoadRunner的协议:网上有很多资料去解释协议选择的重要性,说的貌似很高深,其实原理很简单。LoadRunner就像一个木马程序,他监听着你与服务器端的全部“交谈”并把它们记录下来。而不同的应用程序所采用的实现技术不一样,就如同我们人一样,不同地方的人说着不同的语言。这时我们就需要根据被测系统的特性来选择协议,LoadRunner就会派出不同语种的“翻译人员”去监听你们之间的谈话。如果选择了错误的协议LoadRunner将不能生成正确的脚本,就如同你派出一个只会中文的人去监听美国人之间的谈话一般,你将一无所获。LoadRunner基础知识LoadRunner所支持协议按应用领域分类:电子商务:FTP、LDAP、Palm、PeopleSoft8mulit-lingual、SOAP、Web(HTTP/HTML)和双Web/WinSocket协议。客户端/服务器:DB2CLI、DNS、Informix、MSSQLServer、ODBC、Oracle(2层)、SybaseCtlib、SybaseDblib和WindowsSockets协议。自定义:C模板、VisualBasic模板、Java模板、Javascrīpt和VBscrīpt类型的脚本。EnterpriseJavaBean:EJB测试和Rmi-Java协议。布式组件:适用于COM/DCOM、Corba-Java和Rmi-Java协议。中间件:Jacada和Tuxedo(6、7)协议。流数据:MediaPlayer(MMS)和Real协议。邮件服务:Internet邮件访问协议(IMAP)、MSExchange(MAPI)、POP3和SMTP。ERP/CRM:Baan、OracleNCA、Peoplesoft-Tuxedo、SAP-Web、SAPGUI、Siebel-DB2CLI、Siebel-MSSQL、Siebel-Web和Siebel-Oracle协议······LoadRunner基础知识HTTP协议原理详解:浏览器Web服务器DNS域名解析服务器请求web页返回页面请求页中包含的图片等元素返回元素浏览器解析成网页当用户在浏览器的地址栏里输入网页的URL然后回车,浏览器首先会发送一个HTTP的命令到Server,Server就会把页面的数据传送给浏览器,浏览器把数据解析成我们看到的HTML页面。但HTTP协议有一个特点,它是无状态的,也就是说浏览器和Server的每个交互都是独立无关的,Server不知道来自浏览器的任何两个请求是否出自同一页面,或者是有次序的规定。因此Web系统在HTTP协议上层进行了控制,通过Cookie、Session等机制来保证请求的状态。LoadRunner基础知识HTTP协议原理详解:当用户在浏览器的地址栏里输入网页的URL然后回车,浏览器首先会发送一个HTTP的命令到Server,Server就会把页面的数据传送给浏览器,浏览器把数据解析成我们看到的HTML页面。但HTTP协议有一个特点,它是无状态的,也就是说浏览器和Server的每个交互都是独立无关的,Server不知道来自浏览器的任何两个请求是否出自同一页面,或者是有次序的规定。因此Web系统在HTTP协议上层进行了控制,通过Cookie、Session等机制来保证请求的状态。LoadRunner基础知识以下是一个通过HTTPVuser录制生成的脚本例子:web_add_cookie("g_current_language=en;DOMAIN=");web_add_cookie("hostSignOn=true;DOMAIN=");web_url(":5443","URL=:5443/","Resource=0","Snapshot=t1.inf","Mode=HTTP",LAST);……web_submit_data("getconfigs.do","Action=:5443/portlets/language/getconfigs.do","Method=POST","RecContentType=text/html","Referer=:5443/security/hostSignon.do?hostSignOn=true","Snapshot=t12.inf","Mode=HTTP",ITEMDATA,"Name=action","Value=signon",ENDITEM,"Name=servProvCode","Value=",ENDITEM,"Name=username","Value=",ENDITEM,"Name=password","Value=",ENDITEM,"Name=accela_select_language","Value=",ENDITEM,"Name=switchLanguageForV360","Value=false",ENDITEM,LAST);HTTP协议相关的函数以web开头添加Cookie设置这是LoadRunner录制的典型HTTP请求请求一个web页这个请求的名字Web页的具体的URL该页面在VU里的快照名提交表单HTTP的请求方法,POST方法可用于提交表单信息允许服务器生成回退链表,当URL资源访问失败浏览器所退回的页面。表单中提交的具体内容,即所有涉及的变量名及其参数值。LoadRunner基础知识HTTP协议常用状态码的含义:200:OK

一切正常,对GET和POST请求的应答文档跟在后面。

201:Created

服务器已经创建了文档,Location头给出了它的URL。

202:Accepted

已经接受请求,但处理尚未完成。300:Multiple

Choices

客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。

301:Moved

Permanently

客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。

302:Found

类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。400:Bad

Request

请求出现语法错误。

401:Unauthorized

客户试图未经授权访问受密码保护的页面。500:Internal

Server

Error

服务器遇到了意料不到的情况,不能完成客户的请求。Vuser-用户行为模拟器Vuser:通过录制典型终端用户执行的操作来生成用户操作脚本。以便作为负载测试的基础。LoadRunner脚本开发步骤:录制用户的操作增强测试脚本配置Run-Timesetting在Vuser中独立运行脚本将脚本集成到ControllerRecordabasicuseroperationEnhance/edittheVuserscriptConfigureRun-TimesettingsIncorporatethescriptintoScenarioRunthescriptinVuser选择录制时所用的浏览器Vuser-用户行为模拟器录制脚本1、协议选择2、录制选项设置(以web协议为例)录制方式选择:HTMLorURL自动关联策略…Vuser-用户行为模拟器增强测试脚本:1、插入事务点2、插入集合点3、插入检查点4、插入特殊函数控制脚本流程:if…else字符串函数:strcmp输出函数:lr_output_messageLR的标准函数:lr_save_stringVuser-用户行为模拟器配置Run-Timesetting1、Thinktime策略2、Log记录策略3、Error发生时的处理策略4、生成虚拟用户的方式5、检查点策略6、网络情况设置7、脚本的迭代控制8、…Vuser-用户行为模拟器在Vuser中运行脚本:保证脚本运行的正确性。然而要想脚本能够真正的在测试场景中正确无误的运行,我们不仅仅需要将脚本放在Vuser中运行,还需要在Controller中运行。一般需要以下几步:1、VU里单用户单循环run(SUSI)2、VU里单用户多循环run(SUMI)3、Controller里多用户单循环run(MUSI)4、Controller里多用户多循环run(MUMI)验证脚本的正确性验证数据池动作的正确性验证脚并发的正确性验证数据池并发的正确性Controller-性能测试的指挥中心如果说性能测试的总导演是性能测试工程师,那么Controller就是当之无愧的执行导演了。Controller首先把演员(虚拟用户)都召集齐,然后把剧本交给它们(VU脚本),分配到各自的舞台(LoadGenerator),一声今下,演出开始!!注意:当Controller运行场景任务时,在任务管理器可以找到一个名为“lr_bridge”的进程,顾名思义,它就是起到联系Controller和Generator的桥梁作用,Controller的指令就是通过它来下达到LoadGenerator的。而LoadGenerator接到运行指令后,会启动一个mdrv.exe,以多进程/多线程方式调用运行脚本文件。Controller-性能测试的指挥中心多进程/多线程方式:用户可以在Controller的runtimesetting中选择Vuser的运行方式:多线程/多进程。如果按进程运行每个Vuser,LR则对每个Vuser生成一个实例,都将启动一个mdrv进程。多个mdrv进程会占用大量的内在及其它资源,这就限制了在同一负载生成器上运行的Vuser数量。如果按线程运行,在默认情况下,Controller为每50个Vuser仅启动一个mdrv进程,这些线程Vuser将共享父进程的内存段。这就大大节省了内存空间,从而在同一负载生存器上运行更多的Vuser.!注意:只有线程安全协议才能作为线程运行。需要注意的是下列协议不线程安全协议:Sybase-Ctlib、Sysbase-Dbib、Informix、Tuxedo和PeopleSoft-Tuxedo.Controller-性能测试的指挥中心设计性能测试场景:1、手工场景(ManualScenario):创建虚拟用户组,设置虚拟用户数目以及其它Run-time信息。2、面向目标场景(Goal-OrientedScenario):先定义测试要达到的目标,然后LR自动基于这些目标创建场景,运行过程中,会不断地把结果和目标相比较,以决定下一步怎么。手工场景是我们常用的设计模式,负载测试就常用它。手工场景符合我们的性能测试

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论