软件性能测试_Loadrunner正则表达式关联

来源:互联网 发布:手机淘宝如何注册店铺 编辑:程序博客网 时间:2024/05/29 04:15

一.让我们先看看什么是正则表达式
下面一段出自百度百科
正则表达式,又称规则表达式。(在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,Perl中就内建了一个功能强大的正则表达式引擎,还有java语言自带的。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

我们在安装Loadrunner后,在【开始-所以程序】中会有一个Strawberry Perl目录,LR很多函数都是基于Perl引擎

二.用在何处
今天我们的主角就是函数web_reg_save_param_regexp,此函数是LoadRunner11更新LoadRunner11_Path3.msp补丁后新加入的(要是在F1帮助文档中没有查出此函数就去打补丁吧),那么我们什么时候用到此函数呢?熟悉关联的朋友可能知道,其实所谓“关联”就是让在执行脚本的时候,对页面不同之处参数化,执行到此处时全部用参数替代就可以运行成功。以前的老的关联函数都是要取左右边界的,找起来稍麻烦,要是左右边界是动态的,返回的ID的长度也不定,那么如何去取得,老的方法是用strtok()进行字符切割,现在我们有了新的正则表达式的方式关联,那么就可以淘汰掉之前的方法了,这就是此函数的用武之地。

三.如何用
知道了用在何处之后,就是怎么用的问题了。我们在写脚本时,在Action中右击鼠标inset-newstep ,找到web_reg_save_param_regexp,点击【OK】
这里写图片描述
其中关键就是Regular Expression的写法,记住了:需要用()圆括号标记
如接下来的演示中的部分脚本如下:
web_reg_save_param_regexp(
“ParamName=test1”,
“RegExp=userSession value=(.*)>”,
“Ordinal=1”,
SEARCH_FILTERS,
LAST);
表示以“userSession value=”开头,“>”结尾,中间的任何内容都关联保存到参数test1中,
(C中定义了一些字母前加”\”来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思,所以要是有换行\r回车等等)。

四.实例演示
我们以LR自带的Web Tours进行演示
前提:1. Web Tours服务启动;
2.有账号;

步骤:
1. 必要设置,【开始-所有程序】中点击如图,打开Web Tours网站
这里写图片描述

点击页面中的administration进行必要如下:
这里写图片描述

勾选第三项,后点击页面下的【UPDATE】更新按钮使设置生效:
这里写图片描述

然后关闭IE开始我们的录制“登陆-退出”脚本
2. 新建脚本
① 我们选择Web (HTTP/HTML)协议录制,确定后弹出如图,填入如图信息录制:这里写图片描述

② 点击【Option】进行如图两项的设置,这里我们用HTML形式录制,全部放在Ation里面:
这里写图片描述
这里写图片描述
③ 设置完毕后点击【OK】,开始脚本录制,录制很简单的两步:输入用户名密码登陆,然后退出:
这里写图片描述
这里写图片描述
④ .然后点击停止按钮结束录制,到此录制工作完毕。
脚本如下:
Action()
{
web_url(“WebTours”,
“URL=http://127.0.0.1:1080/WebTours/“,
“Resource=0”,
“RecContentType=text/html”,
“Referer=”,
“Snapshot=t1.inf”,
“Mode=HTML”,
LAST);
lr_think_time(48);
web_submit_data(“login.pl”,
“Action=http://127.0.0.1:1080/WebTours/login.pl“,
“Method=POST”,
“RecContentType=text/html”,
“Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home“,
“Snapshot=t2.inf”,
“Mode=HTML”,
ITEMDATA,
“Name=userSession”, “Value=120898.059538275zcVizQDpQDHfDHDVcpVzDzcf”, ENDITEM,
“Name=username”, “Value=zmy”, ENDITEM,
“Name=password”, “Value=123456”, ENDITEM,
“Name=JSFormSubmit”, “Value=on”, ENDITEM,
“Name=login.x”, “Value=43”, ENDITEM,
“Name=login.y”, “Value=12”, ENDITEM,
LAST);
lr_think_time(25);
web_image(“SignOff Button”,
“Alt=SignOff Button”,
“Snapshot=t3.inf”,
LAST);
return 0;
}

  1. 编译-回放,发现报错
    这里写图片描述
  2. 然后我们就要查找为什么录制了,但是回放不成功的原因了,点击工具栏或者菜单中如下图Scan Script Correlations扫描对比
    这里写图片描述
    这里写图片描述

  3. 我们点击界面下方的“Show Differences”比较后,我们可以查出不成功的原因了,见图:Response Body中的中userSession value值每执行一次都改变,导致回放时失败,那么我们下一步就是对其关联参数化,回放的时候,到了这个值我们就直接用参数代替就可以通过了
    这里写图片描述

  4. 关联
    ① 在脚本最前面我们插入函数,可以手写,也可以依照前面的步骤插入,完毕后整个脚本如下,以参数test1替代“userSession value=”和“>”直接的所有字符串
    web_reg_save_param_regexp(
    “ParamName=test1”,
    “RegExp=userSession value=(.*)>”,
    “Ordinal=1”,
    SEARCH_FILTERS,
    LAST);
    ② 我们把脚本中相应的含userSession值的地方换成参数test1,整个脚本如下:

Action()
{
web_reg_save_param_regexp(
“ParamName=test1”,
“RegExp=userSession value=(.*)>”,
“Ordinal=1”,
SEARCH_FILTERS,
LAST);
web_url(“WebTours”,
“URL=http://127.0.0.1:1080/WebTours/“,
“Resource=0”,
“RecContentType=text/html”,
“Referer=”,
“Snapshot=t1.inf”,
“Mode=HTML”,
LAST);

lr_think_time(48);web_submit_data("login.pl",     "Action=http://127.0.0.1:1080/WebTours/login.pl",     "Method=POST",     "RecContentType=text/html",     "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",     "Snapshot=t2.inf",     "Mode=HTML",     ITEMDATA,     "Name=userSession", "Value={test1}", ENDITEM,     "Name=username", "Value=zmy", ENDITEM,     "Name=password", "Value=123456", ENDITEM,     "Name=JSFormSubmit", "Value=on", ENDITEM,     "Name=login.x", "Value=43", ENDITEM,     "Name=login.y", "Value=12", ENDITEM,     LAST);lr_think_time(25);web_image("SignOff Button",     "Alt=SignOff Button",     "Snapshot=t3.inf",     LAST);return 0;

}

然后再次运行脚本就不会报错了O(∩_∩)O

0 0
原创粉丝点击