• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

LR高级技巧实战

发布: 2008-9-25 15:54 | 作者: linlinxu | 来源: 51Testing博客 | 查看: 103次 | 进入软件测试论坛讨论

领测软件测试网

 第三种方式,从本地的snapshot里去取,具体操作,首先找到提交数据事件相关脚本,找到snapshot文件的名称,然后从本地的data文件里去找这个snapshot文件,然后丛中找到我们需要的字符串。
web_reg_find("Text=---------操作业务数据成功!--------",
LAST);
…….
web_submit_data("chargeacc.do_3",
"Action=http://{BOSSURL}/boss/charge/commonbusiness/acccharge/chargeacc.do?act=submit&atype=commitdata",
"Method=POST",
"RecContentType=text/html",
"Referer=http://{BOSSURL}/boss/charge/commonbusiness/acccharge/chargeacc.do?act=querycustomer",
"Snapshot=t129.inf",
"Mode=HTTP",
ITEMDATA,
"Name=isconfirm", "Value=no", ENDITEM,
"Name=chargetype", "Value=telnumber", ENDITEM,
"Name=telnumber", "Value=", ENDITEM,
"Name=nowfee", "Value=8.8", ENDITEM,
"Name=factfee", "Value=0.00", ENDITEM,
"Name=totalfee", "Value=8.8", ENDITEM,
"Name=accountno", "Value={WCSParam_Diff1}", ENDITEM,
"Name=factpay", "Value=8.8", ENDITEM,
"Name=grantpercent", "Value=", ENDITEM,
"Name=grantfee", "Value=0", ENDITEM,
"Name=takecash", "Value=8.8", ENDITEM,
"Name=zero", "Value=0", ENDITEM,
"Name=paytype", "Value=Cash", ENDITEM,
"Name=remark", "Value=", ENDITEM,
"Name=invoice", "Value=joininvoice", ENDITEM,
LAST);

        5.2设置和保存判断成功与否的参数,这也是最关键的地方。
有一点大家都很清楚,业务成功返回的字符串和失败返回的字符串是不同的,我们所要做的是将返回的字符串做为参数保存下来,然后拿这个参数和我们事先定义好的成功的标志做比较,有两种方式可以设置和保存这一参数,下面简单介绍:
第一种方式也是最准确的方式,是以View Tree 方式找到相关的界面,然后从Server Response的Snapshot的Body里的成功的返回标志,然后对其进行Create Parameter,这样LoadRunner会自动在脚本中添加web_reg_save_param函数,具体如下:
// [WCSPARAM WCSParam_Text2 24 操作业务数据成功!_Text2] Parameter {WCSParam_Text2} created by Correlation Studio
web_reg_save_param("WCSParam_Text2",
"LB=---------",
"RB=-",
"Ord=1",
"RelFrameId=1",
"Search=Body",
LAST);

 

        第二种方式是在提交事件前添加web_reg_save_param函数,具体操作是在提交事件前右击鼠标选择Insert Before 选项,然后在弹出的对话框中选择Services里的web_reg_save_param选项,单击OK按纽,然后在弹出的对话框中输入相关的数据。

 


        5.3 编写相关判断代码段。
        在已经定义好判断字符串和设置和保存好成功与否的标志字符串参数后,编写相关判断代码段,这也是最关键的地方,具体代码段如下:
if (strcmp(fanhuiflag,lr_eval_string("{WCSParam_Text2}"))!=0)
{
lr_error_message("消息: %s,在第 %s 次循环时出错,出错号码:%s", "提交异地缴费数据失败!", lr_eval_string("{iteration}"), lr_eval_string("{PhoneNum}"));
}
简单解释如下:
fanhuiflag:前面已经定义好的成功标志字符串的数组名,当然前面也可以用指针来实现,这里不做介绍。
WCSParam_Text2:为实现设置和保存好的成功与否返回的字符串的参数;
PhoneNum:服务号码的参数化,具体为电话号码。关于参数化,这里不做分析和解释部分。
Iteration:为了定位具体的循环而设置的参数。
Strcmp函数:LoadRunner自带的字符串比较函数,相等时返回0
lr_eval_string函数:LoadRunner自带求字符串函数,函数格式为
char * lr_eval_string (const char * instring );
(另一种判断方式:先事先定义好int rc=1; char *fanhuiflag="操作业务数据成功!";然后在定义事务的结尾进行判断: rc=strcmp(str_tip,lr_eval_string("{re_str_tip}"));
if(rc==0)
{
lr_end_transaction("异地缴费_提交", LR_PASS);
}
else
{
lr_error_message("异地缴费_提交失败,号码为:%s",lr_eval_string("{msisdn}"));
lr_end_transaction("异地缴费_提交", LR_FAIL);
}
//lr_end_transaction("异地缴费_提交",LR_AUTO);)

        5.4验证我们的需求是否实现
        下面简单介绍,整个验证过程,在确保脚本正确和测试环境正常的情况下,我们先在VU里验证下是否真正实现了我们想要的功能,为了方便,我特地将判断条件该为==而不是!=,通过查看日志来检查。

        首先,选中菜单栏里的Run-time Settings子菜单,设置里面的Log选项,选中Enable Logging 和Always send messages 和Extended log 及Parameter substitution。
设置Run Logic 里的Number of Iterations 为2,然后运行,并查看日志。可以得到如下的日志(只取了关键部分的):
第一次循环关键部分:
YiDiJiaoFei.c(598): Notify: Transaction "提交异地缴费数据" ended with "Fail" status (Duration: 4.8459 Wasted Time: 0.0060).
YiDiJiaoFei.c(605): Notify: Parameter Substitution: parameter "WCSParam_Text2" = "操作业务数据成功!"
YiDiJiaoFei.c(607): Notify: Next row for parameter iteration = 1 [table = iteration].
YiDiJiaoFei.c(607): Notify: Parameter Substitution: parameter "iteration" = "1"
YiDiJiaoFei.c(607): Notify: Parameter Substitution: parameter "PhoneNum" = "13953555588"
YiDiJiaoFei.c(607): Error: 消息: 提交异地缴费数据失败!,在第 1 次循环时出错,出错号码:13953555588

第二次循环关键部分:
YiDiJiaoFei.c(598): Notify: Transaction "提交异地缴费数据" ended with "Fail" status (Duration: 4.2347 Wasted Time: 0.0064).
YiDiJiaoFei.c(605): Notify: Parameter Substitution: parameter "WCSParam_Text2" = "操作业务数据成功!"
YiDiJiaoFei.c(607): Notify: Next row for parameter iteration = 2 [table = iteration].
YiDiJiaoFei.c(607): Notify: Parameter Substitution: parameter "iteration" = "2"
YiDiJiaoFei.c(607): Notify: Parameter Substitution: parameter "PhoneNum" = "13953572390"
YiDiJiaoFei.c(607): Error: 消息: 提交异地缴费数据失败!,在第 2 次循环时出错,出错号码:13953572390

        下面验证执行时,能正确找到出错的号码信息,将脚本加入到场景后,同样设置好Run-time Settings。

        设置结果保存路径等相关信息,按Start Scenario 执行场景,等出错是单击右上角的Errors,然后选中错误信息再按Details按纽查看错误信息。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网