LoadRunner性能测试系统学习教程:脚本编写(1)

LoadRunner性能测试系统学习教程:脚本编写(1)_第1张图片

LoadRunner录制结束后会自动生成一段脚本。这段脚本虽然很简单,但很实用,适合初学者学习。但是在真正进行项目性能测试时,只靠LoadRunner自动生成的脚本还是不够,很难达到业务的要求。因此,在录制脚本结束后,要对脚本进行完善,使其能达到业务模拟的要求,这样尽可能地使虚拟用户模拟时更接近用户的实际使用。

本章将从以下几个方面介绍完善脚本的技巧:
插入检查点
Block(块)技术
参数化技术
关联技术

标题检查点

在进行压力测试时,经常会有页面间数据传递的操作。如果在测试过程中传递数据的次数逐渐增多,页面就有可能会发生传递混乱,或者客户端与服务器端数据传输被中断、传输过程中产生了错误的数据等情况。为了判断数据传递的正确性,更重要的是为了节省人工检查的步骤和时间

LoadRunner提供了在脚本中插入检查点的方法,在每次运行时都检查服务器返回页面的信息是否正确,这样可以大大提高测试效率。

检查点的原理是通过检查点函数将返回值的结果反映在Controller的状态面板上和Analysis统计结果中。这个原理是基于LoadRunner中很多的API函数的返回值会改变脚本的运行结果。比如,检查点函数web_find,如果它检查到的结果为空,它的返回值就为LR_FAIL,这样整个结果置为FAIL;反之,检查到的结果为成功,则web_find返回值是LR_PASS,整个结果置为PASS。

为什么需要插入检查点
通常在测试过程中使用到两种检查点,文本检查点和图片检查点。那么为什么需要插入检查点呢?以飞机订票系统的登录功能为例,我们来观察在不插入检查点回放,事务结束状态的情况。

首先录制登录的脚本,脚本如下(部分核心代码):
web_reg_save_param(“WCSParam2”,
“LB/IC=userSessionvalue=”,
“RB/IC=>”,
“Ord=1”,
“Search=Body”,
“RelFrameId=1”,
LAST);
web_url(“nav.pl”,
“URL=http://127.0.0.1:1080/WebTours/nav.pl?in=home”,
“Resource=0”,
“RecContentType=text/html”,
“Referer=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true”,
“Snapshot=t7.inf”,
“Mode=HTTP”,
LAST);
web_concurrent_end(NULL);
web_url(“mer_login.gif”,
“URL=http://127.0.0.1:1080/WebTours/images/mer_login.gif”,
“Resource=1”,
“RecContentType=image/gif”,
“Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home”,
“Snapshot=t8.inf”,
LAST);
lr_start_transaction(“Login”);
lr_think_time(14);
web_submit_data(“login.pl”,
“Action=http://127.0.0.1:1080/WebTours/login.pl”,
“Method=POST”,
“RecContentType=text/html”,
“Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home”,
“Snapshot=t9.inf”,
“Mode=HTTP”,
ITEMDATA,
“Name=userSession”,“Value={WCSParam2}”,ENDITEM,
“Name=username”,“Value=test1”,ENDITEM,
“Name=password”,“Value=1”,ENDITEM,
“Name=JSFormSubmit”,“Value=off”,ENDITEM,
“Name=login.x”,“Value=46”,ENDITEM,
“Name=login.y”,“Value=6”,ENDITEM,
LAST);
web_concurrent_start(NULL);
web_url(“nav.pl_2”,
“URL=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home”,
“Resource=0”,
“RecContentType=text/html”,
“Referer=http://127.0.0.1:1080/WebTours/login.pl”,
“Snapshot=t10.inf”,
“Mode=HTTP”,
LAST);
web_url(“login.pl_2”,
“URL=http://127.0.0.1:1080/WebTours/login.pl?intro=true”,
“Resource=0”,
“RecContentType=text/html”,
“Referer=http://127.0.0.1:1080/WebTours/login.pl”,
“Snapshot=t11.inf”,
“Mode=HTTP”,
LAST);
web_concurrent_end(NULL);
在这个脚本中并没有插入检查点,回放脚本,日志文件如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第2张图片

从回放日志中可以看出,登录事务是正确的,用户成功登录,这没有问题,现在将web_submit_data函数用户名和密码的参考修改一下,将其修改为如下代码:
web_submit_data(“login.pl”,
“Action=http://127.0.0.1:1080/WebTours/login.pl”,
“Method=POST”,
“RecContentType=text/html”,
“Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home”,
“Snapshot=t9.inf”,
“Mode=HTTP”,
ITEMDATA,
“Name=userSession”,“Value={WCSParam2}”,ENDITEM,
“Name=username”,“Value=abcdef00133”,ENDITEM,
“Name=password”,“Value=ddaa”,ENDITEM,
“Name=JSFormSubmit”,“Value=off”,ENDITEM,
“Name=login.x”,“Value=46”,ENDITEM,
“Name=login.y”,“Value=6”,ENDITEM,
LAST);
重新回放脚本,回放日志如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第3张图片

从回放日志中可以清晰的看到,登录还是成功的,但实际情况下使用用户名为abcdef00133,密码为ddaa是不可能登录成功的。从LoadRunner的Run-Time Viewer视图中也可以看出,Run-Time Viewer视图结果如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第4张图片

登录成功后正常的情况是,Welcome后面会显示出登录的用户名。
这个例子说明一个问题,当事务的结束状态为成功时,并不能说明业务真的做成功了,那么同理,当在分析器中看到事务的成功率为100%时,平均事务响应时间也是在期望范围内时,也不能说明系统没有问题,也有可能出现这种情况,业务没有做成功,但事务的结束状态都被置为成功了,这样分析到的结果就完全错了。

那么LoadRunner是如何确定事务结束状态为PASS的呢?其实LoadRunner本身无法实际去判断业务是否做成功,其判断事务是否成功的依据是结束事务函数(lr_end_transaction)是否被执行,如果结束事务函数执行成功,那么LoadRunner则会将事务的结束状态设置为PASS。

从这个例子可以看出,如果需要确定事务是否成功,其实首先应该判断是否登录成功,只有当登录成功时,才能确定登录事务是成功的,所以其实检查点的根本目的是验证测试过程中的步骤是否被正确的执行,也可以理解为业务是否被正确的执行,只有这样才能保证后期分析的数据是正确的。
uc2hpeHg=,size_16,color_FFFFFF,t_70#pic_center)

插入检查点

插入检查点的方法,在工作原理上是在VuGen中插入Text/Image检查点。插入检查点的步骤如下:

1.将视图模式设置为Tree View,如图所示。
VuGen中包含Tree View(树视图)和Script View两种视图模式。一般情况下都是使用Script View,但在插入检查点时,一般都将视图模式切换为Tree View,这样方便找到要插入检查点的页面,对于初学者来说这是一种很好的方式,这样可以保证插入检查点的位置正确。
LoadRunner性能测试系统学习教程:脚本编写(1)_第5张图片

2.在Tree View中选择要插入检查点的位置。
选中要插入检查点的位置后,点击鼠标右键,选择检查点插入的方式,可以选择插在前面,也可以选择插在后面,如图所示。

3.选择检查点类型和插入函数。
插入检查点有文本检查点(Text Check)和图片检查点(Image Check)两种,选择的检查点函数也有两个,分别为:web_find和web_reg_find。
插入文本检查点(Text Check),使用web_find检查点函数的情况,如图所示,点击OK按钮后会弹出Text Check Properties对话框,如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第6张图片
LoadRunner性能测试系统学习教程:脚本编写(1)_第7张图片

在Specification选项卡,设置检查参数信息,主要有以下三个属性需要设置:
Searchfor:设置要检查的字符串,可以点击对检查的内容进行参数化。

Rightof:设置右边界值,也就是设置要检查字符串右边的内容,如Howareyou,如果要检查的内容为“are”,那么右边界值为“you”,也可以设置为空。

Leftof:设置左边界值,也就是设置要检查字符串左边的内容,如Howareyou,如果要检查的内容为“are”,那么左边界值为“How”,也可以设置为空。
LoadRunner性能测试系统学习教程:脚本编写(1)_第8张图片

然后切换到General选项卡,如图所示,在Step Name文本框中输入该操作的步骤名称,命名时名称最好能反映该操作要搜索的对象。
LoadRunner性能测试系统学习教程:脚本编写(1)_第9张图片

插入文本检查点(Text Check),使用web_reg_find检查点函数的情况,如图所示,点击OK按钮弹出Find Text对话框。
LoadRunner性能测试系统学习教程:脚本编写(1)_第10张图片

在Find Text对话框中设置搜索的属性配置,如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第11张图片

在Find Text对话框设置检查点属性时,有以下几个需要注意的地方:
1.Search for specific Text:和web_find检查点函数一样,同样需要对待检查的字符串进行设置,也可以对检查点的内容进行参数化,但web_reg_find检查点函数还可以对检查的内容进行是否区分大小写、是否为二进制数据、是否使用“#”代替任意阿拉伯数字和是否使用“^”作为通配符进行设置。

2.Search in:设置查找范围,关于查找范围为三个选项:All、Body和Headers,缺省值为Body。
那么如何来确定查找范围呢?以飞机订票系统登录成功,如图所示。
在这里插入图片描述

那么在使用这种方式来插入检查点时,需要检查的用户名(test1)应该是在哪里查找呢?在检查点函数web_reg_find中可以看到,通常有三种范围选择,那么在实际测试过程中可以依次在这三种范围中进行查找,检查用户名所在的地方就是需要设置的范围。

在树模型中找到登录成功的页面,并单击HTTP View选项卡,在该选项卡中可以看到录制的过程LoadRunner所抓到客户端向服务器发送的请求和服务器向客户端返回的请求。

在Response Body和Headers选项卡中依次查找待检查的用户名(test1),该实例在Response Body中可以查找到待检查的用户名,如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第12张图片

这样检查范围就应该设置为Body,那么一般在实际测试过程中待查找的内容都会在Body中,所以缺省值为Body。

3.Save count:定义查找计数器变量名称,该变量会自动统计检查内容出现的次数。在检查点类型和函数中,选择检查点类型为Image Check,检查点函数为web_image_check,如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第13张图片

点击OK按钮,弹出Image Check Properties对话框,在该对话框中设置图片的提示信息和图片的相对路径,如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第14张图片

如果Web窗体中包含有JavaScript脚本,那么在TreeView中显示可能会有问题,这时要在GeneralOptions中进行设置,如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第15张图片

进入General Options对话框,如图所示,切换到Correlation选项卡,选中Enable Scripting and Java applets on Snapshots viewer复选框,点击OK按钮,设置完毕。
LoadRunner性能测试系统学习教程:脚本编写(1)_第16张图片

4.参数化:检查点也可以进行参数化,因为检查点的内容可有会出现经常变化的情况,因此在一定的时候需要对检查点的内容进行参数化操作。在检查点属性设置对话框中点击按钮,弹出参数设置对话框,如图所示。
LoadRunner性能测试系统学习教程:脚本编写(1)_第17张图片

你可能感兴趣的:(软件测试培训,LoadRunner,高级测试工程师技能)