版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LoadRunner 8.0自动化性能测试工具的应用,第一部份 LoadRunner简介,LoadRunner简介:,LoadRunner是Mercury Interactive公司开发的用于测试 应用程序性能的工具。通过LoadRunner,可以在可控制 的峰值负载条件下测试系统。LoadRunner可以模拟产生 分布在网络中的数千个虚拟用户(Vuser),通过使用最 少的硬件资源,提供一致的、可重复的、可度量的负载, 像实际用户一样使用您的应用程序, 并生成评估应用程 序性能所需的信息(以报告、图等形式)。 MI公司网站:www.MercuryI,LoadRunner组成结构,LoadRu
2、nner的组成部件主要有如下几个: 虚拟用户脚本产生器 VuGen (Virtual User Generator) 压力调度和监控系统 Controller 压力结果分析工具 Analysis 调优工具Tuning,LoadRunner运行原理,LoadRunner的测试过程,第二部份 录制Vuser脚本,Vuser的概念,虚拟用户生成器(也称为 VuGen)实际上是一套针对各种应用程序类型和通信协议,开发调试 Vuser 脚本的工具。 VuGen 能够录制、编辑Vuser 脚本,并且可以生成各种函数,来定义您在录制会话过程中执行的操作,还可以运行这些脚本。 Vuser LoadRunner
3、生成的模拟用户实际操作的虚拟用户。Vuser 通过执行典型业务流程模拟实际用户的操作。增加 Vuser 的数量可以增大系统上的负载。LoadRunner 拥有各种 Vuser 类型,每一类型都适合于特定的负载测试环境。,Vuser的类型,应用程序部署解决方案:Citrix ICA 客户端/服务器: DB2 CLI、DNS、Informix、MS SQL Server、ODBC、Oracle(2 层)、Sybase Ctlib、Sybase Dblib 和 Windows Sockets 协议。 自定义:C 模板、Visual Basic 模板、Java 模板、Javascript 和 VBSc
4、ript 类型的脚本。 分布式组件:适用于 COM/DCOM、Corba-Java 和 Rmi-Java 协议。 电子商务:FTP、LDAP、Palm、PeopleSoft 8 mulit-lingual、SOAP、Web (HTTP/HTML) 和双 Web/Win Socket 协议。 Enterprise Java Bean:EJB 测试和 Rmi-Java 协议。 ERP/CRM:Baan、Oracle NCA、Peoplesoft-Tuxedo、SAP-Web、SAPGUI、Siebel-DB2 CLI、Siebel-MSSQL、Siebel-Web 和 Siebel-Oracle
5、协议。 传统:终端仿真 (RTE)。 邮件服务:Internet 邮件访问协议 (IMAP)、MS Exchange (MAPI)、POP3 和 SMTP。 中间件:Jacada 和 Tuxedo(6、7)协议。 流数据:Media Player (MMS) 和 Real 协议。 无线:i-Mode、VoiceXML 和 WAP 协议。,新建Vuser脚本,启动LoadRunner,选择“Create/Edit Script”,打开VuGen,创建一个新的Vuser脚本,选择系统通讯协议,Vuser脚本的基本组成,创建的每个Vuser脚本都至少包括三部分: 一个Vuser_init、一个或多个
6、Action、一个Vuser_end。,Vuser脚本的基本组成,。,录制Vuser脚本,在URL中添加要测试的web站点的地址 Record into Action中选择把录制的站点放到脚本的哪一个部分 Record the application startup 意思是应用程序一旦启动,就录制脚本;如果不选此项,也可以在应用程序运行过程中选择开发录制脚本。 Options中进行录制前的选项设置,录制Vuser脚本,录制Vuser脚本,基于浏览器的应用程序推荐使用HTML-based Script,脚本中采用HTML 页面 的形式来表示,这种方式的Script脚本容易维护,容易理解。 不是基
7、于浏览器的应用程序推荐使用URL-based Script,脚本中的表示采 用基于URL 的方式,不是很好阅读。 如果基于浏览器的应用程序中包含了JavaScript,并且该Script向服务器产 生了请求,也要使用URL-based Script的方式录制。 基于浏览器的应用程序使用了HTTPS安全协议,也要使用URL-based Script的方式录制。,选取哪种录制方式,遵循以下原则:,录制Vuser脚本,录制Vuser脚本,是否记录录制过程中的ThinkTime,如果记录,还可以设置最大值。 通知Vugen去重新设置每个action之间的Http context,缺省是需要的。 完整记
8、录录制过程的log, 保存一个本地的snapshot,可以加速显示 把html的title放到web_reg_find函数里面 支持的字符集标准 Http header的录制,我们采用缺省即可,不需要用web_add_header去录制非标准的header信息。 对录制的content的内容进行filter,不作为resource处理的。,录制Vuser脚本,录制Vuser脚本,点击“Start Record”开始录制脚本,录制Vuser脚本,开始、暂停、结束录制,运行、编译脚本,创建Action,插入Text检查点,插入事务“起始点”,插入事务“结束点”,插入集合点,插入注释,改变录制的Op
9、tion设置,注意:录制过程中不要使用浏览器的后退功能,LR支持的不是很好,增强Vuser脚本,事务(Transaction) 事务(Transaction)我们为了度量服务器响应指定的Vuser请求所用的时间,需要在任务的开始和结束位置插入这样一个函数,这样就定义了一个事务,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在测试结果中会有反映。 插入事务操作可以在录制过程中进行,也可以在录制结束后进行。 每一个脚本中,可标记的事务数量不受限制,但是名称不能相同。 Lr_start_transaction(
10、“login”); /需要度量的任务脚本 Lr_end_transaction(“login” ,LR_AUTO); /事务名,事务状态,增强Vuser脚本,集合点(Rendezvous) 集合点:是一个并发访问的点,在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人
11、同时去提交数据,达到并发访问的目的。,注意:1、集合点经常和事务结合起来使用,常放在事务的前面; 2、集合点只能插入到Action部分,vuser_init和vuser_end中不能插入集合点;,Lr_rendezvous (“login”);,增强Vuser脚本,注释 可以插入注释来描述活动或关于某个操作的信息 /* * 费用查询 */ 模拟用户思考时间 我们把用户在连续的两个操作之间的等待时间称之为“思考时间” Lr_think_time();,增强Vuser脚本,输出消息 Vuser脚本中提供以下消息函数: Lr_debuge_message将调试消息发送到输出窗口 Lr_error_m
12、essage将错误消息发送到输出窗口 Lr_get_debuge_message检索当前的消息类 Lr_log_message将输出消息直接发送到output.txt 文件,此文件位于vuser 脚本目录下,为了防止输出信息干扰TCP/IP通信 Lr_output_message将消息发送到输出窗口 Lr_message将消息发送到Vuser日志和输出窗口,注意:不要在事务中输出消息,因为这有可能使事务执行时间变长,扭曲事务结果,定义参数,如果用户在脚本录制过程中需要填写一些提交表单的数据,比如增加数 据库的记录。这些数据会被记录到脚本中,当多个Vuser同时提交相同 数据时有可能会引起冲突,
13、为了模拟真实情况,需要各种各样的输入。 对Vuser脚本进行参数化有两个好处: 1、减少脚本的大小 2、提供使用不同的数据测试脚本的能力 参数化包括两项任务: 1、在脚本中用参数取代常量值 2、设置参数的属性以及数据源,定义参数,选中要替换的值,然后点鼠标右键, 选择“Replace with a parameter. ”,出现以下窗口,定义参数,参数类型解释: DateTime:在需要输入日期/时间的地方,可以用DateTime类型来替代。其属性设置也很 简单,选择一种格式即可。当然也可以定制格式。 Group Name:暂时不知道何处能用到,但设置比较简单。在实际运行中,LoadRunne
14、r使用 该虚拟用户所在的Vuser Group 来代替。但是在VuGen 中运行时,Group Name将会是None Load Generator Name:在实际运行中,LoadRunner 使用该虚拟用户所在Load Generator 的机器名来代替。 Iteration Number:在实际运行中,LoadRunner 使用该测试脚本当前循环的次数代替。 Random Number:随机数。在属性设置中可以设置产生随机数的范围。 Unique Number:唯一的数。在属性设置中可以设置第一个数以及递增数的大小。 注意:使用参数类型Unique Number必须注意可以接受的最大数。
15、例如:某个文本框能接受的最大数 为99。当使用参数类型时,设置第一个数为1,递增的数为1,但100 个虚拟用户同时运行时,第100 虚拟用户输入的将是100,这样脚本运行将会出错。注意:这里说的递增意思是各个用户取第一个值的 递增数,每个用户相邻的两次循环之间的差值为1。举例说明:假如起始数为1,递增为5,那么第一个 用户第一次循环取值1,第二次循环取值2;第二个用户第一次循环取值为6,第二次为7;依次类推。,定义参数,Vuser ID:在实际运行中LoadRunner使用该虚拟用户的ID 来代替,该ID是由Controller 来控制的。但是在VuGen 中运行时,Vuser ID 将会是
16、1。 User Defined Function:从用户开发的dll文件提取数据。 File:需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据。 点击“Vuser”菜单中“Parameter List”按钮,打开参数列表窗口,可以创建、修改脚本中所有参数,定义参数,定义参数,“Select next row”有以下几种选择:多个VU如何取值 Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取 Random:在每次循环里随机的读取一个,但是在循环中一直保持不变 Unique :每个VU取唯一的值。 注意:使用Unique类型必须注意数据表有足够多的数
17、。比如Controller 中设定20 个虚拟 用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的 数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一 个错误。 “Update value on”有如下几种选择:多次迭代如何取值 once在所有的反复中都使用同一个值, each iteration则每次反复都要取新值, each occurrence则只要发现该参数就要重新取值,也就是如果一个action中有多个该 参数,每遇到一个就要重新取一个值。,输出参数值:lr_output_message(User: %
18、snn, lr_eval_string(UserName);,插入Text/Image检查点,在进行压力测试时,为了检查Web服务器返回的网页是否正确,VuGen允许我们插入Text/Image 检查点,这些检查点验证网页上是否存在指定的Text或Image,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。,注意: LR只会判断Transaction是否被执行,而不会判断你获得的结果是否正确。而我们需要判断的往往是正确执行该次操作(事务)并获得正确的结果。为了保证测试时结果的正确性,一定要添加检查点。,举例说明: 系统登录-要测试200人同时进行登录,但是在应承程序里面没有正确
19、的关闭数据库的连接,导致登录100人后,建立了100个数据库连接,第101一个人登录的时候,由于超出数据库连接的最大数,所以,程序抛出了一个数据库异常。但是LR接收到了客户端的请求并且做出了响应,所以loadrunner会认为程序是正确执行的,但是事实却并非如此。,插入Text/Image检查点,注意:使用Tree View来增加检查点会比较方便、直观;推荐在录制脚本过程中增加检查点,插入Text/Image检查点,插入Image 检查点 插入Text 检查点,插入Text/Image检查点,注意:这个搜索的字符串可以使用正则表达式,设置Text检查点属性,/LR中显示的脚本 web_find
20、(Login, “RightOf=欢迎您!, “LeftOf=(袁琳), What=justinyuan, LAST);,插入Text/Image检查点,设置Image检查点属性,/LR中显示的脚本 web_image_check(web_image_check, “Src=images/QQ.jpg, LAST);,关联语句,为什么需要关联语句: 许多应用程序和网站都是按当前日期和时间来标识会话。如果尝试重放脚本,该操作将会失败,因为当前时间与录制的时间不同,通过关联语句可以保存动态数据,并且在整个运行方案过程中使用这些数据。 例如: 当你回放一次后,LR会自动录找你录制的时候和回放时候的差
21、别,找出动态数据,并作成参数。例如当用户登录时,会产生一个Session id号,访问结束后,该Session id便会失效。录制的时候,在脚本里面获取到了该Session id,但当再回放的时候,这个Session id已经无效了,所以,需要把这个Session id作为一个动态数据,当登陆的时候,便获取一个新的有效的Session id,然后通过web_reg_save_param(“WCSParam_Text2”,“LB=ProcessID=”,“RB=;”,“Ord=1”,“RelFrameId=1”,“Search=body”,LAST);函数保存下来,关联语句,Int web_re
22、g_save_param (const char * ParamName, , LAST); 第一部分:参数名字,用双引号括起,逗号分开; 第二部分:List of Attributes,包括:LB、RB、RelFrameID、Ord、Search、SaveOffset、SaveLen 等。 第三部分:LAST,结束标志。 LB是左边界,RB是右边界,比如说吧,程序中有这么一个赋值,ProcessID =A53625E18440FCE81F26DCE712E65EBA; 如果 ProcessID 的值是动态的,我想使用动态变量,那我设 定查找左边界为LB=ProcessID=,右边界为 ;的字
23、符,如果找到了,就替换成变量. Search是指查找范围,就是说在哪里查找这些值,可以取这样几个值,我们一般设为ALL,Body等。 Headers (Search only the headers), Body (search only Body data, not headers), Noresource (search only the html body, excluding all headers and resources), ALL (search Body and headers). The default value is ALL. RelFrameID: The hiera
24、rchy level of the HTML page relative to the requested URL.一般取1 ORD: This parameter, also known as Instance, indicates the ordinal or instance of the match. 一般取 1,Run-Time Setting,通过配置运行时的设置,可以模拟不同的用户活动,运行逻辑 需要了解的概念: 1、迭代 2、操作块 3、顺序 4、权重,Run-Time Setting,迭代次数 LoadRunner可以按指定的次数重复执行Actions。 操作块 操作块是脚本
25、内单独的操作组,可以包含vuser_init、vuser_action、vuser_end,可以 单独设置每个块的属性。 顺序 可以设置脚本内的操作顺序,是按顺序运行还是随机。 权重 对于随机运行的操作块,可以设置块内每个操作的权重或百分比。,注意:如果在Controller中设置了方案持续时间,那么将覆盖迭代设置。就意味着如果持续时间为5分钟,那么Vuser将在5分钟内完成任意多次迭代,即使运行设置也只设置了一次迭代。,Run-Time Setting,运行步设置,Run-Time Setting,注意: 1、一般在编辑、录制Vuser脚本时,建议开启日志记录。 2、在脚本中包含参数传递、或
26、参数值改变时,建议开启“Parameter substitution”,将输出参数值到Exception Log窗口。 3、在进行并发测试时,为了避免影响系统运行速度,建议关闭日志记录。,Run-Time Setting,注意:ThinkTime的设置会影响服务器的压力,如果忽略的话,压力最大,设置思考时间,Run-Time Setting,第三部份 创建运行场景,设置场景,运行场景描述在测试活动中所发生的各种事件。 一个运行场景包括:一个运行虚拟用户活动的LoadGenerator机器列 表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。,设置场景,Manual Scenario:该项要
27、完全手动的设置场景,这项下面还可以设置为每一个脚本分配要运行的虚拟用户的百分比,可在Controller的Scenario菜单下设置。 GoalOriented Scenario:如果你的测试计划是要达到某个性能指标,比如:每秒多少点击,每秒多少transactions,能到达多少VU,某个Transaction在某个范围VU(5001000)内的反应时间等等,那么就可以使用面向目标的场景。,LR包含两种场景类型,设置场景,Design:设计测试场景的静态部分,设置模拟用户生成器、模拟用户数量、 模拟用户组等。 Run:设计测试的动态部分,主要指添加性能计数器,在脚本运行的过程中可以通过这些计
28、数器反馈数据。,添加脚本,设置Schedule,建立了测试场景后,我们可以对Edit Schedule进行设置,设置测试开始执行的 时间,对于手动设的测试还可以设定它的持续时间,以及何时起用或禁止调用 模拟用户。,设置Schedule,添加 Load Generator Machines,点击 Generators 按钮后,出现 Load Generators按钮,点击 Details 按钮后,配置Generator,设置集合点及其策略,如果在脚本中设置了集合点,还需要在Controller中设置集合点策略。在菜单中调出设置集合点策略的窗口.,脚本运行的时候,在这里可以看到VU的状态。,IP
29、Spoofer(IP 欺骗),当运行场景时,虚拟用户使用它们所在的Load Generator 的固定的IP 地址。同时每个Load Generator 上运行大量的虚拟用户,这样就造成了大量的用户使用同一IP 同时访问一个网站的情况,这种情况和实际运行的情况不符,并且有一些网站会根据用户IP 来分配资源,这些网站会限制同一个IP 的登陆,使用等等。为了更加真实的模拟实际情况,LoadRunner允许运行的虚拟用户使用不同的IP 访问统一网站,这种技术称为“IP 欺骗”。启用该选项后,场景中运行的虚拟用户将模拟从不同的IP 地址发送请求。该选项非常的有用。 LoadRunner 的IP Wiz
30、ard工具就提供了生成多个ip的功能,IP Wizard是一个单独的程序,我们可以在开始菜单里面找到,你可以添加一个局域网内的IP段。添加后重启,在Win2k下使用Ipconfig/all查看到很多虚拟的IP,最后要在Controller里面选择enable ip spoofer.,注意:IP Spoofer 在连接Load Generators 之前启用。要使用IP 欺骗,各个Load Generator 机器必须使用固定的IP,不能使用动态IP(即DHCP)。,IP Spoofer(IP 欺骗),设置虚拟IP地址 首先,load Generator机器必须使用固定的IP,不能使用动态IP
31、确定网络中不冲突的IP地址 打开:开始-程序-loadrunner-tools-ip wizard,如图,输入Server的IP地址,IP Spoofer(IP 欺骗),增加IP地址,注意:一般使用C网即可,IP Spoofer(IP 欺骗),注意:选择“Reboot now”之后,将立即重新启动计算机,因此设置前需谨慎。重启之后,设置的虚拟IP都生效了,此时使用ping会发现都能ping通,并且本机的IP也被改成了第一个虚拟IP地址。确认虚拟IP是否都生效的方法:在运行中输入cmd,在命令窗口录入ipconfig/all,然后就能看到已经生效的所有IP。,IP Spoofer(IP 欺骗),
32、在controller中,选择 Scenario-Enable IP Spoofer,此项设置允许使用IP欺骗。按Generators按钮,设置虚拟用户生成器,将虚拟IP地址都添加进去,并连通。如图:,分析及监视场景,为了监视服务器的运行状况(Database Server、Web Server等),需要添加性能计数器,分析及监视场景,LR只能监视它支持的服务器的资源,它支持大部分常见的服务器。 System Resource: 包括windows平台,Unix平台等 Web Server: 包括Apache、IIS、Sun的iplanet等 Application server: 包括Web
33、logic、WebSphere等 Database server: 包括DB2,Oracle,Sql server,Sybase等 Java: ejb,J2ee等,需要一个ejbdetector.jar文件,分析及监视场景,对Windows(Win2k server)的监视: 对windows的监视相对比较简单,监视前首先需要用有管理员权限的帐号连接被监server,例如: net use qa-test /user:donny ,输入密码。然后就可以添加计数器,比较常用的计数器有: Memory:Available Mbytes 物理内存的可用数(单位 Mbytes)至少要有10% 的物理内
34、存值 Processor:%Processor Time CPU 使用率。这是查看处理器饱和状况的最佳计数器。显示所有 CPU 的线程处理时间。如果一个或多个处理器的该数值持续超过 90%,则表示此测试的负 载对于目前的硬件过于沉重。为多处理器服务器添加该计数器的 0 到 x 个实例。 Processor Queue Length:是指处理列队中的线程数,小于2。处理器瓶颈会导致该值持续大于 2。 Context Switches/sec:如果切换次数到5000*CPU个数和10000*CPU个数中,说明它忙于切换线程。 Network Interface:Bytes Total/sec 为发
35、送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。 SQL Server2000:%Processor Time,CPU 使用率 General Statistics,Logins/sec,这是每秒登录到 SQL Server 的计数。 SQL Statistics: Batch Requests/sec,每秒收到的 Transact-SQL 命令批数。这一统计信息受所有约束(如I/O、用户数、高速缓存大小、请求每秒收到的 Transact-SQL 命令批数。这一统计信息受所有约束(如I/O、用户数、高速缓存大小、请求的复杂程度等)影响。批请求数值高意味着吞吐量很好。,分析及监视场景,为了监视服务器的运行状况(Database Server、Web
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学本科临床医学专业《医疗质量管理》教学设计
- 沪教版小学数学二年级上册期末核心考点结构化复习与素养提升教学设计
- 初中历史九年级上册《流淌的文明:古代两河流域》教学设计
- 初中八年级英语上册 Unit 4 Do it yourself 单元整体教学设计与深度学习导学案
- 大学本科生态学专业三年级《生态共生体:理论、危机与综合保护策略》教案
- 初中八年级英语上册第六单元《职业志向与未来规划》阅读精读课教学设计
- 小学二年级数学《感轻重·建标准·估物体-克和千克单元整体教学设计》
- 安徽省阜阳市太和县多校2025-2026学年七年级下学期6月期末历史试卷(有答案)
- 2026开福区小语面试题及答案
- 2026龙华房地产面试题及答案
- 2026年国企中层干部竞聘笔考试题与答案
- 2026年演出经纪人考试题库及答案(真题)
- 2026江苏苏州市相城区人民检察院招聘编外人员3人笔试题库及答案详解(新)
- 2026年生产文员测试题及答案
- 2026中国氢能储运装备安全标准与国际对标报告
- 乡镇(街道功能区)党政领导干部离任经济事项交接表(开发区和园区适用本表-修订)
- 2026上海博物馆公开招聘12名工作人员考试备考试题及答案解析
- 2026年高考化学终极冲刺:专题03 化学反应原理综合题(大题专练逐空突破)(全国适用)(原卷版及解析)
- 实验室触电培训
- 2025贵州六盘水市盘州市教育局机关所属事业单位考调19人备考题库必考题
- TSG D0001-2009:压力管道安全技术监察规程-工业管道
评论
0/150
提交评论