LoadRunner脚本开发:关联和检查点(二)
一. 录制飞机订票系统前期准备:
1. 启动webTours
开始 > HP Software > HP LoadRunner > Samples > web > Start HP Web Tours Server
2. 浏览器访问 webTours
开始 > HP Software > HP LoadRunner > Samples > web > HP web Tours Application
账户密码:jojo/bean Jojo/bean
用户信息文件:E:\programs\HP LoadRunner 12.02 Community Edition\LoadRunner\WebTours\cgi-bin\users
3. 启动 fiddler
4. 启动 virtual user generator
add new script
协议:web-http/html、名称
Record Options Ctrl + F7
Recording Ctrl + R
第一行是密码,第二行是用户名
或者也可以注册一个
二. 了解WebTours功能
首页
> 左侧:用户登录
> 右侧:sign up now ==> 注册用户入口
administration ==> 设置页面
登录
> Flights ===> 订票航班信息
> Itineray ===> 订票记录
> Home
> Sign off ===> 退出
三. 录制订票Recording
1. Start Recording
URL address:http://127.0.0.1:1080/WebTours/index.htm
2. 录制
3. Compile Shift + F5
语法检查
4. Replay F5
回放
开始登录前,插入事务
登录后,结束事务
开始订票前,插入事务
选择航班信息后,结束事务
选择时间点,插入事务
选择时间后,关闭事务
文本检查点
插入退出事务
关闭事务,停止录制
系统自动关联后的脚本
/*Correlation comment - Do not change! Original value='127394.791656541zffcizQpfQfiDDDDDQDVHpcVHfHf' Name ='userSession' Type ='ResponseBased'*/ web_reg_save_param_regexp( "ParamName=userSession", "RegExp=name=\"userSession\"\\ value=\"(.*?)\"/>\\\n<table\\ border", //这里是一个正则 SEARCH_FILTERS, "Scope=Body", "IgnoreRedirections=No", "RequestUrl=*/nav.pl*", LAST);
四. 回放 Replay
1. Output
回放日志
Starting iteration
红色有错误,回放失败
Ending iteration
view summary > The test Results
Test Results 显示回放内容快照
F5 回放成功,去掉Summary页面
如果又想看到Summary页面,点击Output日志,View summary
Test Results中的快照
设置迭代 F4
假设迭代3次,3次之后,可以看到三张票的信息完全一致
五. 参数化
为了每次迭代都能得到不同的信息,对城市名称做参数化
选中城市名称,右键,选择Replace with Parameter,然后选择Create New Parameter...
变量名称自定义,类型为file,然后点击Properties...配置其他城市名
用{参数}表示参数化,当然也可以自定义参数化符号
同样,也参数化到达城市
迭代3次后,发现3张票都是从Denver到London
查看参数化后的变量值,Tools——Options——Scripting——勾选Collect replay statistics
可以从Runtime Data中查看参数的变化
刚刚关联城市没有随机是因为这个地方是固定的,可以猜测021是出发城市id,437是到达城市id,后面是日期时间
在选择城市的方法上,右键,选择Show Snapshot,可以看到请求参数和响应结果
将响应的html结果拷贝到Notepad++,打开,可以搜索到刚才的021;437;11/03/2019
也可以去页面里按F12查看
这就是关联,前面一个页面的响应结果后面的页面需要,注意这个正则后面有checked=checked,因为后面页面需要的出发到达地点都是已选中的。关联的时候,关联函数要放在前面页面函数的前面,如B依赖A,关联函数要放在A前面。以web_reg开头的函数都是注册函数,要写在被提取函数的前面
web_reg_save_param_regexp( "ParamName=boundFlight", "RegExp=name=\"outboundFlight\" value=\"(.*?)\" checked=\"checked\"", SEARCH_FILTERS, "Scope=Body", "IgnoreRedirections=No", "Ordinal=1", //Ordinal需要添加 LAST );
有两个方法需要参数化下
验证结果,可以看到第一组是Denver到Frankfurt,第二组是London到Seattle,第三组是Paris到Sydney,这个其实和jmeter遍历csv是一个道理
六. 函数
1. 选中函数名称,按F1,进入函数使用帮助。加*是必传的
int web_url( const char *StepName, const char *url, <List of Attributes>,
[EXTRARES, <List of Resource Attributes>,] LAST );
const char *StepName,const char *url:必要参数
<List of Attributes>:属性参数,可以写多个也可以不写,可选
[EXTRARES, ]:扩展参数,可选
LAST:结束标记符
Example:可以直接修改案例内容
2. web_sumit_data函数是不依赖上下文的,也就是上个页面执行出错,不影响这个函数的执行,web_submit_form也是用于post请求,它是依赖上下文的
3. web_reg_save_param_regexp 实际上是注册函数,有reg的都是注册函数,web_reg_save_param也是正则函数,LR12推荐使用前者
4. web_reg_text:查找文本函数