loadrunner学习---脚本编写系列

上传人:第*** 文档编号:31883642 上传时间:2018-02-09 格式:DOC 页数:22 大小:194KB
返回 下载 相关 举报
loadrunner学习---脚本编写系列_第1页
第1页 / 共22页
loadrunner学习---脚本编写系列_第2页
第2页 / 共22页
loadrunner学习---脚本编写系列_第3页
第3页 / 共22页
loadrunner学习---脚本编写系列_第4页
第4页 / 共22页
loadrunner学习---脚本编写系列_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《loadrunner学习---脚本编写系列》由会员分享,可在线阅读,更多相关《loadrunner学习---脚本编写系列(22页珍藏版)》请在金锄头文库上搜索。

1、Loadrunner 学习-脚本编写(1)中午看了两集奋斗发现越看越想看,但是想到好不容易没上班,在家还是赶紧学习下 LR 的知识吧。下面这个网页的文章原来也是看过的,但发现没几天就忘记了,为了加深学习的印象,特把它翻译出来。http:/ 上是关于脚本编写的介绍.下面是第一部分,脚本的开发.VuGen 脚本文件的开发过程 1。定义测试项目的目标,环境,脚本,测试数据,硬件等。脚本应该符合编码规范或编码习惯。 2。创建一个版本文件夹来保存被测应用程序相关的各种不同资源,例如截获的.png/.gif图形文件,录制过程保存的 html 文件,录制中的所有 html 源文件和 VuGen 的录制日志。

2、 3。列出(在表里)每一个手动操作业务过程需要的实际步骤 1)截取每一个屏幕图像(screen image )。 2)为每一个屏幕(screen)分配一个唯一的事务名称。 3)为处理的每一个步骤使用的技术组件(URL 或者方法和函数)做注释。 4。创建一个版本文件夹。注:我不喜欢使用默认位置,我喜欢把所有脚本相关的文件放到一个相同的文件夹中。不幸的是,这意味着如果我在不同的测试间互相交换录制,那我每次都得记住修改默认的设置。注:当录制一个新的脚本时,我喜欢选择多协议而不是单个协议。5。根据你的业务处理列表上指定的用户使用步骤和 screen 的顺序来使用 VuGen 录制程序,产生一系列脚本代

3、码。在“开始录制”对话框中 * 使用 COM/DCOM 协议时,选择“Win32 应用程序“* 使用 Web(HTTP/HTML)时,选择“Internet Application“ 6。根据改进脚本方法和脚本语言规则来修改脚本。 改进脚本的方法: 1)为每一个 GUI 的 screen 添加事务语句来获得事务时间。 2)添加显示数据来帮助调试。 3)添加验证点来验证是否期望的文本或者图片在每个脚本执行后显示。4)通过插入新参数和动态获得整个文件的方式对硬编码的 URL,用户 id,用户密码和其他的变量数据进行参数化。这样脚本中的参数就可以被动态的替换,以此来模拟运行时不同数据的使用。5)添加

4、重试逻辑( retry logic)来处理不可见的错误。6)添加随机函数发生器变化脚本来模拟真实的负载。 7)添加 if/else 逻辑来检查结果,或者进行合适的操作,或者在合适的时候退出脚本。8)在一个 screen 中添加语句来捕获需要在其他命令中使用的数据。当使用 Microsoft .NET 的 web form 技术的时候,需要避免习惯性的“脚本超时“错误。 9)添加语句来调用外部库函数,以便保存和检索在内存 Virtual Table Server 中的数据。 10)处理 XML. 11)添加语句来模仿客户端的 Javascrpt 问题。 12)添加语句来管理超时。 13)从事务计

5、时器中计算和减去无效的时间。 14)输出日志。 15)添加集合点。16)添加时间(Timing)。脚本语言规则: 把 cookie 代码标注出来(因为脚本运行的时候他们被再次执行)。7。通过在 VuGen 中运行来调试和调整脚本(单个用户),同时运行时设置的日志能够显示如下信息:辨别和解决脚本编辑错误。 决定 timing. 设置初始运行设置的场景。 8。在控制器中使用 full test Runtime Settings 来运行脚本。 脚本录制和产生:建立一个新脚本的第一步是选择一个单协议或多协议。 * 一些协议可能在多协议模式下不能用。 * 只有在多协议的 GUI 下你才能重新排列 act

6、ion 在使用 Java 协议之前,确保你在环境变量的路径下有 JDK,否则你可能会遇到这个错误:Error: Failed to find javac.exe Java Compiler in Path and JDK installation folder in registry. MsgId: MERR-22981Error: Failed to get JRE version. Check that your PATH environment variable containsbin directory. MsgId: MERR-22986当选择 Java 协议的时候: * 只有选择了

7、“RMI Java”才能录制。* 如果选择“Java user”,“开始录制”图标或菜单是灰色的。当你打开一个新的脚本时,默认的脚本名称为“noname1”。下一个新的脚本名称为“noname2”,以此类推。 注:有顺序的录制多个动作(而不是录制一个动作,然后停止开始另一个动作)。这样能使你识别出在你脚本中需要关联的序列码(在例如 PeopleSoft 的程序中)。 注:每次修改脚本后,脚本都需要重新编译。 脚本文件的调用: VuGen 是默认在你双击.usr 后缀文件的时候被调用。 在这个文件里,Javascrpt 被指定为“Type=General-Js”。为了避免重新编译,我使用命令行的

8、变量和值得组合这样的批处理文件来调用控制器。例如:REM LoadRun from LoadRunner 8.0 default installation location:SET LR80=C:Program FilesMercury InteractiveMercury LoadRunnerbincd %LR80%wlrun.exe -TestRun c:TempScenario1.lrs-port 8080 脚本文件 Action 主机上的代理发送的到服务器的请求是由虚拟用户生成器创建的(VuGen.exe)action 的回放实现的。Loadrunner 创建的脚本有三部分: *vus

9、er_init 来初始化 Vuser。执行在这部分的虚拟用户的状态是Init *Action 用来重复多次迭代 执行到这部分的虚拟用户的状态是Running*vuser_end 退出虚拟用户。 执行到这部分的虚拟用户的状态是Exiting 如果你的脚本只需要执行一次,你仍然需要把这些脚本写到 Action 部分,因为在其他部分(vuser_init 和 vuser_end)有些命令是不合法的或者会忽略掉。VuGen 允许脚本包含多个 action。所以我为每一个 screen 创建一个新的 action。注:如果你想使用不同的用户登录,就不要把登录操作放到 vuser_init 中,而是放到a

10、ction 部分。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

11、 协议:略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 文件为机器目标码。Vu

12、Gen 在每一个脚本文件中自动创建一个 lib 文件夹,这个文件夹中包含了combined_lib.c 文件。该文件包含了所有引用文件。 #include lrun.h 来定义 UNIX 或者 Windows 的函数。#include globals.h LoadRunner的模版文件夹的其中一个。 #include vuser_init.c#include Action.c#include vuser_end.c警告:当你使用类库中的函数却没有正确包含该类库的时候,你会收到一条错误信息: Error - Unresolved symbolC 类库LoadRunner 使用 1994 GNU

13、C Pre-Processoroptions 和 1995 LCC-win32 Retargetable C Compiler/Linkerfrom 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

14、);Java 语法:略,先到这里,休息一下,下期接着翻译脚本相关知识loadrunner 学习系列-脚本编写(2)今天接着翻译 http:/ 上面关于 LR 脚本编写部分.VUser_Init 部分 这里是 Vuser_init 部分的一些例子:操作系统的 User ID 下面显示了使用 advapi32.dll 的 GetUserNameA 函数获得的操作系统的用户 IDchar sUserID1024; / Maximum possible UserID length.long lUserIDSize = sizeof(sUserID)-1;int rc;rc=lr_load_dll(ad

15、vapi32.dll);if( rc != 0 )lr_error_message(lr_load_dll of advapi32.dll failed. Aborted for rc=%d,rc);lr_abort(); elseGetUserNameA(sUserID, 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 版本引进了一个非常有价值的特性:在运行时设置中指定属性,这个属性可以对不同的虚拟用户组设置不同的值

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 工业设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号