LoadRunner学习---脚本编写(4)(比较重要)

今天接着来翻译http://www.wilsonmar.com/中关于LoadRunner脚本编写部分,下面该翻译脚本编写中一些比较重要的部分了。

Web用户Action

在VuGen中,脚本产生的默认模式是基于HTML的--“描述用户的动作的脚本”直接与用户的动作是对应的:

* web_url是浏览器地址栏的URL.

* web_link是点击在<a href= ...>和<a>之间的文本超链接。

* web_image是点击HTML的<img href= link.

* web_submit_form 是在前面操作的上下文中的GET或PUT表单上点“提交”--可能前面的操作被VuGen在基于HTML模式下录制下来了。

* web_submit_data 是在GET或PUT表单上点“提交”,而没有带前面操作的上下文--可能是在基于URL模式下录制,或者是基于HTML模式,并且选择了“A scrīpt containing explicit URLs only”选项。

不用HTML产生的资源是.gif和.jpg图片。资源属性的列表只能当对这些资源的路直选项设置成“Record within the current scrīpt step”时被插入。这也是默认的设置。

如果你在“Tools > Internet Procotol > Recording”中选择“a scrīpt containing explicit URLs only”,这将会产生URL-based的脚本录制,只使用web_url和web_submit_data函数,将不会使用 web_link 和 web_image函数,或包含在 applets, XML, ActiveX或javascrīpt中的非HTML元素。

在进行下一页录制之前(如点击链接或者图标),暂停录制,把该页屏幕的标题拷贝下来粘贴到注释中。录制完成之后,这将会在后面的给事务命名上用到。

在每一个页面显示之后,暂停录制,把决定是否是期望页的文本拷贝下来,粘贴到注释中。录制完成之后,这将会用到文本验证检查点的脚本编写中。

录制中产生的各种信息都保存在RecordingLog.txt文件中,删除它不会对脚本的回放产生影响。

额外录制的Action脚本

录制脚本的时候,当浏览器没有安装SSL根证书的时候,会捕获的下面这些代码行。这个信息意思是“这个证书不能被信任证书验证”。

web_url("authrootseq.txt",

"URL=http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootseq.txt",
xAt1A/Kj0"Resource=1",
U$~3MwPp;@e/v0"RecContentType=text/plain",
T~Sy:Jw0"Referer=",
7g{)bE5jF
}0LAST);51Testing软件测试网}‘E @ W*b.`cS1O S

web_url("authrootstl.cab",

"URL=http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab",
51Testing软件测试网‘[email protected]+eA9Z6e8m
"Resource=1",
lT2o*H$}
~zr0"RecContentType=application/octet-stream", 51Testing软件测试网
Z‘U]‘{-dpW
"Referer=",
51Testing软件测试网/VB`guWjp,S
LAST);
 录制脚本的时候,但浏览器遇到Macromedia
flash组件的时候,会产生下面的代码行:
 
"URL=http://fpdownload.macromedia.com/pub/flashplayer/update/current/xml/version_en_win_ax.xml",
#r3rJbr(_0"Resource=0",
"p0X6~
q.i0"RecContentType=text/html",
|(c?fC p i2f2]‘S0"Referer=", 51Testing软件测试网b
I}wj v8~
"Snapshot=t8.inf",
0V!E G#k
o)Q#xk5d#?0"Mode=HTML",
Sz"pi%OTH"bZ0z0LAST);
web_url("version_en_win_ax.xml",
     
如果你安装有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=\\x00A\\x00d\\x00a\\x00m\\x00s",LAST);
注意两个反斜杠,一个是转义字符,代表是使用了一个符号。如果错误的只使用一个反斜杠,LR会认为它是一个空的终止。
     
下面的例子脚本是在UTF8服务器上支持获得newquoteuid为UTF-16编码。因为LoadRunner中,UTF16编码的“Red”用ASCII是
R\x00e\x00d\x00
这样的,所以需要把它保存到buffer中。
lr_eval_string_ext("{newquoteuid_temp}",
L*By,o#t:kW}/J]0
strlen("{newquoteuid_temp}") + 2,
q r9z?-\5q:G0 &Buf, &BufLen, 0, 0,
-1);
 对字符数组变量NewBuf使用lr_save_var函数来去掉额外的填充(x00):
for (i=0; i if
(Buf[i]!=0) NewBuf[NewBufLen++]=Buf[i];51Testing软件测试网5oS9Pr-]4V~
Y
lr_save_var(NewBuf, NewBufLen-1, 0, "newquoteuid");
 注:lr_save_var
需要四个参数(不需要使用LAST)
 1.param_value 参数值
 2 value_len
参数的长度。
 3 options 参数的选项,一般为0
 4。param_name
参数名称
 LoadRunner 7.8不支持正则表达式,但是有他自己的通配符:
 为了使任何[0-9]
的数字在指定的数字位置,使用/DIG做标志:
 web_reg_save_param("pSer","LB/DIG=Serial
XXX-###-ZZZZ","RB=\r\n", 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");
[email protected]&zl
M8x{0...
(eT)jAPf.N8}q0lr_end_transaction("00.1 Invoke
URL",LR_AUTO);
a3d&B*Vw5~0...
l9l4G]}M/j
Bd9i0lr_start_transaction("01.2 Top menu");
51Testing软件测试网B%Hu(v2q]K[
...
b6{EfSN#X4u(~0lr_end_transaction("01.2 Top
menu",LR_AUTO);
51Testing软件测试网hIm{~9M*l
51Testing软件测试网+c(vY4mp&EoD
lr_start_transaction("02.0
Updating");
2j$va!y‘U0lr_start_sub_transaction("02.1 Update menu","02.0
Updating"); 51Testing软件测试网:F(i!xj*o P:aZ
web_url( ... 51Testing软件测试网eeq
Rxx!b{%F.g(}[email protected]/j
lr_end_sub_transaction("02.1 Update
menu",LR_AUTO);
7ukq!SDpnnp1l-E}0lr_start_sub_transaction("02.2 Update
submit","02.0 Updating"); 51Testing软件测试网[4Bbn7d1b!`%e
web_submit_form(
...
p$Y| [MxFB0lr_end_sub_transaction("02.2 Update submit",LR_AUTO);
T
{n-|+e m\s‘t)H0lr_start_sub_transaction("02.3 Update OK","02.0
Updating");
C9~U{%} ^0web_url( ...
!W;gV+x_5r0lr_end_sub_transaction("02.3
Update OK",LR_AUTO);
‘U;`@{/s0
9~i h:Hd%[email protected]_end_transaction("02.0
Updating",LR_AUTO);

我喜欢在一个层次结构中使用0填充的事务名称,这样来确保控制器能够正确的给事务排序。

我对不同类型的action上的事务名称上加不同的关键字

Contact Link = Click
"Contact" link on Menu
Contact Icon = Click "Contact" Icon
Regis. Sub =
Page Submit
OK = Pop-up dismiss with OK

事务名可以是变量,但是它只能被VuGen作为字符串来编译,不能在控制器的接口中显示。无论如何,他们会显示在分析结果文件中。

对于web脚本,LR自动创建和决定事务的的持续时间,但是C语言脚本可以使用这些函数:

使用lr_start_transaction_instance函数来显式获得指定事务实例的句柄,事务名称在函数lr_user_data_point_instance或lr_user_data_point_instance_ex中使用。

使用 lr_start_sub_transaction在一个事务中来操作思考时间和消耗的时间。

好了,脚本编写部分基本已经翻译了一半了,该睡觉了,下面会接着翻译检查点,操作字符串,从流中获得数据,参数化,如何使用文件,关联,集合点等,内容还是很多的。

时间: 2024-10-11 23:03:49

LoadRunner学习---脚本编写(4)(比较重要)的相关文章

loadrunner 接口脚本编写

前段时间接触了一下loadrunner的接口性能测试,然后尝试了一下手动编写脚本,毕竟录制这种东西,不是每次都能通的,而且录制下来的脚本,通常是有很多其他杂七杂八的请求夹杂在中间,没有达到真正的压测接口的目的: loadrunner默认的脚本是C语言的,但其实它支持目前所有主流的语言,如:Java User.VB User.VB script User .Javascript User等. 下面是尝试过的几种post接口的请求方式: Action() { //参数化: lr_save_strin

LoadRunner接口脚本编写过程中遇到的问题及分享

工作中需要接口测试,报文编辑器一条条手工发费时费力,因此考虑利用web_submit_data函数POST方法进行报文编辑.在报文编辑中主要遇到了三个问题,其中一个问题耗时两天查到问题所在,在这里与大家一块分享. 问题1:我们支持报文头报文体分开的报文和只有一个xml格式的报文并行.因此对只有一个xml格式的报文编辑完后,在LR执行成功,但在系统中没查到相关日志.排查问题时多次编写了报文,并对web_submit_data函数的配置进行更改.对参数化的变量进行多次检查.......,就在今天早上

Loadrunner:脚本编写通用模板(Http协议类型)

1. 背景 对于 Http协议,Loadrunner 脚本可以使用通用模板反复粘贴,只需要修改其中的 URL 和 传参,就可以完成一整个业务 2. Get 类型的接口 web_custom_request( // 名称,最好用英文 "Hello", // 接口的 URL,建议 appboss 地址设置成变量,方便切换环境 "URL={appboss}/app/shopBuy/detail?tokenId={tokenId}", // 提交方式 "Metho

LoadRunner 性能测试脚本

1   概述 脚本录制编写是性能测试的一个重要环节.在性能测试过程中,虚拟用户模拟真实用户使用被测系统,这个"模拟"的过程正是通过性能测试脚本来实现的.因此,编写一个准确无误的脚本对性能测试有至关重要的意义.完成性能测试脚本包括两个步骤:脚本录制和脚本编写,本文重点关注脚本编写. 2   脚本录制 2.1.录制方式 HTTP协议脚本录制可选两种方式:基于HTML和基于URL.选择哪种录制方式的原则如下:基于浏览器的HTTP应用系统选择HTML,基于其他方式的HTTP应用系统选择URL.

SecureCRT中python脚本编写学习指南

SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是SecureCRT工具:SecureCRT支持VB.JavaScript.Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的.接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用. 内容 (1)使用python语言实现SecureCRT中的D

loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写

先说明一下,本人是开发,对测试不是特别熟悉,但因工作的需要,也做过一些性能测试方面的东西.比较久之前很简单的用过,最近又用到了,熟悉一下.现做一个总结. 使用loadrunner进行压力测试主要分两步,第一步是编写脚本(比较重点),第二步执行测试(配置都是在界面上点点就行了,当然我只的是比较简单的,能满足日常需要的),第三步分析结果(这一步比较高深,但是对于我来说能看懂简单的性能指标就OK了).所以这里就说一下脚本的编写,给未来再用到做参考. 1.HTTP的GET请求 这里以访问百度为例,地址h

LoadRunner脚本编写(转)

性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员,所以对代码望都比较望而生畏. 好多人认为loadrunner只支持C语言(包括我之前也一直这么认为),因为loadrunner默认的脚本是C语言的,其实它支持目前所有主流的语言,如:Java User.VB User.VB script User .Javascript User.Mmicroso

Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题

日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚本识别的难度也越来越高.这对我们自动化脚本编写带了非常的不便,那么如何解决登录时的验证码问题呢?经常有初学自动化脚本编写的小主们问及此问题. 此文主要针对如何解决自动化测试脚本中含登录态的操作问题,即如何降低验证码对自动化脚本编写过程中的解决方法进行分析和解决,并以实例演示(基于易迅网易迅账号登录)

LoadRunner脚本编写之二

编程基本语法必须要记牢.程序的思想也很重要. 下面来回顾一下嵌套循环例子. Action() {     int  i,j;   //生命两个变量     for (i=1;i<=5;i++)   //第一重循环,循环5次     {         if (i==3)                break;   //当i等于3时,跳出本重循环         else              lr_output_message("i=%d",i);  //否则,输入i的值