大家在性能测试过程中,经常会用到程序处理或组织数据,以达到一定的测试目的,但是程序本身执行会消耗一些时间,这部分消耗的时间是包含在响应时间里面,此时,响应时间=正常响应时间+程序执行消耗时间。那么如何来保证响应接近真实,LoadRunner提供了一组函数,减去程序消耗时间,达到测试目的。函数(绿色标注)如下:
double time_elapsed = 0.00, duration = 0.00, waste = 0.00,trans_time = 0.00,waste_time = 0.00;
merc_timer_handle_t timer;
timer = lr_start_timer(); //timer开始
if(strlen(lr_eval_string("{P_Bal}")) > 0)
{
for(i=0;i < strlen(lr_eval_string("{P_Bal}"));i++)
{
//lr_error_message("%d",i);
lr_save_var(lr_eval_string("{P_Bal}")+i,1,0,"P_Value");
#define temp = 0;
//lr_error_message("%s",lr_eval_string("{P_Value}"));
if(atoi(lr_eval_string("{P_Value}")) != 0)
{
if(strcmp(lr_eval_string("{P_Value}"),",") != 0 && strcmp(lr_eval_string("{P_Value}"),".") != 0)
{
break;
}
}
}
}
time_elapsed = lr_end_timer(timer);//停止timer
lr_output_message("%lf",time_elapsed);
waste = time_elapsed * 1000; //毫秒转成秒
if(lr_get_transaction_status("XXX") == 1 || atoi(lr_eval_string("{P_Value}")) <= 0)
{
lr_wasted_time(waste);//响应时间减去纯语句消耗的时间
lr_end_transaction("XXX", LR_FAIL);
lr_output_message("XXX失败 %s %s",lr_eval_string("{UserName}"),lr_eval_string("{P_AccountId}"));
goto exit;
}
  以下代码:
  由于web_find函数进行的操作无须包括在事务总执行时间中,因些要用计时器来计算其执行时间,然后用lr_wasted_time函数将其从事务的总执行时间中扣除。
Action()
{
double time_elapsed;
merc_timer_handle_t timer;
lr_start_transaction("Search");
web_url("baidu_search",
"url=http://www.baidu.com/s?wd=LoadRunner",
"mode=html",
LAST);
timer=lr_start_timer();//创建计时器,返回值是计时器标志
web_find("web_find","what=load",LAST);
time_elapsed=lr_end_timer(timer);//计时结束,计时结果time_elapsed返回值单位是秒
lr_wasted_time(time_elapsed*1000);//lr_wasted_time函数定义的参数是毫秒,所以要*1000
lr_error_message("Find Time= %lf,wasted_time=%lf",time_elapsed,lr_get_transaction_wasted_time("Search"));
lr_end_transaction("Search",LR_AUTO);
return 0;
}