Loadrunner中lr_user_data_point、lr_user_data_point_instance两个函数可以用来记录一条自定义的Vuser运行数据,并将其输出到测试结果中,最后可以通过分析工具Analysis来分析数据采集情况。两者之间的区别是lr_user_data_point_instance函数可以用来记录指定事物实例的自定义数据。
函数语法:
int lr_user_data_point (const char *sample_name, double value);
long lr_user_data_point_instance (const char *sample_name, double value, long transaction_handle);
例一:
Action()
{
web_set_max_html_param_len( " 1024 " );
web_reg_save_param( " JSESSIONID5 " ,
" LB/IC=jsessionid= " ,
" RB/IC=\" " ,
" Ord=11 " ,
" Search=body " ,
" RelFrameId=1 " ,
LAST);
web_url( " web " ,
" URL=http://172.19.201.188:7001/web/ " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer= " ,
" Snapshot=t1.inf " ,
" Mode=HTML " ,
EXTRARES,
" Url=images/login/3.swf " , ENDITEM,
LAST);
web_reg_find( " Search=Body " ,
" SaveCount=times " ,
" Text={username} " ,
LAST);
web_submit_data( " logon.do;jsessionid=schvTJJpR1BCBYYv9hhhn6k5zMwzZJ7JtTp5yPKvjBm6QpJv1DsN!-1783399523 " ,
" Action=http://172.19.201.188:7001/web/pf/authentication/logon.do;jsessionid={JSESSIONID5} " ,
" Method=POST " ,
" TargetFrame=_parent " ,
" RecContentType=text/html " ,
" Referer=http://172.19.201.188:7001/web/ " ,
" Snapshot=t2.inf " ,
" Mode=HTML " ,
ITEMDATA,
" Name=kind " , " Value=1 " , ENDITEM,
" Name=clientIPAddr " , " Value= " , ENDITEM,
" Name=clientMacAddr " , " Value= " , ENDITEM,
" Name=clientMachineName " , " Value= " , ENDITEM,
" Name=username " , " Value={username} " , ENDITEM,
" Name=password " , " Value=1 " , ENDITEM,
LAST);
// lr_output_message("count=%d",atoi(lr_eval_string ("{times}")));
if (atoi(lr_eval_string ( " {times} " )) > 0 ) {
web_url( " close.html " ,
" URL=http://172.19.201.188:7001/web/pf/close.html " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer= " ,
" Snapshot=t3.inf " ,
" Mode=HTML " ,
LAST);
web_url( " redirectURL.jsp " ,
" URL=http://172.19.201.188:7001/web/pf/redirectURL.jsp?redirect=true&kind=logon&U=1309938062295 " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer= " ,
" Snapshot=t4.inf " ,
" Mode=HTML " ,
LAST);
web_url( " frameWork.jsp " ,
" URL=http://172.19.201.188:7001/web/pf/webdesk/frameWork.jsp " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer= " ,
" Snapshot=t5.inf " ,
" Mode=HTML " ,
EXTRARES,
" Url=/web/styles/default/frame/images/lineBg.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/version.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/button-Table.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/button-info.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/button-login.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/images/logo_default.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/linemid.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/split.jsp " , ENDITEM,
" Url=/web/styles/default/frame/images/button-help.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/ArrowLeft.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/split.jsp " , ENDITEM,
" Url=/web/styles/default/images/popup_bg_menu.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/mainMessage.jsp?U= " , ENDITEM,
" Url=/web/styles/default/frame/images/line1.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/tabBg.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/line.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/naviMenuselect.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/lineleft.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=/web/styles/default/frame/images/buttonOff.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=menu/images/item/big/icon1.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=menu/images/item/big/icon4.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=menu/images/item/big/icon3.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=menu/images/item/big/icon2.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=/web/styles/default/frame/images/buttonOn.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=/web/styles/default/frame/images/buttonBg.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=system/webmessageshow.jar " , " Referer= " , ENDITEM,
LAST);
web_url( " commonAction.do " ,
" URL=http://172.19.201.188:7001/web/cc/core/common/commonAction.do?action=ajaxRequest&ajaxRequestClass=epm.cc.core.web.common.action.AutoRefreshSessionAjaxRequest&ccuserNo=9001 " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer=http://172.19.201.188:7001/web/pf/webdesk/top/navimenu.jsp " ,
" Snapshot=t6.inf " ,
" Mode=HTML " ,
LAST);
lr_user_data_point( " username " ,
atoi(lr_eval_string( " {username} " )));
lr_end_transaction_instance(instance_id, LR_PASS);
}
else
lr_end_transaction_instance(instance_id, LR_FAIL);
return 0 ;
}
例二:
Action()
{
long instance_id;
web_set_max_html_param_len( " 1024 " );
web_reg_save_param( " JSESSIONID5 " ,
" LB/IC=jsessionid= " ,
" RB/IC=\" " ,
" Ord=11 " ,
" Search=body " ,
" RelFrameId=1 " ,
LAST);
web_url( " web " ,
" URL=http://172.19.201.188:7001/web/ " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer= " ,
" Snapshot=t1.inf " ,
" Mode=HTML " ,
EXTRARES,
" Url=images/login/3.swf " , ENDITEM,
LAST);
web_reg_find( " Search=Body " ,
" SaveCount=times " ,
" Text={username} " ,
LAST);
web_submit_data( " logon.do;jsessionid=schvTJJpR1BCBYYv9hhhn6k5zMwzZJ7JtTp5yPKvjBm6QpJv1DsN!-1783399523 " ,
" Action=http://172.19.201.188:7001/web/pf/authentication/logon.do;jsessionid={JSESSIONID5} " ,
" Method=POST " ,
" TargetFrame=_parent " ,
" RecContentType=text/html " ,
" Referer=http://172.19.201.188:7001/web/ " ,
" Snapshot=t2.inf " ,
" Mode=HTML " ,
ITEMDATA,
" Name=kind " , " Value=1 " , ENDITEM,
" Name=clientIPAddr " , " Value= " , ENDITEM,
" Name=clientMacAddr " , " Value= " , ENDITEM,
" Name=clientMachineName " , " Value= " , ENDITEM,
" Name=username " , " Value={username} " , ENDITEM,
" Name=password " , " Value=1 " , ENDITEM,
LAST);
// lr_output_message("count=%d",atoi(lr_eval_string ("{times}")));
if (atoi(lr_eval_string ( " {times} " )) > 0 ) {
instance_id = lr_start_transaction_instance( " withresponse " , 0 );
web_url( " close.html " ,
" URL=http://172.19.201.188:7001/web/pf/close.html " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer= " ,
" Snapshot=t3.inf " ,
" Mode=HTML " ,
LAST);
web_url( " redirectURL.jsp " ,
" URL=http://172.19.201.188:7001/web/pf/redirectURL.jsp?redirect=true&kind=logon&U=1309938062295 " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer= " ,
" Snapshot=t4.inf " ,
" Mode=HTML " ,
LAST);
web_url( " frameWork.jsp " ,
" URL=http://172.19.201.188:7001/web/pf/webdesk/frameWork.jsp " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer= " ,
" Snapshot=t5.inf " ,
" Mode=HTML " ,
EXTRARES,
" Url=/web/styles/default/frame/images/lineBg.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/version.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/button-Table.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/button-info.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/button-login.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/images/logo_default.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/linemid.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/split.jsp " , ENDITEM,
" Url=/web/styles/default/frame/images/button-help.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getInfobar.do " , ENDITEM,
" Url=/web/styles/default/frame/images/ArrowLeft.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/split.jsp " , ENDITEM,
" Url=/web/styles/default/images/popup_bg_menu.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/mainMessage.jsp?U= " , ENDITEM,
" Url=/web/styles/default/frame/images/line1.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/tabBg.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/line.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/naviMenuselect.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/top/getNaviMenu.do " , ENDITEM,
" Url=/web/styles/default/frame/images/lineleft.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=/web/styles/default/frame/images/buttonOff.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=menu/images/item/big/icon1.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=menu/images/item/big/icon4.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=menu/images/item/big/icon3.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=menu/images/item/big/icon2.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=/web/styles/default/frame/images/buttonOn.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=/web/styles/default/frame/images/buttonBg.gif " , " Referer=http://172.19.201.188:7001/web/pf/webdesk/left/getMenuFromXml.do " , ENDITEM,
" Url=system/webmessageshow.jar " , " Referer= " , ENDITEM,
LAST);
web_url( " commonAction.do " ,
" URL=http://172.19.201.188:7001/web/cc/core/common/commonAction.do?action=ajaxRequest&ajaxRequestClass=epm.cc.core.web.common.action.AutoRefreshSessionAjaxRequest&ccuserNo=9001 " ,
" TargetFrame= " ,
" Resource=0 " ,
" RecContentType=text/html " ,
" Referer=http://172.19.201.188:7001/web/pf/webdesk/top/navimenu.jsp " ,
" Snapshot=t6.inf " ,
" Mode=HTML " ,
LAST);
lr_user_data_point_instance( " username " ,
atoi(lr_eval_string( " {username} " )), instance_id);
lr_end_transaction_instance(instance_id, LR_PASS);
}
else
lr_end_transaction_instance(instance_id, LR_FAIL);
return 0 ;
}
上面两脚本在Controller中执行完成后,就可以在Analysis中查看运行结果。启动分析工具后,点击Graph>>Add New Graph或者ctrl+a快捷键来打开新采集到得图表,可以看到User Ddfined Data Points下面有Ddfined Data(Sum)和Ddfined Data(Average)两类图表。双击对应的图表就会将用户自定义的数据分析结果添加到网页细分图里面。
依次点击菜单Report>>Crystal Report>>Performance Report>>Data Point,就可以查看到各个Vuser运行时,用户自定义数据采集出来的具体信息了,如下图所示。对于自定义的一些相关业务交易信息之类的,在性能分析方面可以比较深入的分析出程序的瓶颈。