南京高端网站设计,网页传奇单职业,泰安百度推广代理,郑州网站推广服务关于脚本的这块#xff0c;前两篇都在讲C语言#xff0c;其实#xff0c;要整理点实用的东西挺难#xff0c;在应用中多对录制的脚本分析#xff0c;但对于新手学脚本确实无从下手。
先贴一个脚本#xff1a;
完整代码#xff1a;
重点代码部分#xff1a;
Action(…关于脚本的这块前两篇都在讲C语言其实要整理点实用的东西挺难在应用中多对录制的脚本分析但对于新手学脚本确实无从下手。
先贴一个脚本
完整代码
重点代码部分
Action()
{web_url(webhp, URLhttp://www.google.com.hk/webhp?hlzh-CNsourceidcnhp, Resource0, .....lr_start_transaction(登陆); //设置事务开始web_submit_data(ServiceLoginAuth, Actionhttps://accounts.google.com/ServiceLoginAuth, MethodPOST, ........web_file(web_find,defnngjgmail.com,LAST); //设置检查点lr_end_transaction(登陆,LR_AUTO); //设置事务结束return 0;
}
如果你想学习性能测试我这边给你推荐一套视频这个视频可以说是B站播放全网第一的性能测试教程同时在线人数到达1000人并且还有笔记可以领取及各路大神技术交流798478386
15天学会性能测试通俗易懂详细教学Jmeter性能测试实战集群压测全链路压测性能调优瓶颈分析极速掌握干就完事_哔哩哔哩_bilibili15天学会性能测试通俗易懂详细教学Jmeter性能测试实战集群压测全链路压测性能调优瓶颈分析极速掌握干就完事共计27条视频包括1.【性能测试】什么是性能测试以及性能测试的价值和目的、2.【性能测试】真实企业性能测试指标详解以及指标测算、3.【性能测试】真实企业中性能测试流程以及细节剖析等UP主更多精彩视频请关注UP账号。https://www.bilibili.com/video/BV1B14y1D7X9/?spm_id_from333.337.search-card.all.click
上面的一段代码是我录制的一个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还提供了许多与事务相关的函数这里介绍几个常用的。
1、lr_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_error与lr_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);
3、lr_get_transaction_status与前两个函数的作用相反用于获取事务的状态。
if (lr_get_transaction_status() LR_FAIL){//由于web_url请求失败了所以没有必要继续执行下去因些设置事务状态为FAILlr_end_transaction(登陆失败,LR_FAIL);return;}
4、lr_get_transaction_duration 用于获取事务所消耗的时间。这个就比较有意思了。 我们登录百度首页插入一个事务然后访问百度注册页面。下面计算访问注册页面的时间。
完整脚本
Action()
{double trans_time; //定义变量web_url(www.baidu.com, URLhttp://www.baidu.com/, Resource0, RecContentTypetext/html, Referer, Snapshott14.inf, ModeHTML, EXTRARES, Urlhttp://s1.bdstatic.com/r/www/cache/aoyun/img/i-1.0.1.png, ENDITEM, Url/favicon.ico, Referer, ENDITEM, Urlhttp://s1.bdstatic.com/r/www/img/bg-1.0.0.gif, ENDITEM, Urlhttp://nsclick.baidu.com/v.gif?pid201pjwwwrsv_sid1289_1328_1262_1228_1344_1342_1186_1281_1178_1287_1320_1294_1330fmbehstabtj_regunpathhttp%3A%2F%2Fwww.baidu.com%2Ft1343538345708, ENDITEM, Urlhttps://passport.baidu.com/favicon.ico, Referer, ENDITEM, LAST);lr_start_transaction(访问注册页); //定义事务开始web_link(???, Text???, Ordinal2, Snapshott15.inf, EXTRARES, Url../img/breadbg.gif, Refererhttps://passport.baidu.com/v2/?regregType1tplmnuhttp%3A%2F%2Fwww.baidu.com%2F, ENDITEM, Url../js/pass_api_reg.js?v20120711, Refererhttps://passport.baidu.com/v2/?regregType1tplmnuhttp%3A%2F%2Fwww.baidu.com%2F, ENDITEM, Url../img/v2/regbtn-split.gif, Refererhttps://passport.baidu.com/v2/?regregType1tplmnuhttp%3A%2F%2Fwww.baidu.com%2F, ENDITEM, Url../cgi-bin/genimage?0013435383780156BF1F30CF18D2332EA927154DCDAB3B6B40F9E25197273F556454857E2FADF7BA23531BE59EEDE0EF92F2F006F8D595B88A907E318D2A249CBAB109FCDB3AB38ED4453F3BC149C6A5FD6240B97D598BA84EE3CEEE3F4359D3469309D88EE55C19B04251D2212171720B476D0A0D6277787DD43D9BA29E426A82BFD90E248FA15A32F1838B3E15D63B8CFE4E3DC6EAD4F23FE0DB457E5AE6B82DACCB79EE9EF289, Refererhttps://passport.baidu.com/v2/?regregType1tplmnuhttp%3A%2F%2Fwww.baidu.com%2F, ENDITEM, Url../img/v2/reg_input_bg.gif, Refererhttps://passport.baidu.com/v2/?regregType1tplmnuhttp%3A%2F%2Fwww.baidu.com%2F, ENDITEM, LAST);trans_timelr_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()
{double trans_time; //定义变量web_url(www.baidu.com, URLhttp://www.baidu.com/, .....lr_start_transaction(访问注册页); //定义事务开始web_link(???, Text???, Ordinal2, Snapshott15.inf, ......trans_timelr_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 seconds
Action.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插入在事务执行过程的任意位置来计算消耗时间。