




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LoadRunner内部结构 1, 被测系统是由驱动进程mdrv.exe(多线程驱动的进程)和r3vuser.exe来产生压力的,其中r3vuser.exe仿真应用程序的客户端,如IE浏览器。它执行了三个主要的操作: Kli cpp (C 语言pre-processor) 1)cci (C语言编译器),建立ci文件,然后使用被测系统的协议相关的驱动来执行。通过在Windows批处理脚本中启动Mdrv.exe来默默地启动运行。Mdrv能自动停止加载Vuser,因为他们与Vuser和Windows负载生成器上的CPU使用监视器之间互相通信。在Windows机器上,对于每一个基于Java的Vuser都有一个独立的JVM。2, 虚拟用户通过在负载生成器客户端机器上使用agent(3900 magentproc.exe)作为服务或者进程来按照组(在指定的负载生成器上运行相同脚本的虚拟用户的集合)启动虚拟用户。3, 每一个拥有代理的机器维护一个在.qtp文件中的执行日志。4, 当日志被启用后,代理同样会在结果文件中为每一个虚拟用户(由虚拟用户组分开)建立一系列日志文件。5, 在执行过程中, 这些文件可以通过在Controller机器上的view Show Output窗口中显示。6, 在预先设置延时上,Controller上运行的Scheduler指导代理(通过Windows 54345端口,或者Unix上的动态端口)去初始化场景会话.Controller(wlrun.exe)在请求中发送一份场景的拷贝.7, 代理是由每一个负载生成器上的Remote Agent Dispatcher进程(以前叫Remote Command Launcher(RCL)启动的.8, 每一个根据场景(.lrs)定义文件中设置的代理来决定哪一个虚拟用户组和脚本需要在主机上运行. # 这就是说Controller可以从DOS的批处理文件(.batch)中启动. REM Start Controller: 51Testing软件测试网C9IY%HSET M_ROOT=C:Program FilesMercury InteractiveLoadRunnerbin 51Testing软件测试网 -YUD3T/Uxcd %M_ROOT% 8V? m|H eH0wlrun.exe -TestPath D:DevDev1.lrs -port 8080 -Run -DontClose l 包含的-Run 参数与手动的点”开始场景”自动运行是一样的. 这不是一个很好的方法,因为你可能需要决定从以前的运行中收集文件或者想改变输出文件夹.l 这是假设系统环境变量PATH已经被更新了,包括LoadRunner的安装.9, Controller通过使用 Windows 操作系统文件夹里的参数值来启动.因为LoadRunner被设计成在一个机器上一次只能运行一个Controller实例,所以需要使用Windows文件夹.# 为了在几个应用之间快速的切换, 在Controller工作之后保存LoadRunner的ini文件, 然后使用记事本来制作一个批处理文件. 在执行wlrun之前拷贝应用程序的指定版本的ini文件. 下面是一个应用程序文件拷贝的例子:copy %WinDir%/wlrun7-XXX.ini %WinDir%/wlrun7.ini 51Testing软件测试网 $N$yS8g1mcopy %WinDir%/wlrun7-XXX.dft %WinDir%/wlrun7.dft需要修改一些默认值:l 在wlrun7.ini文件的output区域, MaxNumberOfOutputMessages= from 10000 to 100000, 这就限制了存储在数据库中的输出信息的数目.l MaxOutputUIRowsToShow限制了在Controller的输出窗口中显示的信息/错误行总数.l 在LoadRunner程序文件的 datprotocols 文件夹下的QTWeb.lrp文件的Vugen部分, 添加一个MaxThreadPerProcess=5来限制由每个负载生成器mdrv.exe进程管理的线程数.l 存储在wlrun5.ini 和wlrun7.dft文件中的DefaultScenarioDir, DefaultscrptDir, DefaultResultDir, Recent File List几个数据的值会在每次Controller改变的时候更新。10, 在Vu scrpts中定义的每个虚拟用户进行的操作是用LoadRunner的VuGen.exe生成的. 当这个程序启动后, 它在windows文件夹下存储了comparamui.INI文件来保存LastTablesUsed下面文件的历史,并且保存由Insert New Parameter Dates 菜单指定的ParamDialogDates.VuGen在Windows文件夹下存储和检索vugen.ini文件.当使用JAVA的时候,需要添加一些其他的调试选项:DynaDlg b? y6tDaa.V;I,f0JavaLevel=3当在VuGen 8.1中使用8.0的脚本, 往Vugen.ini中加入信息:Editor 1td zUQ3k/c)Q0OLDEDITOR = 1VuGen在LR文件夹template/qtweb default.cfg里和脚本文件里打开.Vu scrpts可以使用脚本外部的参数文件来获得的变量值进行编码.更多关于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,320K analysisu.exe)使用mdb数据库中的数据来产生分析图表和报告.16. 每一次场景运行后的结果文件results_name.lrr,也叫分析文档文件,由分析程序来读取并且显示百分位图表.Loadrunner系列学习-Loadrunner架构(1) 一:Loadrunner结构概述 Loadrunner通过使用虚拟用户代替真实用户操作客户端软件来工作的,例如使用IE对IIS或者Apache Web服务器发送HTTP请求. 多个虚拟用户客户端的请求是有负载生成器(Load Generator)产生的,目的是对不同类型的被测服务器产生负载. 这些负载生成器代理(load generator agent )是由Mercurys的控制器(Controller)来控制启动或停止的. 控制器根据由编译的脚本引起的场景(Scenarios)和相关的运行时设置(Run-time Settings)来控制负载测试的运行. 这些脚本是由虚拟用户脚本生成器(Virtual user scrpt 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)安装.产品版本:略应用程序组件需求应用程序程序进程名称V9 V8.04QTQXF$g7p|J0ImgMl:c5tIX5?0KB File3XCV9?lPQ8P0Size- LRLauncherApp.exe 15,840 16,288 n/a Virtual User Generator VuGen.exe 23,980 12,436 2,334,769Controller with On-Line Monitors wlrun.exe 61,312 13,076 5,681,215 Load Generator Agent magentproc.exe 3,336 3,236 magentservice.exe 3,496 65,536mdrv.exe - Analysis Analysisui.exe 64,460 13,132 6,058,496Tuning Console protune.exe - 3,403,833控制台程序:perl5.8.0.exe Interpreter 20,535 regtlb.exe registers the batch automation type library 30,720 sed.exe GNU sed (gsed) version 2.05 55,296 wdiff.exe Compares text files 197,632 使用WINDOWS远程桌面连接 为了使WINDOWS远程桌面连接会话在测试时不会超时,每个机器的终端服务应该如下配置:1.开始-程序(或者控制面板),管理工具下选择终端服务配置.2.打开树型的连接文件夹3.右击RDP-Tcp,选择属性.4,点会话标签页.5,确保选中Override user settings6.设置空闲会话限制为最大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)添加语句来模仿客户端的Javascrpt问题。 12)添加语句来管理超时。 13)从事务计时器中计算和减去无效的时间。 14)输出日志。 15)添加集合点。 16)添加时间(Timing)。脚本语言规则: 把cookie代码标注出来(因为脚本运行的时候他们被再次执行)。7。通过在VuGen中运行来调试和调整脚本(单个用户),同时运行时设置的日志能够显示如下信息: 辨别和解决脚本编辑错误。 决定timing. 设置初始运行设置的场景。8。在控制器中使用full test Runtime Settings来运行脚本。脚本录制和产生:建立一个新脚本的第一步是选择一个单协议或多协议。 * 一些协议可能在多协议模式下不能用。 * 只有在多协议的GUI下你才能重新排列action在使用Java协议之前,确保你在环境变量的路径下有JDK,否则你可能会遇到这个错误: Error: Failed to find javac.exe Java Compiler in Path and JDK installation folder in registry. MsgId: MERR-22981 ?9Sv)Pcq8G9U0 Error: Failed to get JRE version. Check that your PATH environment variable contains bin directory. MsgId: MERR-22986 当选择Java协议的时候: * 只有选择了“RMI Java”才能录制。 * 如果选择“Java user”,“开始录制”图标或菜单是灰色的。当你打开一个新的脚本时,默认的脚本名称为“noname1”。下一个新的脚本名称为“noname2”,以此类推。注:有顺序的录制多个动作(而不是录制一个动作,然后停止开始另一个动作)。这样能使你识别出在你脚本中需要关联的序列码(在例如PeopleSoft的程序中)。注:每次修改脚本后,脚本都需要重新编译。Java:略脚本文件的调用: VuGen是默认在你双击.usr后缀文件的时候被调用。 在这个文件里,Javascrpt被指定为“Type=General-Js”。为了避免重新编译,我使用命令行的变量和值得组合这样的批处理文件来调用控制器。例如: REM LoadRun from LoadRunner 8.0 default installation location: P8zzD&T:Yj/0SET LR80=C:Program FilesMercury InteractiveMercury LoadRunnerbin aiV/jQ0cd %LR80% #W(N;STR$qY0wlrun.exe -TestRun c:TempScenario1.lrs -port 8080 脚本文件Action 主机上的代理发送的到服务器的请求是由虚拟用户生成器创建的(VuGen.exe)action的回放实现的。 Loadrunner创建的脚本有三部分: * vuser_init来初始化 Vuser。执行在这部分的虚拟用户的状态是Init * Action 用来重复多次迭代 执行到这部分的虚拟用户的状态是Running * vuser_end推出虚拟用户。 执行到这部分的虚拟用户的状态是Exiting如果你的脚本只需要执行一次,你仍然需要把这些脚本写到Action部分,因为在其他部分(vuser_init 和vuser_end)有些命令是不合法的或者会忽略掉。VuGen允许脚本包含多个action。所以我为每一个screen创建一个新的action。注:如果你想使用不同的用户登陆,就不要把登陆操作放到vuser_init中,而是放到action部分。VuGen根据选择脚本选择协议的不同来添加不用的引用到“.h”头文件。C的.h头文件对于Web(HTTP/HTML)协议,创建globals.h,包含内容: #ifndef _GLOBALS_H#define _GLOBALS_H/-/ Include Files#include lrun.h#include web_api.h#include lrw_custom_body.h/ recorded for web_custom_request functions./-/ Global Variables#endif / _GLOBALS_H对于COM/DCOM协议:略C脚本语言的格式:LoadRunner使用的没有进行微软扩展的ANSI C语法。任意最小的action代码块如下:#include as_web.h / from LoadRunners include folder.Action1()/* comment block */ comment linereturn 0;C脚本编译/类库当VuGen编译脚本时,产生一个pre_cci.ci文件,这个文件包含了所有action的代码和包含文件。这就是为什么会有语法错误“not writing pre_cci.ci”的原因。控制器编译这些.ci文件为机器目标码。VuGen在每一个脚本文件中自动创建一个lib文件夹,这个文件夹中包含了combined_lib.c文件。该文件包含了所有引用文件。 #include lrun.h 来定义UNIX或者Windows的函数。51Testing软件测试网| sTE7wH #include globals.h LoadRunner的模版文件夹的其中一个。 #include vuser_init.c 51Testing软件测试网unO uz!Id #include Action.c 51Testing软件测试网3x7nu3Y#X6Q-O #include vuser_end.c 警告:当你使用类库中的函数却没有正确包含该类库的时候,你会收到一条错误信息:Error - Unresolved symbol C类库 LoadRunner使用 1994 GNU C Pre-Processor options和 1995 LCC-win32 Retargetable C Compiler/Linker from the Free Software Foundation via Chris Fraser of AT&T and Dave Hanson of Princeton. 附加的函数定义在 ANSI C library中。外部的没有返回整型数的C函数需要在脚本的开头进行显式声明。例如,string函数中的 string tokenizer:extern char* strtok(char *token, const char *delimiter);Java语法:略loadrunner学习系列-脚本编写(2)VUser_Init部分这里是Vuser_init部分的一些例子:操作系统的User ID下面显示了使用advapi32.dll的GetUserNameA函数获得的操作系统的用户IDcharsUserID1024; / Maximum possible UserID length.longlUserIDSize = sizeof(sUserID)-1;int rc;rc=lr_load_dll(advapi32.dll);if( rc != 0 )lr_error_message(lr_load_dll of advapi32.dll failed. Aborted for rc=%d,rc);lr_abort(); elseGetUserNameA(sUserID, &lUserIDSize);lr_message(UserID=%s, sUserID);所有的变量声明需要一块放到最上方。在vuser_init 部分创建的本地C变量(如 int或char)对其他部分的脚本是不可见的。所以使用lr_save_string函数来创建对所有脚本可用的全局参数。例子: char *itoa ( int value, char *str, int radix ); vuser_init() int x = 10;char buffer10; lr_save_string( itoa( x, buffer, 10) , pX ); lr_message ( int x = %s, lr_eval_string(pX ); return 0; 运行时设置的附加属性(Additional Attribute) 8.0版本引进了一个非常有价值的特性:在运行时设置中指定属性,这个属性可以对不同的虚拟用户组设置不同的值。下面的代码是从运行时设置的附加属性中读取名为“usertype”的参数。然后使用参数值来对应的设置全局的thinktime1变量。 int thinktime1=0; 51Testing软件测试网t/m?/P2t$| ynvuser_init() 51Testing软件测试网GNa3-r!I LPCSTR strUsertype; / Define *str. 51Testing软件测试网F|&HK1y8CstrUsertype = lr_get_attrib_string(usertype); 51Testing软件测试网,wo+o/uif (strUsertype=NULL) lr_output_message(# Run-time Settings Additional Attribute usertype not specified. Cannot continue.); 51Testing软件测试网&s3T3uwO2_lr_abort(); else51Testing软件测试网Qu/O!D;QFlr_message(# Run-time Settings Additional Attribute usertype=%s, strUsertype );51Testing软件测试网/TQ0c(Y;k|Tjeif( strcmp( strUsertype,advanced) = 0 ) thinktime1=2; g.ws+|czYL+NJ0else+wfKcL,R,R0o0if( strcmp( strUsertype,intermediate) = 0 ) thinktime1=4; UV9ys3Q0else51Testing软件测试网4FM8vSZif( strcmp( strUsertype,basic) = 0 ) thinktime1=8; s-E7N6|q,Z0elseI/W6pR1$Ic0lr_error_message(# ERROR: Value not recognized. Aborting run. ); 0DK#bph0u0lr_abort(); x:y%q0return 0; Time Structure Fix(不知道怎么翻译,呵呵,“时间结构的解决“?)根据知识库34195的文章,默认当前时间戳的毫秒部分不被更新,除非ftime使用的时间结构被重新定义:typedef long time_t; struct _timeb time_t time; unsigned short millitm; short timezone; short dstflag; ; struct _timeb t; _tzset(); 使用ftime设置变量 _ftime( &t ); lr_message( Plus milliseconds: %u, litm ); 控制信息的显示:在运行时,当脚本的事务失败后继续,你怎么知道哪个用户失败了? 在每个失败的事务之后,发出一个能够唯一确定该用户的信息。Loadrunner提供了一些函数来在运行时显示信息: / 往输出日志上发送消息,这个消息前边会带有action 的名称和行数51Testing软件测试网9oquXe lr_output_message(an output message); 例子: Actions.c (4): an output message / 往输出日志和虚拟用户日志上发消息: 51Testing软件测试网8vOZR#Fuu3S9vt lr_message(* a message +r+A new line. ); 把);放到另一行,这样可以容易的在命令上添加或者删除代码项。 在UNIX/Linux机器上,使用 n来添加一个换行。 在Windows 机器上,使用r来添加一个换行。/ 往输出日志上发送不带action名称和行数的信息%BV+M/z#g.l0lr_log_message(numbert+ numvar +t); / 只给控制器上的虚拟用户状态区域发送信息(当在VuGen中运行时,只是简单的显示): eUU1?mu0lr_vuser_status_message(a vuser status message); / 给LoadRunner控制器或者Tuning模块的控制台输出窗口显示一个红色高亮度显示的-17999 信息。(ElMc)|SD9Mw0lr_error_message(an error message); 使用lr_error_message将会使日志信息堆栈在每个新的action开始时被自动清空。如果选择了当错误发生时才发送消息, 这些信息仍然被创建在日志信息堆栈里, 但是被压缩了(没有显示),直到监测到一个错误。LoadRunner学习-脚本编写(4)(比较重要)2007-12-13 23:45:39 / 个人分类:性能测试 今天接着来翻译/中关于LoadRunner脚本编写部分,下面该翻译脚本编写中一些比较重要的部分了。Web用户Action 在VuGen中,脚本产生的默认模式是基于HTML的-“描述用户的动作的脚本”直接与用户的动作是对应的: * web_url是浏览器地址栏的URL. * web_link是点击在和之间的文本超链接。 * web_image是点击HTML的 Internet Procotol Recording”中选择“a scrpt containing explicit URLs only”,这将会产生URL-based的脚本录制,只使用web_url和web_submit_data函数,将不会使用 web_link和 web_image函数,或包含在 applets, XML, ActiveX或javascrpt中的非HTML元素。在进行下一页录制之前(如点击链接或者图标),暂停录制,把该页屏幕的标题拷贝下来粘贴到注释中。录制完成之后,这将会在后面的给事务命名上用到。在每一个页面显示之后,暂停录制,把决定是否是期望页的文本拷贝下来,粘贴到注释中。录制完成之后,这将会用到文本验证检查点的脚本编写中。 录制中产生的各种信息都保存在RecordingLog.txt文件中,删除它不会对脚本的回放产生影响。额外录制的Action脚本 录制脚本的时候,当浏览器没有安装SSL根证书的时候,会捕获的下面这些代码行。这个信息意思是“这个证书不能被信任证书验证”。 web_url(authrootseq.txt, URL=/msdownload/update/v3/static/trustedr/en/authrootseq.txt, T2ie9GEX)w3z0Resource=1, L+UUtO(i0RecContentType=text/plain, 51Testing软件测试网!B8ws|VReferer=, 4n3q w7j-vC0LAST);$? k-u8q9hQ6GWX2F0web_url(authrootstl.cab, URL=/msdownload/update/v3/static/trustedr/en/authrootstl.cab, 5T$S%ORAH4V*H0Resource=1, H e5OW*-0RecContentType=application/octet-stream, 51Testing软件测试网 T*Y Rf)V9wdReferer=, -F3lx3M)F:y0LAST);录制脚本的时候,但浏览器遇到Macromedia flash组件的时候,会产生下面的代码行:web_url(version_en_win_ax.xml, URL=/pub/flashplayer/update/current/xml/version_en_win_ax.xml, X|%t&y;uU0Resource=0, 51Testing软件测试网sZ4Iv#tcahRecContentType=text/html, 51Testing软件测试网yWo5?Rtb1kReferer=, 51Testing软件测试网B*LtqSnapshot=t8.inf, 51Testing软件测试网T3w8HOn4mbMode=HTML, 51Testing软件测试网!irb8|1Nei1yLAST); 如果你安装有Google Toolbar,即使你没有访问Google,也会录制上发到Google的请求。脚本语言规则:在LoadRunner中,大小写是敏感的,甚至在被检验的值中。所以上面的脚本会因为大写字母的原因,不会识别“Welcome”的。所以Steve Cheney 建议使用“ic”忽略大小写的文字标志:web_reg_find(Text/ic=Welcome,LAST);括号里的参数包含了LAST 是为了指定最后的一个参数。这样做是很方便的,因为上面的例子漏掉了一个指定期望是“found”还是“notfound”的属性。默认是“found”,所有我经常忽略它。 另一个文本标志是“/BIN”用来指定是二进制的字符集。例如,查找“Adams”:web_reg_find(Text/BIN=x00Ax00dx00ax00mx00s,LAST);注意两个反斜杠,一个是转义字符,代表是使用了一个符号。如果错误的只使用一个反斜杠,LR会认为它是一个空的终止。 下面的例子脚本是在UTF8服务器上支持获得newquoteuid为UTF-16编码。因为LoadRunner中,UTF16编码的“Red”用ASCII是 Rx00ex00dx00 这样的,所以需要把它保存到buffer中。lr_eval_string_ext(newquoteuid_temp, 9+y|1Y#(mTl0 strlen(newquoteuid_temp) + 2, 51Testing软件测试网O,*lFx&Buf, &BufLen, 0, 0, -1);对字符数组变量NewBuf使用lr_save_var函数来去掉额外的填充(x00):for (i=0; i if (Bufi!=0) NewBufNewBufLen+=Bufi;51Testing软件测试网8b2d:CB RT5,y8azlr_save_var(NewBuf, NewBufLen-1, 0, newquoteuid); 注:lr_save_var 需要四个参数(不需要使用LAST)1.param_value 参数值2 value_len 参数的长度。3 options 参数的选项,一般为04。param_name 参数名称LoadRunner 7.8不支持正则表达式,但是有他自己的通配符:为了使任何0-9 的数字在指定的数字位置,使用/DIG做标志:web_reg_save_param(pSer,LB/DIG=Serial XXX-#-ZZZZ,RB=rn, LAST );有三种使用做通配符的方法:* 忽略大小写,并且允许在指定的字符位置使用任意字符: web_reg_find(Text/ALNUMIC=ercury, LAST); * 允许任何小写字符a-z 在指定位置: web_reg_find(Text/ALNUMLC=ercury, LAST); * 允许任何大写字符A-Z在指定的字符位置: web_reg_find(Text/ALNUMUC=ercury, LAST); 把一个字符串变成大写:strupr() 错误信息:请添加一些其他的错误信息来帮助其他人:Could not resolve address of host . MsgId: MERR-27798如果网络不能用或者域没有注册的话,显示一个404的DNS错误 Contents unexpectedly not in cache. MsgId: MERR-26549当一个文件为空时会显示该错误。在空文件中添加空格来满足LoadRunner的错误检查。BTW,因为当创建的iframe没有文件时,IE会产生一个错误,这样就指定了一个空文件。事务时间脚本编写:我更喜欢给一个action命名事务,而不是一个结果页面。lr_start_transaction(00.1 Invoke URL); 51Testing软件测试网f+m3JR o. *X %laxk0lr_end_transaction(00.1 Invoke URL,LR_AUTO); (rg7t|0. v2mcgEeCs,q0lr_start_transaction(01.2 Top menu); DQ8Dk+K(p0. 51Testing软件测试网dn$r k$s zxlr_end_transaction(01.2 Top menu,LR_AUTO); 51Testing软件测试网:a YFP&hR51Testing软件测试网 y8M!SnX|Vlr_start_transaction(02.0 Updating); 51Testing软件测试网: zEP/S-TX/SsQ9Tklr_start_sub_transaction(02.1 Update menu,02.0 Updating); 51Testing软件测试网4A-L1v,5Ke;T5zweb_url( . 51Testing软件测试网Vs9y;L:Rcdlr_end_sub_transaction(02.1 Update menu,LR_AUTO); -v:T6N;pkJ0lr_start_sub_transaction(02.2 Update submit,02.0 Updating); 51Testing软件测试网Hr:e|w;x7ccweb_submit_form( . 51Testing软件测试网*|t%j6qS?lr_end_sub_transaction(02.2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航空物流成本与报价策略考核试卷
- 糖果的食品安全法规解读与应用考核试卷
- 造纸原料的全球供应链管理考核试卷
- 通信设备在高速公路紧急救援通信考核试卷
- 柑橘种植园农业生物多样性保护措施考核试卷
- 呼叫中心服务技巧提升考核试卷
- 烟草制品零售产品知识更新考核试卷
- 工商管理核心课程体系
- 国际有机婴儿奶粉进口与品牌联合推广协议
- 天然气输送管道日常巡检与隐患排查协议
- 山东师范大学《文献学专题》期末考试复习题及参考答案
- PPT失禁性皮炎护理(IAD)
- 超星尔雅学习通《经济与社会如何用决策思维洞察生活》章节测试答案
- 北师大版小学二年级数学上册课程纲要
- 职工休假请假条模板
- 心脏康复指南完整版
- 国开电大土木工程本科《工程地质》在线形考形考(作业1至4)试题及答案
- 售后维修服务单
- 国家中长期科技发展规划纲要2021-2035
- ZDY3200S型煤矿用全液压坑道钻机行业资料矿业工程
- 北师大版八年级数学下册 (一元一次不等式)一元一次不等式和一元一次不等式组课件(第2课时)
评论
0/150
提交评论