性能测试loadrunner之VuGen包含事务、检查点、思考时间、集合点

总结学到的函数:

web_url();发送get请求函数
web_submit_data();发送get和post函数
web_link();链接函数
web_submit_form();表单提交函数
web_custom_request();任何请求方法函数
web_reg_save_param()关联函数
lr_eval_string();获取参数返回值
lr_save_string();字符串保存到参数中
lr_output_message()把想要信息输出
lr_paramarr_idx();参数数组指定位置参数
lr_paramarr_random();参数数组随机获取lr_start_transaction();开始事务函数
lr_paramarr_len()统计数组个数函数
web_reg_find()检查点函数
web_find()普通检查点函数
atoi();将字符串转换整型函数
itoa();将整型转换为字符串函数
lr_think_time()思考时间函数
lr_start_transaction();开始事务函数
lr_end_transaction();结束事务函数
lr_rendezvous()集合点函数
web_get_int_property()获取状态码函数

一、事务

1.事务的作用
测试人员可以将一个或多个操作步骤定义为一个事务,
可以通俗的理解事务为"人为定义的一系列请求(请求可以是一个或者多个)"。
在程序上,事务表现为被开始标记和结束标记圈定的一段代码区块。
Loadrunner根据事务的开头和结尾标记,计算事务响应时间、成功/失败的事务数。

判断事务结果
自动判断:此处判断的是状态码
手工判断:
通过状态码判断:

//获取服务器http协议返回码函数
   HttpRetCode = web_get_int_property(HTTP_INFO_RETURN_CODE);


   //判断返回码是否
   if (HttpRetCode == 200)


    //lr_output_message("The script successfully accessed the discuz home page--- -----
-------------- -----------------");
   
   lr_end_transaction("open", LR_PASS);


    else
      //输出信息到日志的函数
    //lr_output_message("The script failed to access the discuz home page-------- -----
-------------- ----------------- ");
   
   lr_end_transaction("open", LR_FAIL);

通过检查点判断:

   if(atoi(lr_eval_string("{num}"))>0)
      
      lr_end_transaction("login", LR_PASS);


   else
       
      lr_end_transaction("login", LR_FAIL);

插入开始事务和结束事务的入口:
在这里插入图片描述
注意开始事务和结束事务的名字要一样,因为是成对出现的
在这里插入图片描述
在这里插入图片描述

事务:
lr_start_transaction(“login”);#事务开始时间
lr_end_transaction(“login”, LR_AUTO); #事务结束时间
//在这里LR_AUTO判断的是服务器的返回状态码,而并没有判断该业务是否成功,加个检查点函数去判断
代码如下:

Action()
{
	int a;
	web_reg_save_param("session",   #检查点函数
		"LB=name=userSession value=",
		"RB=>",
		"Ord=1",
		LAST);

   
	//打开网站
	web_url("打开网站","URL=http://192.168.103.103:1080/webtours/",LAST);

	
	web_reg_find("Search=All",
		"SaveCount=number",
		"Text=Welcome, <b>{username}</b>",
		LAST);

	lr_start_transaction("login");#事务开始时间


	web_submit_data("登录",
		"Action=http://192.168.103.103:1080/webtours/login.pl",
		"Method=POST",
		"TargetFrame=",
		"Referer=",
		"Mode=HTML",
		ITEMDATA,
		"Name=userSession", "Value={session}", ENDITEM,
		"Name=username", "Value={username}", ENDITEM,
		"Name=password", "Value={pwd}", ENDITEM,
		"Name=login.x", "Value=36", ENDITEM,
		"Name=login.y", "Value=8", ENDITEM,
		"Name=login", "Value=Login", ENDITEM,
		"Name=JSFormSubmit", "Value=off", ENDITEM,
		LAST);
    
  //lr_end_transaction("login", LR_AUTO);  #事务结束时间
	//在这里LR_AUTO判断的是服务器的返回状态码,而并没有判断该业务是否成功
	//LR_AUTO的实现方式(源码):
	/*
	a=web_get_int_property(HTTP_INFO_RETURN_CODE);//返回状态码
	if(a == 200){
		lr_end_transaction("login",LR_PASS);
	}else{
		lr_end_transaction("login",LR_FAIL);
	}
*/
	//这个时候可以通过添加检查点的方式来验证业务是否成功,如果存在要检查的内容那么就给一状态LR_PASS,否则给LR_FAIL
	//这个时候就用到一个检查点函数:web_reg_find()---->带有reg的为注册型函数--->特点:如果某一请求的响应数据中有想要的数据,那么就将该函数放在请求前面
	if(atoi(lr_eval_string("{number}"))>0){
		lr_end_transaction("login",LR_PASS);
	}else{
		lr_end_transaction("login",LR_FAIL);
	}

	return 0;
}

插入检查点函数入口:
在这里插入图片描述
检查点函数配置
在这里插入图片描述

在这里插入图片描述
生成的检查点函数:

web_reg_save_param("session",
		"LB=name=userSession value=",
		"RB=>",
		"Ord=1",
		LAST);

二、检查点函数的使用

在这里插入图片描述
web_reg_find 检查点的使用见上面代码

web_find检查点使用:
web_find检查点的入口:
在这里插入图片描述
配置:检查的文本内容是页面上的文本显示去作比较
在这里插入图片描述
配置完成后显示出的代码:

web_find("web_find",
		"LeftOf=,",
		"What=Welcome, jojo",
		LAST);

但运行的时候需要开启,要不然这个web_find该检查点函数不会被执行
在这里插入图片描述
图片检查
web_image_check()
入口:
在这里插入图片描述

在这里插入图片描述配置:
在这里插入图片描述
生成的代码:

web_image_check("web_image_check",
		"Src=/WebTours/images/flights.gif",
		"Alt=Search Flights Button",
		LAST);

代码如下:

Action()
{
	int a;
	web_reg_save_param("session",
		"LB=name=userSession value=",
		"RB=>",
		"Ord=1",
		LAST);

   
	//打开网站
	web_url("打开网站","URL=http://192.168.103.103:1080/webtours/",LAST);

	

	lr_think_time(10);
	lr_start_transaction("login");


	web_submit_data("登录",
		"Action=http://192.168.103.103:1080/webtours/login.pl",
		"Method=POST",
		"TargetFrame=",
		"Referer=",
		"Mode=HTML",
		ITEMDATA,
		"Name=userSession", "Value={session}", ENDITEM,
		"Name=username", "Value=jojo", ENDITEM,
		"Name=password", "Value=bean", ENDITEM,
		"Name=login.x", "Value=36", ENDITEM,
		"Name=login.y", "Value=8", ENDITEM,
		"Name=login", "Value=Login", ENDITEM,
		"Name=JSFormSubmit", "Value=off", ENDITEM,
		LAST);
    lr_end_transaction("login",LR_AUTO);
    //通过web_find函数检查内容是否存在
    //web_find函数使用时必须启用image and text checks图片和文本检查项
    /*
	web_find("web_find",
		"LeftOf=,",
		"What=Welcome, jojo",
		LAST);
    */

    //web_image_check函数--->图片检查点
    
	web_image_check("web_image_check",
		"Src=/WebTours/images/flights.gif",
		"Alt=Search Flights Button",
		LAST);



	return 0;
}

三、思考时间

作用:更加真实模拟用户发出请求之间的延迟,也就是用户暂停发请求的时间
思考时间设置的策略:
在这里插入图片描述
函数:lr_think_time(秒数)
注意点:

1.实际情况下,获取真实场景的系统的性能指标时一般加入思考时间(1-2S)
如果是做压力测试获取系统的峰值指标时,一般忽略思考时间
2.一般情况下,思考时间函数不要放入事务内,以免后期影响计算事务响应时间

四、集合点

作用:
设集合点是为了更好模拟并发操作。设了集合点后,
运行过程中多个用户可以在集合点等待到一定条件后再一起发后续的请求。
设置策略:
在这里插入图片描述

Controller—scenario–Rendezvous–policy
1.当%x的全部用户到达集合点时,开始释放
2.当%x的正在运行的用户到达集合点时,开始释放
3.当x个的用户到达集合点时,开始释放
限制虚拟用户之间的超时时间为xxS

插入集合点入口:
在这里插入图片描述
代码:

Action()
{
	int a;
	web_reg_save_param("session",
		"LB=name=userSession value=",
		"RB=>",
		"Ord=1",
		LAST);

   
	//打开网站
	web_url("打开网站","URL=http://192.168.103.103:1080/webtours/",LAST);

	
	
	lr_rendezvous("集合点");


	lr_start_transaction("login");


	web_submit_data("登录",
		"Action=http://192.168.103.103:1080/webtours/login.pl",
		"Method=POST",
		"TargetFrame=",
		"Referer=",
		"Mode=HTML",
		ITEMDATA,
		"Name=userSession", "Value={session}", ENDITEM,
		"Name=username", "Value=jojo", ENDITEM,
		"Name=password", "Value=bean", ENDITEM,
		"Name=login.x", "Value=36", ENDITEM,
		"Name=login.y", "Value=8", ENDITEM,
		"Name=login", "Value=Login", ENDITEM,
		"Name=JSFormSubmit", "Value=off", ENDITEM,
		LAST);
    lr_end_transaction("login",LR_AUTO);
    //通过web_find函数检查内容是否存在
    
	web_find("web_find",
		"LeftOf=,",
		"What=Welcome, jojo",
		LAST);

    

	return 0;
}

再来一个比较全的脚本吧
iwebshop的登录

Action()
{
	//open
	web_url("open","URL=http://192.168.103.103:8888/iwebshop/",LAST);

	//click denglu
	web_url("click","URL=http://192.168.103.103:8888/iwebshop/index.php?controller=simple&action=login",LAST);

    
	web_reg_find("Search=All",
		"SaveCount=num",
		"Text={username}",
		LAST);

	//LOGIN
	lr_start_transaction("开始事务点");

	web_submit_data("web_submit_data",
		"Action=http://192.168.103.103:8888/iwebshop/index.php?controller=simple&action=login_act",
		"Method=POST",
		"TargetFrame=",
		"Referer=",
		"Mode=HTML",
		ITEMDATA,
		"Name=callback", "Value=", ENDITEM,	
		"Name=login_info", "Value={username}", ENDITEM,
		"Name=password", "Value=123456", ENDITEM,
		LAST);
	
//	lr_output_message(lr_eval_string("{username}"));
//	lr_output_message("output de neirong shi:%s",lr_eval_string("{username}"));
	if(atoi(lr_eval_string("{num}"))>0){
		lr_end_transaction("开始事务点",LR_PASS);
	}else{
		lr_end_transaction("开始事务点",LR_FAIL);
	}

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值