关于Loadrunner并发组函数web_concurrent的注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/79557231
web_concurrent_start函数是并发组开始的标记。组中所有的函数是并发执行的,并发组的结束符为web_concurrent_end 函数。在并发组中,可以包含的函数有:web_url、web_submit_data、web_custom_request、web_create_html_param、web_create_html_param_ex、web_reg_save_param、web_add_header。 

        在并发组中的函数不是立即执行的。在并发组开始时,所有的函数首先被记录下来,当并发组结束时,所有的函数并发执行。正因为这样,我们使用的时候要注意,不是所有的函数或代码都可以放到并发组内的,比如lr_output_message函数的调试输出,如果放到并发组内,你将会得到错误的输出(有不少新手都碰到这样的问题,所以有必要在这提出):

       举例以下脚本:

        web_concurrent_start(NULL);

	web_url("getWidgetList.do",
		"URL=http://172.17.2.33:8090/dashboard/getWidgetList.do",
		"Resource=1",
		"RecContentType=application/json",
		"Referer=http://172.17.2.33:8090/starter.html",
		"Snapshot=t254.inf",
		LAST);

	web_reg_save_param("deleteID",
		"LB={\"id\":",
		"RB=,\"userId\"",
		"Ord=All",
		"NotFound=ERROR",
		LAST);
	web_reg_save_param("subjectID",
		"LB=\"subjectId\":\"",
		"RB=\",",
		"Ord=All",
		"NotFound=ERROR",
		LAST);
	web_reg_save_param("responseBody",
		"LB=",
		"RB=",
		"NotFound=ERROR",
		LAST);
	web_url("getBoardListNoDelFlag.do",
		"URL=http://172.17.2.33:8090/dashboard/getBoardListNoDelFlag.do",
		"Resource=1",
		"RecContentType=application/json",
		"Referer=http://172.17.2.33:8090/starter.html",
		"Snapshot=t255.inf",
		LAST);
    
	web_url("getWidgetList.do_2",
		"URL=http://172.17.2.33:8090/dashboard/getWidgetList.do",
		"Resource=1",
		"RecContentType=application/json",
		"Referer=http://172.17.2.33:8090/starter.html",
		"Snapshot=t256.inf",
		LAST);

	lr_output_message("deleteID: %s", lr_eval_string("{deleteID_count}"));
	lr_output_message("subjectID: %s", lr_paramarr_idx("subjectID",1));
	lr_output_message("responseBody: %s", lr_eval_string("{responseBody}"));

	web_concurrent_end(NULL);

       输出的结果如下:

关于Loadrunner并发组函数web_concurrent的注意事项

       太让人崩溃了,明明显示reg成功了,怎么参数输出结果为0(Response Body也为空)!

       我们只要把以上的lr_output_message位置调整一下,放到web_concurrent_end(NULL);后面:

        web_concurrent_end(NULL);
	lr_output_message("deleteID: %s", lr_eval_string("{deleteID_count}"));
	lr_output_message("subjectID: %s", lr_paramarr_idx("subjectID",1));
	lr_output_message("responseBody: %s", lr_eval_string("{responseBody}"));

       你就能看到你想要的结果了:

关于Loadrunner并发组函数web_concurrent的注意事项

       这是在应用Loadrunner中有些人会遇到的一个很小很小的坑,但也足够让人好一顿调试和四处搜索解决答案了。其实避免这样的错误,只要我们理解好web_concurrent并发组的原理,并且明确除了以上提到函数,其他都不要放到并发组内。

       附上并发组函数的语法: 

1、int web_concurrent_start ( [char * ConcurrentGroupName,] NULL ); 
参数: 
 ConcurrentGroupName:可选的,并发组的标识符。 
NULL:参数列表结束的标记符。 
返回值 

 整型。返回LR_PASS (0)表示成功,返回LR_FAIL (1)表示失败。

2、int web_concurrent_end ( reserved ); 
参数: 
 reserved:保留的供扩展的字段。 
返回值 
 整型。返回LR_PASS (0)表示成功,返回LR_FAIL (1)表示失败。

上一篇:网络和系统监听器Big-sister


下一篇:hibernate单对多(onetomany)准确设置级注意事项