一、在用Loadrunner做性能测试的时候,我们可能会有疑惑为什么要设置检查点?
在一本书中,这样写到“HTTP是无状态的,即当客户端向服务器发出请求后,服务器只要响应了客户端的请求,它就认为是正确的,这显然不符合我们的预期。大家都知道测试用例必须包含两部分内容,即输入和预期输出,这里的输入可以是操作步骤、输入数据等,预期输出是结合输入的情况和业务逻辑规则应用理论上的结果。在实际测试中,测试人员按照测试用例设计步骤进行操作并输入相应的数据,然后比较实际输出和预期输出,如果预期输出和实际输出一致,就认为这个用例是通过的,否则,就是未通过的,即系统出现了BUG”
二、实例
以默认的web端WebTours来举例,WebTours有两个默认登录密码:①joe young ②jojo bean,这时我们需要测试登录,脚本录制完成之后,需要回放几次确认脚本的稳定性。这时会发现,无论使用joe还是jojo登录,只要密码正确都会回放成功。那当我们的需求是验证joe而不是jojo时,这个脚本就是不符合需求的,也无法确认登录者到底是哪个用户。
这时我们就要添加检查点。脚本如下:
Action()
{
lr_start_transaction("openindex");
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
EXTRARES,
"URL=http://www.bing.com/favicon.ico", ENDITEM,
LAST);
lr_end_transaction("openindex", LR_AUTO);
web_reg_find("Fail=NotFound",
"Search=Body",
"Text=Welcome, <b>jojo",
LAST);
lr_start_transaction("login");
web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username", "Value=joe", ENDITEM,
"Name=password", "Value=young", ENDITEM,
"Name=login.x", "Value=32", ENDITEM,
"Name=login.y", "Value=13", ENDITEM,
LAST);
lr_end_transaction("login", LR_AUTO);
return 0;
}
从此脚本可以查看到,当前登录账号为joe,而我想验证jojo是否登录,运行结果是失败的:
当我修改检查点的搜索文本为joe时,运行成功