Loadrunner系统知识(⾮常好)
LoadRunner内部结构
1,被测系统是由驱动进程(多线程驱动的进程)和 来产⽣压⼒的,其中仿真应⽤程序的客户端,如IE浏览器。它执⾏了三个主要的操作:
Kli> cpp (C 语⾔pre-processor)
1)cci (C语⾔编译器),建⽴ci⽂件,然后使⽤被测系统的协议相关的驱动来执⾏。
通过在Windows批处理脚本中启动来默默地启动运⾏。
Mdrv能⾃动停⽌加载Vuser,因为他们与Vuser和Windows负载⽣成器上的CPU使⽤监视器之间互相通信。
在Windows机器上,对于每⼀个基于Java的Vuser都有⼀个独⽴的JVM。2,虚拟⽤户通过在负载⽣成器客户端机器上使⽤agent()作为服务或者进程来按照组(在指定的负载⽣成器
上运⾏相同脚本的虚拟⽤户的集合)启动虚拟⽤户。
3,每⼀个拥有代理的机器维护⼀个在.qtp⽂件中的执⾏⽇志。
4,当⽇志被启⽤后,代理同样会在结果⽂件中为每⼀个虚拟⽤户(由虚拟⽤户组分开)建⽴⼀系列⽇志⽂件。
5,在执⾏过程中,这些⽂件可以通过在Controller机器上的view > Show Output窗⼝中显⽰。
6,在预先设置延时上,Controller上运⾏的Scheduler指导代理(通过Windows 54345端⼝,或者Unix上的动态端⼝)去初始化场景会
话.)在请求中发送⼀份场景的拷贝.
7,代理是由每⼀个负载⽣成器上的Remote Agent Dispatcher进程(以前叫Remote Command Launcher(RCL))启动的.
8,每⼀个根据场景(.lrs)定义⽂件中设置的代理来决定哪⼀个虚拟⽤户组和脚本需要在主机上运⾏.
## 这就是说Controller可以从DOS的批处理⽂件(.batch)中启动. REM Start Controller:
SET M_ROOT=C:\Program Files\Mercury Interactive\LoadRunner\bin
cd %M_ROOT%
< -TestPath D:\Dev\Dev1.lrs -port 8080 -Run -DontClose
●包含的-Run 参数与⼿动的点”开始场景”⾃动运⾏是⼀样的. 这不是⼀个很
好的⽅法,因为你可能需要决定从以前的运⾏中收集⽂件或者想改变输出⽂件夹.
●这是假设系统环境变量PATH已经被更新了,包括LoadRunner的安装.
9, Controller通过使⽤Windows 操作系统⽂件夹⾥的参数值来启动.因为LoadRunner被设计成在⼀个机器上⼀次只能运⾏⼀个Controller实例,所以需要使⽤Windows⽂件夹.
## 为了在⼏个应⽤之间快速的切换, 在Controller⼯作之后保存LoadRunner的ini⽂件, 然后使⽤记事本来制作⼀个批处理⽂件.在执⾏
wlrun之前拷贝应⽤程序的指定版本的ini⽂件. 下⾯是⼀个应⽤程序⽂件拷贝的例⼦:
copy %WinDir%/wlrun7-XXX.ini %WinDir%/wlrun7.ini
copy %WinDir%/wlrun7-XXX.dft %WinDir%/wlrun7.dft
需要修改⼀些默认值:
批处理文件注释●在wlrun7.ini⽂件的output区域, MaxNumberOfOutputMessages=
from 10000 to 100000, 这就限制了存储在数据库中的输出信息的数⽬.
●MaxOutputUIRowsToShow限制了在Controller的输出窗⼝中显⽰
的信息/错误⾏总数.
●在LoadRunner程序⽂件的dat\protocols ⽂件夹下的
QTWeb.lrp⽂件的[Vugen]部分, 添加⼀个MaxThreadPerProcess=5来限制由每个负载⽣成器进程管理的线程数.
●存储在wlrun5.ini 和wlrun7.dft⽂件中的DefaultScenarioDir,
DefaultscrīptDir, DefaultResultDir,[Recent File List]⼏个数据的值会在每次Controller改变的时候更新。
10,在Vu scrīpts中定义的每个虚拟⽤户进⾏的操作是⽤LoadRunner 的⽣成的. 当这个程
序启动后, 它在windows ⽂件夹下存
储了comparamui.INI⽂件来保存[LastTablesUsed]下⾯⽂件的历史,并且保存由Insert > New Parameter > Dates 菜单指定的
[ParamDialogDates].
VuGen在Windows⽂件夹下存储和检索vugen.ini⽂件.当使⽤JAVA 的时候,需要添加⼀些其他的调试选项:
[DynaDlg]
JavaLevel=3
当在VuGen 8.1中使⽤8.0的脚本, 往Vugen.ini中加⼊信息:
[Editor]
OLDEDITOR = 1
VuGen在LR⽂件夹template/qtweb default.cfg⾥和脚本⽂件⾥打开. Vu scrīpts可以使⽤脚本外部的参
数⽂件来获得的变量值进⾏编码.
更多关于VuGen的信息请看脚本编写的章节.
11. 运⾏过程中,执⾏结果存储到⼀个结果⽂件夹中.
我喜欢在场景执⾏中把结果设置成⾃动产⽣结果.这样,LoadRunner会在每次启动⼀个场景之后⾃动产⽣⼀个⼦增的结果名. 例如,结果名称Res1会⾃动增长到Res12或有时候是R es11-1.
错误被写到output.mdb微软的Access数据库中。
12. 在每⼀个结果⽂件夹中, 程序⾃动创建Log⽂件夹来包含每个组的⽇志⽂件. 运⾏之后,在Controller中查看⽇志⽂件,点, .然后在组中点右键,选择“Show Vuser Log”
13. 场景运⾏的时候, 监视器在本地维护每个主机的计数器.
14. 运⾏完成之后, "collate"进程处理.eve和.lrr结果⽂件, 并且在结果⽂件夹下创建⼀个临时的.mdb数据库.
在处理⼤数据量的结果时, 为了防⽌错误发⽣,使⽤MSDE. ……
15.分析模块(8,)使⽤mdb数据库中的数据来产⽣分析图表和报告.
16. 每⼀次场景运⾏后的结果⽂件results_name.lrr,也叫分析⽂档⽂件,由分析程序来读取并且显⽰百分位图表.
Loadrunner系列学习--Loadrunner架构(1)
⼀:Loadrunner结构概述
Loadrunner通过使⽤虚拟⽤户代替真实⽤户操作客户端软件来⼯作的,例如使⽤IE对IIS或者Apache Web服务器发送HTTP请求.
多个虚拟⽤户客户端的请求是有负载⽣成器(Load Generator)产⽣的,⽬的是对不同类型的被测服务器产⽣负载.
这些负载⽣成器代理(load generator agent )是由Mercury's的控制器(Controller)来控制启动或停⽌的.
控制器根据由编译的脚本引起的场景(Scenarios)和相关的运⾏时设置(Run-time Settings)来控制负载测试的运⾏.
这些脚本是由虚拟⽤户脚本⽣成器(Virtual user scrīpt Generator)也叫VUGen⽣成的.它是通过截获⽹络应⽤程序的客户端和服务器之间的⽹络通信包⽽产⽣的C语⾔脚本,这些脚本可以被虚拟⽤户执⾏.
对于Java客户端,VuGen通过客户端的JVM的钩⼦技术来捕获请求.
在运⾏时,每个机器的状态由控制器监控.
运⾏结束后,控制器把监视⽇志和右负载⽣成器产⽣的⽇志结合起来给分析器(Analysis)使⽤.分析器能够把这些⽇志⽣成结果报表和Microsoft Word 格式的图表,⽔晶报表或HTML格式页.
每⼀个由分析器⽣成的HTML报表页包括⼀个到结果的超链接,这些结果⽂件可以⽤Microsoft Excel打开来进⾏其他的分析.
运⾏时产⽣的错误都被存储在⼀个数据库中,该数据库可以⽤Microsoft Access打开.
虚拟⽤户:
不象WINRUNNER那样只能模拟⼀个客户端⽤户,LOADRUNNER能够模拟成千上万的虚拟⽤户.
负载⽣成器由VnGen脚本控制.这些脚本是使⽤跟被测客户端⼀样的协议产⽣的⾮GUI的API函数.但是
WINRUNNER是使⽤GUI⽤户来模拟被测客户端的键盘输⼊,⿏标点击和其他⽤户接⼝的操作,⽽且只能运⾏⼀个GUI⽤户.⽽LOADRUNNER终端服务管理器 (LoadRunner Terminal Services Manager)管理使⽤终端服务代理来管理远程机器并且能登陆到客户端终端服务的会话.
运⾏的时候,线程类型的虚拟⽤户共享⼀个公⽤的内存池.所以线程⽅式可以使每个负载⽣成器⽀持更多的虚拟⽤户.
所有负载⽣成器上的虚拟⽤户的状态是从"Running"开始的,然后在运⾏完脚本的init部分后变为"Ready".虚拟⽤户的"Finished"有通过或者失败的结束状态.当负载⽣成器负载过重时虚拟⽤户⾃动的"Stopped".
监控标准的Web(HTTP)服务器(Apache, IIS, and Netscape)不需要额外的license.
为了能够监控使⽤SOAP和XML的Web Services,需要⼀个独⽴的license,并且虚拟⽤户需要Web Services插件.该插件被Feature Pack(FP1)安装.
产品版本:略
应⽤程序组件需求
-
Virtual User
Controller with
On-Line Monitors
<
Load Generator
<
<
Tuning
控制台程序:
使⽤WINDOWS远程桌⾯连接
为了使WINDOWS远程桌⾯连接会话在测试时不会超时,每个机器的终端服务应该如下配置:
1.开始-->程序(或者控制⾯板),管理⼯具下选择终端服务配置.
2.打开树型的连接⽂件夹
3.右击RDP-Tcp,选择属性.
4,点会话标签页.
5,确保选中"Override user settings"
6.设置空闲会话限制为最⼤2天来代替默认的2个⼩时.
7,点应⽤.
8.OK
注意:确保上⾯的做法没有影响到公司的安全策略.
注意:终端⽤户只能允许两个活动的连接.断开会话的时候使⽤开始-->退出,⽽不要点远程桌⾯的"X"关闭.
LR的安装和配置:略
应⽤程序⽂件的位置:(省略部分介绍)
可以使⽤环境变量来快速获得LR的安装路径,如环境变量为"LR81",你可以使⽤
cd %lr81%
WINDOWS⽂件夹下的⽂件:
1.路径存储在wlrun.ini⽂件中的[ProductEnv]下作为M_ROOT.该⽂件在C:\WINNT (或 C:\Windows)
2.C:\WINNT (或 C:\Windows)下同样存有安装时的Maintenance Number (MPN),存在mercury.ini⽂件中.
其他省略.
好了,今天先翻译到这⾥了,该吃中午饭了,哈哈,下期会翻译LOADRUNNER的内部结构.
Loadrunner学习---脚本编写(1)
VuGen脚本⽂件的开发过程
1。定义测试项⽬的⽬标,环境,脚本,测试数据,硬件等。脚本应该符合编码规范或编码习惯。
2。创建⼀个版本⽂件夹来保存被测应⽤程序相关的各种不同资源,例如截获的.png/.gif图形⽂件,录制过程保存的html⽂件,录制中的所有html源⽂件和VuGen的录制⽇志。
3。列出(在表⾥)每⼀个⼿动操作业务过程需要的实际步骤
1)截取每⼀个屏幕图像(screen image )。
2)为每⼀个屏幕(screen)分配⼀个唯⼀的事务名称。
3)为处理的每⼀个步骤使⽤的技术组件(URL或者⽅法和函数)做注释。
4。创建⼀个版本⽂件夹。
注:我不喜欢使⽤默认位置,我喜欢把所有脚本相关的⽂件放到⼀个相同的⽂件夹中。不幸的是,这意味着如果我在不同的测试间互相交换录制,那我每次都得记住修改默认的设置。
注:当录制⼀个新的脚本时,我喜欢选择多协议⽽不是单个协议。。。
5。根据你的业务处理列表上指定的⽤户使⽤步骤和screen的顺序来使⽤VuGen 录制程序,产⽣⼀系列脚本代码。在“开始录制”对话框中
* 使⽤COM/DCOM 协议时,选择“Win32应⽤程序“
* 使⽤Web(HTTP/HTML)时,选择“Internet Application“
6。根据改进脚本⽅法和脚本语⾔规则来修改脚本。
改进脚本的⽅法:
1)为每⼀个GUI的screen添加事务语句来获得事务时间。
2)添加显⽰数据来帮助调试。
3)添加验证点来验证是否期望的⽂本或者图⽚在每个脚本执⾏后显⽰。
4)通过插⼊新参数和动态获得整个⽂件的⽅式对硬编码的URL,⽤户id,⽤户密码和其他的变量数据进⾏参数化。这样脚本中的参数就可以被动态的替换,以此来模拟运⾏时不同数据的使⽤。
5)添加重试逻辑(retry logic)来处理不可见的错误。
6)添加随机函数发⽣器变化脚本来模拟真实的负载。
7)添加if/else逻辑来检查结果,或者来进⾏合适的操作,或者来在合适的时候退出脚本。
8)在⼀个screen中添加语句来捕获需要在其他命令中使⽤的数据。当使⽤Microsoft .NET的web form技术的时候,需要避免习惯性的“脚本超时“错误。
9)添加语句来调⽤外部库函数,以便保存和检索在内存Virtual Table Server中的数据。
10)处理XML.
11)添加语句来模仿客户端的Javascrīpt问题。
12)添加语句来管理超时。
13)从事务计时器中计算和减去⽆效的时间。
14)输出⽇志。
15)添加集合点。
16)添加时间(Timing)。
脚本语⾔规则:
把cookie代码标注出来(因为脚本运⾏的时候他们被再次执⾏)。
7。通过在VuGen中运⾏来调试和调整脚本(单个⽤户),同时运⾏时设置的⽇志能够显⽰如下信息:
辨别和解决脚本编辑错误。
决定timing.
设置初始运⾏设置的场景。
8。在控制器中使⽤full test Runtime Settings来运⾏脚本。
脚本录制和产⽣:
建⽴⼀个新脚本的第⼀步是选择⼀个单协议或多协议。
* ⼀些协议可能在多协议模式下不能⽤。
* 只有在多协议的GUI下你才能重新排列action
在使⽤Java协议之前,确保你在环境变量的路径下有JDK,否则你可能会遇
到这个错误:
Error: Failed to Java Compiler in Path and JDK installation folder in registry. [MsgId: MERR-22981] Error: Failed to get JRE version. Check that your PATH environment variable contains \bin directory. [MsgId: MERR-22986]
当选择Java协议的时候:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论