脚本优化-事务函数简介 by:授客 QQ:1033553122 1.事务的开始和结束名称需要相同 lr_start_transaction(“transaction_name”); …//事务处理 lr_end_transaction(“transaction_name”,LR_AUTO);
2.事务和子事务 在VuGen中可以通过事务来完成一组操作的响应时间监控,如果想监控某一个事务中某一步操作的响应时间,就要使用子事务来完成。当然也可以使用事务嵌套 lr_start_sub_transaction(“子事务名”, “父事务名”); lr_end_sub_transaction(“子事务名”, 子事务状态); 注意:子事务和父事务很像,但是父事务支持的很多函数在子事务中都无法实现,所以应酌情考虑。
例:做一个登录的事务,同时把打开登录页面和登录操作都做成一个事务,这样就可以得到三个事务的时间:打开页面和登录操作及整个操作的时间。 Action() {
}
运行结果:
3.事务状态 在默认情况下使用LR_AUTO来作为事务状态,对于一个事务有以下4个状态可以选择。 1) LR_AUTO 指事务的状态由系统自动根据默认规则来判断,结果为PASS/FAIL/STOP LR_AUTO也是根据服务器的返回状态信息来决定事务是以LR_PASS状态通过还是以LR_FAIL状态结束,只要服务器返回页面,那么事务就会认为请求成功发出去了,服务器看懂了请求也返回了内容,自然事务就是PASS状态。 这样由于事务的自动判断,导致虽然操作失败的,但是得到了一个响应时间,并且这个响应时间又没正确反映出做这件事情的真正时间,最终影响测试结果。添加检测函数有时候可以解决这个问题
例:判断是否登录成功(以lr自带web站点为例)
Action2() {
web_reg_find("Search=Body", "SaveCount=login_times", "Text=jojo1", LAST);
} 运行结果:
2) LR_PASS 指事务是以PASS状态通过的,说明改事务正确地完成了,并且记录下对应的时间,这个时间就是指做这件事情所需要消耗的时间。 3) LR_FAIL LR_FAIL是指事务以FAIL状态结束,该事务是一个失败的事务,没有完成事务中脚本应该达到的效果,得到的时间不是正确操作的时间,这个时间在后期的统计中将被独立统计。 4) LR_STOP LR_STOP将事务以STOP状态停止。
说明: 事务的PASS和FAIL状态会在场景的对应计数器中记录,包括通过的次数和事务的响应时间,方便后期分析改事务的吞吐量以及响应时间的变化情况 4.事务相关的函数 //获得对应事务达到该函数运行位置时持续的时间,返回double类型 lr_get_transaction_duration(“事务名”); //获得对应事务达到该函数运行位置时的wasted时间,返回double类型。 lr_get_transaction_wasted_time(“事务名”); //为一个事务添加wasted时间,无返回值 lr_wasted_time(毫秒) //将一个事务暂停,该函数后的操作都不会被记录事务时间 lr_stop_transaction(“事务名”); Action2() {
注意:通过代码stop事务后可以重新通过lr_start_transaction函数恢复被暂停的事务
5.包含“资源下载”的事务处理 一般情况都可以十分简单地获得请求的响应时间,但是对于下载操作来说就并不是那么方便了,这个时候需要利用一个web_get_int_property()函数来解决。 Action() { int i; lr_start_transaction(“download”); web_url(“LoadRunner”,”RUL=http://127.0.0.1/loadrunner.iso”,LAST); //下载操作请求 i=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); if(i>5000) //当下载的文件大小大于5000个字节时认为下载成功,否则失败。 lr_end_transaction(“download”,LR_PASS); else lr_end_transaction(“download”,LR_FAIL); }
一般来说,对于下载操作的性能测试集中在需要多少时间弹出下载对话框,而后面的内容其实属于网络带宽的问题了,另一个方面现在很少使用IE进行直接下载,而采用迅雷一类的p2p下载工具,所以很少考虑具体下载文件操作对网络和服务器读写操作的影响。 |
|