LR-检查点

检查点原理:

1.插入检查点的原因

1.1 先看一个不插入检查点的案例 登录订票网站,用户名、密码正确,事务状态为PASS

Action()
{

	web_set_max_html_param_len("1024");

	/* Registering parameter(s) from source task id 71
	// {WCSParam2} = "124811.216605913ztVQQHzpQftVzzzHDifVQpizVHcf"
	// */

	web_reg_save_param("WCSParam2", 
		"LB/IC=userSession value=", 
		"RB/IC=>", 
		"Ord=1", 
		"Search=Body", 
		"RelFrameId=1.2.1", 
		LAST);

	web_url("WebTours", 
		"URL=http://127.0.0.1:1080/WebTours/", 
		"TargetFrame=", 
		"Resource=0", 
		"RecContentType=text/html", 
		"Referer=", 
		"Snapshot=t8.inf", 
		"Mode=HTML", 
		LAST);

	lr_think_time(5);

	lr_start_transaction("login");

	web_submit_data("login.pl", 
		"Action=http://127.0.0.1:1080/WebTours/login.pl", 
		"Method=POST", 
		"TargetFrame=", 
		"RecContentType=text/html", 
		"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home", 
		"Snapshot=t9.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=userSession", "Value={WCSParam2}", ENDITEM, 
		"Name=username", "Value=jojo", ENDITEM, 
		"Name=password", "Value=bean", ENDITEM, 
		"Name=JSFormSubmit", "Value=on", ENDITEM, 
		"Name=login.x", "Value=40", ENDITEM, 
		"Name=login.y", "Value=9", ENDITEM, 
		LAST);

	lr_think_time(5);

	lr_end_transaction("login",LR_AUTO);

	web_url("welcome.pl", 
		"URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=1", 
		"TargetFrame=", 
		"Resource=0", 
		"RecContentType=text/html", 
		"Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=flights", 
		"Snapshot=t14.inf", 
		"Mode=HTML", 
		LAST);

	return 0;
}

如下图所示,事务状态为Pass
在这里插入图片描述

1.2 如果用不存在的用户名和密码登录呢?,按照正常理解应该是登录失败的,事务应该也是Fail的,具体看下执行情况吧

web_submit_data("login.pl", 
		"Action=http://127.0.0.1:1080/WebTours/login.pl", 
		"Method=POST", 
		"TargetFrame=", 
		"RecContentType=text/html", 
		"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home", 
		"Snapshot=t9.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=userSession", "Value={WCSParam2}", ENDITEM, 
		"Name=username", "Value=jojo11", ENDITEM, //不存在的用户
		"Name=password", "Value=bean11", ENDITEM, //不正确的密码
		"Name=JSFormSubmit", "Value=on", ENDITEM, 
		"Name=login.x", "Value=40", ENDITEM, 
		"Name=login.y", "Value=9", ENDITEM, 
		LAST);

看下执行之后的结果,竟然事务的状态还是Pass
在这里插入图片描述
从上面的例子可以看出,事务结束状态成功,事务不一定成功的

问:LR如何确定事务结束状态为PASS的呢?

LR中本身无法实际去判断事务是否成功,其判断事务是否成的依据是结束事务函数(lr_end_transaction)是否被执行,如果结束事务函数执行成,那么LR就会将事务的结束状态设置为PASS

从上面例子,可以看出事务是否成功,首先应该判段业务是否执行成功,如上面登录是否成功,只有登录是成功的才能确定事务是成功的,那么,设置检查点的目的是为了验证测试过程中的步骤是否成功的执行,也可以理解为事务是否被成功执行,只有这样才能保证后续数据分析是准确的,后续的性能测试的执行和分析才是有意义的

2.如何插入检查点

  • 插入文本检查点
  • 在tree_view中插入web_find

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

web_find("login_check",
		"RightOf=<blockquote>a",
		"LeftOf=, to the Web Tours reservation pages.",
		"What=Welcome, <b>jojo</b>",
		LAST);

在这里插入图片描述

  • 在tree_view中插入web_reg_find

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

web_reg_find("Fail=NotFound",
		"Search=Body",
		"SaveCount=login",
		"Text=Welcome, <b>jojo</b>",
		LAST);

在这里插入图片描述

3.检查点函数

  1. web_find()
web_find("login_check", //检查点步骤名称
		"RightOf=<blockquote>a",//查询字符串内容右边界
		"LeftOf=, to the Web Tours reservation pages.",//查询字符串内容左边界
		"What=Welcome, <b>jojo</b>",//查询字符串内容
		LAST);
  1. 注册函数web_reg_find()
web_reg_find(
		"Fail=NotFound",
		"Search=Body",
		"SaveCount=login_count",
		"Text=Welcome, <b>jojo</b>",
		LAST);

web_find()和web_reg_find()的区别

  • 两个函数类型不同,web_find只是一个普通函数,而web_reg_find是一个注册函数
  • web_find函数使用时必须开启内容检查选项,而web_reg_find函数没有此限制
  • web_find函数只能基于HTML模式录制的脚本中,而web_reg_find没有此限制
  • web_find函数是在返回的页面中进行内容查找,而web_reg_find是在缓存中进行查找
  • web_reg_find函数在执行效率上要比web_find函数高

4.通过检查点判断事务是否成功

通过检查点获取到login_count参数的值,并进行比较如果查找到的login_count的值>=1则,登录是成功的,事务的状态设置为LR_PASS,否则,设置为LR_FAIL

4.1 用户名密码正确,登录成功时,事务

Action()
{

	web_set_max_html_param_len("1024");

/* Registering parameter(s) from source task id 71
	// {WCSParam2} = "124811.216605913ztVQQHzpQftVzzzHDifVQpizVHcf"
	// */

	web_reg_save_param("WCSParam2",
		"LB/IC=userSession value=",
		"RB/IC=>",
		"Ord=1",
		"RelFrameId=1.2.1",
		"Search=Body",
		LAST);

	web_url("WebTours",
		"URL=http://127.0.0.1:1080/WebTours/",
		"TargetFrame=",
		"Resource=0",
		"RecContentType=text/html",
		"Referer=",
		"Snapshot=t8.inf",
		"Mode=HTML",
		LAST);


	lr_think_time(5);

	lr_start_transaction("login");

	web_reg_find(
		"Fail=NotFound",
		"Search=Body",
		"SaveCount=login_count",
		"Text=Welcome, <b>jojo</b>",
		LAST);
	web_submit_data("login.pl",
		"Action=http://127.0.0.1:1080/WebTours/login.pl",
		"Method=POST",
		"TargetFrame=",
		"RecContentType=text/html",
		"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
		"Snapshot=t9.inf",
		"Mode=HTML",
		ITEMDATA,
		"Name=userSession", "Value={WCSParam2}", ENDITEM,
		"Name=username", "Value=jojo", ENDITEM,//正确的用户名、密码
		"Name=password", "Value=bean", ENDITEM,//正确的密码
		"Name=JSFormSubmit", "Value=on", ENDITEM,
		"Name=login.x", "Value=40", ENDITEM,
		"Name=login.y", "Value=9", ENDITEM,
		LAST);

	
	lr_think_time(5);

	if(atoi(lr_eval_string("{login_count}"))>=1){ // 判断参数login_count的值是否>=1
		lr_end_transaction("login", LR_PASS);
	}else{
		lr_end_transaction("login", LR_FAIL);
		exit(-1);
	}
	
return 0;
}

4.1 用户名密码错误,登录失败,此时可以看到事务状态是LR_FAIL的

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值