打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
LoadRunner脚本编写之三(事务函数)
userphoto

2012.08.07

关注

 

  关于脚本的这块,前两篇都在讲C语言,其实,要整理点实用的东西挺难,在应用中多对录制的脚本分析,但对于新手学脚本确实无从下手。

先贴一个脚本:

完整代码:

View Code

重点代码部分:

Action(){    web_url("webhp",         "URL=http://www.google.com.hk/webhp?hl=zh-CN&sourceid=cnhp",         "Resource=0",       .....    lr_start_transaction("登陆");    //设置事务开始    web_submit_data("ServiceLoginAuth",         "Action=https://accounts.google.com/ServiceLoginAuth",         "Method=POST",          ........
web_file("web_find","defnngj@gmail.com",LAST); //设置检查点 lr_end_transaction("登陆",LR_AUTO); //设置事务结束 return 0;}

 

上面的一段代码是我录制的一个google登录的过程,详细过程描述:

1、进入google首页

2、点击右上角的登录链接,跳转到登录页面

3、设置登录事务开始,输入用户名密码,点击登录

4、登录成功后跳转后google 首页,右上角出现登录的用户名,设置事务结束。

 

检查点

  在上面的操作中,我设置了一个检查点,web_fiind  ,判断后我是否登录成功一个重点的标志是在google首页右上角是否出现我的用户名。所以,我根据这个特点设置检查点,来检查登录是否成功。设置检查点的函数有三个,

web_find()函数: 在页面中查找相应内容

web_reg_find()函数: 在缓存中查打相应的内容

web_image_check()函数:在页面中查找具体图片。

  他们的具体用法,你们可以在脚本的编写中,光标定位在函数中,按F1 查看帮助文档或参考其它文档。

 

关于脚本中的事务

 

  我们在一个脚本中可能要做很多操作,我们为了分清脚本中某一段代码具体是做什么,所以,在执行某个操作的前后需要添加事务,用来标志事务的开始与结束,这样可以使脚本更清晰。当然,对于不同的事务需要分开录制。比如,某电子商务网站的浏览商品与交易。他们的比例是不同的,对于比较复杂的场景,是多个事务按不同的比例并行的。设置80%的用户浏览商品,20%的用户进行交易。

  当然,事务与事务之间是会有依赖关系的。如果我们把访问首页定为一个事务,登录定为一个事务,浏览商品定为一个事务,交易定为一个事务。那么我们要想录制(编写)交易的事务,那么前面三个事务是先觉条件。所以,我们知道录制一个脚本的目的是哪个操作,然后在其前后添加事务标识。

      对80%的用户浏览商品,20%用户交易,交易的前提是先浏览一个商品,也就是所有用户(100%)都浏览了商品,只有20%的用户去交易。这样是合乎逻辑的。

 

事务函数                                                                         

 

  在上面的脚本中我们用到了lr_start_transaction()函数和 lr_end_transaction()函数来标识一个事务的开始与结束,除些之外,loadrunner还提供了许多与事务相关的函数,这里介绍几个常用的。

 

1lr_set_transaction_instance_status 用于设置事务的状态,事务的状态包括:LR_PASS、 LR_FAIL 、  LR_AUTO 、  LR_STOP  。可以在脚本中根据条件设置事务的状态,例如,根据检查点返回的结果来设置事务为通过还是失败。

if(event == GENERAL_ERROR)        lr_set_transaction_instance_status(LR_FAIL);    lr_end_transaction("登陆",LR_AUTO);

 

2、 lr_fail_trans_with_errorlr_set_transaction_instance_status 类似,都可以用于设置事务的状态,区别在于lr_fail_trans_with_error除了可以设置的状态,还可以输出错误日志信息。

if(status != SUCCESS)        lr_fail_trans_with_error("an error has occurred:%s",my_get_error_string(status));    lr_end_transaction("登陆成功",LR_AUTO); 

 

3lr_get_transaction_status前两个函数的作用相反,用于获取事务的状态。

if (lr_get_transaction_status() == LR_FAIL)    {        //由于web_url请求失败了,所以没有必要继续执行下去,因些设置事务状态为FAIL        lr_end_transaction("登陆失败",LR_FAIL);        return;    }

 

4、lr_get_transaction_duration 用于获取事务所消耗的时间。这个就比较有意思了。

  我们登录百度首页,插入一个事务,然后访问百度注册页面。下面计算访问注册页面的时间。

完整脚本:

View Code

重点代码部分:

Action(){    double trans_time;  //定义变量    web_url("www.baidu.com",         "URL=http://www.baidu.com/",        .....    lr_start_transaction("访问注册页");  //定义事务开始    web_link("???",         "Text=???",         "Ordinal=2",         "Snapshot=t15.inf",      ......    trans_time=lr_get_transaction_wasted_time("访问注册页");  //获得消耗时间    if (trans_time) {        lr_output_message("The duration up to the submit is %f seconds",trans_time);  //打印数输出消耗实时间    }else{        lr_output_message("the duration cannot be determined. ");    }    lr_end_transaction("访问注册页",LR_AUTO);  //事务结束    return 0;}

运行结果:

.......Action.c(39): The duration up to the submit is 0.029588 secondsAction.c(45): Notify: Transaction "访问注册页" ended with "Pass" status (Duration: 5.0300 Wasted Time: 0.0296).Ending action Action.Ending iteration 1.

39:持续时间长达0.029588秒的提交

45:通知:交易”访问注册页”结束,“通过”状态(持续时间:5.0300 浪费时间:0.0296)。

 

  从上面的结果中发现,我们设置lr_get_transaction_wasted_time函数的时间0.029588 与事务结束浪费的时间 0.0296 非常接近。 这是因为我把 lr_get_transaction_wasted_time函数插入在了事务结果的前面,其实,我们可以将lr_get_transaction_wasted_time插入在事务执行过程的任意位置来计算消耗时间。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
loadrunner 脚本优化
使用Loadrunner 调用Webservice接口测试优化总结 | 大爱
LoadRunner常用函数
3.9 事务 - AJava
loadrunner对事务状态的跟踪
LoadRunner学习笔记 - charmer - 51Testing软件测试网 - P...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服