《LoadRunner性能测试巧匠训练营》——2.4 脚本编写实战

2.4 脚本编写实战

知识的学习都是从易到难的,所以小白选择了最简单的场景。以提前注册好的用户名besttest,密码123123完成登录、退出的业务。别小看这么简单的场景,也许你也和小白一样遇到了不少问题呢。
通过“开始”菜单下的HP LoadRunner →Application→Virtual User Generator打开并新建一个空白的Web(HTTP/HTML)协议的脚本,首次会出现Task视图界面,如图2-8所示。

初学者可按照图2-8中的步骤学习。因为这里不使用此视图,所以切换到Script视图界面。
LoadRunner的VuGen支持C语言开发、Java语言开发以及.NET语言开发,几乎支持目前主流的开发平台,十分强大。这里以C语言为主。

2.4.1 脚本录制
在开始录制之前有必要了解LoadRunner的录制原理。当使用VuGen进行录制时,会使用代理来访问服务器,这样就把客户端和服务器之间的通信数据包捕捉了下来,然后LoadRunner通过对应协议的API进行脚本封装,最终以良好的形式展现在VuGen中。
了解录制原理之后,就开始录制脚本。打开LoadRunner的VuGen组件,新建一个Web(HTTP/HTML)协议的脚本,弹出Start Recording(开始录制)对话框,如图2-9所示。

下面对图2-9中的主要选项进行学习。

  • Application type:一般默认为Internet Applications,即B/S应用。这里的WebTours使用该默认选项。Win32 Applications则是用来支持标准的Win32客户端。
  • Program to record:指定录制时使用的浏览器,默认为IE。

    如果调用浏览器时出现异常,可以手工在此指定IE的完整绝对路径,如“C:\Program Files \ Internet Explorer\iexplore.exe”。对于Windows 7 64位操作系统的用户需要注意的是,IE可以指定为“C:\Program Files (x86)\Internet Explorer\iexplore.exe”。
    另外,建议浏览器保持干净,不要安装多余的插件,否则会出现一些莫名其妙的问题,浪费我们的宝贵时间。

  • URL Address:填写要录制的程序地址URL。
  • Working directory:脚本存放的工作目录。
  • Record into Action:包含vuser_init、Action和vuser_end。它们的区别是vuser_init和vuser_end中的脚本代码只执行一次,而Action中可以执行设定的次数。同时集合点也只能在Action中设置。至于集合点是什么,我们后面再学习。这里默认选择Action即可。

单击图2-9中的OK按钮后,LoadRunner调用IE打开WebTours网站并录制。开始录制后,在屏幕上出现如图2-10所示的浮动工具条,通过该浮动工具条可以完成暂停录制、停止录制、Action切换以及其他动作。

录制完成后,生成的完整代码如下。
代码清单2-1 登录、退出完整代码

Action()
{
  //打开Web Tours首页
web_url("WebTours",
  "URL=http://127.0.0.1:1080/WebTours/",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t5.inf",
  "Mode=HTML",
  EXTRARES,
  "Url=http://conf.xmp.xunlei.com/vus/vipjs/vus_utility.js", ENDITEM,
  "Url=http://conf.xmp.xunlei.com/vus/vipjs/vus_config.js", ENDITEM,
  "Url=http://conf.xmp.xunlei.com/vus/vipjs/vus_finder.js", ENDITEM,
  LAST);
web_url("videourlsnifferconfig.xml",
  "URL=http://conf.xmp.xunlei.com/videourlsnifferconfig.xml",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/xml",
  "Referer=",
  "Snapshot=t6.inf",
  "Mode=HTML",
  EXTRARES,
  "Url=http://conf.xmp.kankan.com/vus/vipjs/vus_main.js", "Referer=", ENDITEM,
  LAST);
web_url("config.xml",
"URL=http://plugin.xl7.xunlei.com/coop/thunderbho/2.5.x.xxxx/config.xml",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/xml",
  "Referer=",
  "Snapshot=t7.inf",
  "Mode=HTML",
  LAST);
lr_think_time(56);
web_url("IE9CompatViewList.xml",
  "URL=http://ie9cvlist.ie.microsoft.com/IE9CompatViewList.xml",
  "TargetFrame=",
  "Resource=0",
  "RecContentType=text/xml",
  "Referer=",
  "Snapshot=t8.inf",
  "Mode=HTML",
  LAST);
lr_think_time(32);
  //提交登录信息
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=username", "Value=besttest", ENDITEM,
  "Name=password", "Value=123123", ENDITEM,
  "Name=login.x", "Value=53", ENDITEM,
  "Name=login.y", "Value=9", ENDITEM,
  LAST);
lr_think_time(9);
  //退出Web Tours
web_url("SignOff Button",
  "URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=1",
  "TargetFrame=body",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
  "Snapshot=t10.inf",
  "Mode=HTML",
  LAST);
return 0;
}

小白看到产生的脚本有点晕了,这脚本应该怎么看呢?于是他向经理求助。经理告诉他,学习LoadRunner最好的小伙伴就是F1的函数帮助手册,它可以说是绝佳“利器”。
在LoadRunner的录制过程中,请勿使用浏览器中的“后退”按钮。LoadRunner对该功能的支持不好。

2.4.2 “利器”——函数手册
于是小白就用经理告诉他的“利器”函数手册来学习。首先来看下web_url函数。这个函数对应的业务操作是打开WebTours首页。具体函数信息可双击选中web_url后,按F1键查看,出现说明,如图2-11所示。

在图2-11中,需要重点关注Return Values(函数返回值)、Parameterization(参数)和Example(例子)。单击其中的Example链接,进入后可以看到各种各样的实例,并有详细的描述,这是以后我们经常查看的地方。
学会Web_url函数后就可以照猫画虎地学习其他函数了。下一个函数是lr_think_time。这时候小白想起了之前学习基础知识时理解过思考时间的概念(参见1.3节),这里便是模拟了用户的真实行为操作记录下他的停顿时间。需要注意单位是秒。
接着是web_submit_data函数,小白看到里面有自己输入的用户名和密码,所以就猜想这个应该就是登录信息的提交请求了。通过F1键查看,小白确定了自己的猜想,这个函数其实就是充当了POST的数据提交请求,ITEMDATA后面的则是提交的参数以及对应的值。在代码清单2-1中就是username对应的besttest和password对应的123123。
2.4.3 脚本优化
一般录制出来的脚本会存在很多无关请求代码,不能直接使用,必须经过优化才行。
在刚才学习的过程中,小白发现了几个貌似和业务没有关系的请求,如含有xunlei、kankan、microsoft的请求,因为这些请求对于我们来说是无关的,所以可以删除掉。
完成清理后,细心的小白还发现,在一些函数中有个EXTRARES关键字,后面跟着一些额外的请求,这到底是什么,能不能删除呢?其实这个问题的答案并无对错,关键还是要看性能测试的目的,如果是要完整地模拟用户操作或是做性能评估,那么要保留。如果不是,则可以考虑删除进而对脚本进行瘦身。本脚本中的EXTRARES是无关的内容,可以删除。
脚本优化的方法主要有插入事务、插入集合点、设置思考时间、设置参数化、设置关联、设置检查点以及插入注释等。这些会在后续的章节中详细学习。
2.4.4 脚本回放
脚本录制完成后要如何验证是不是正确呢?这就需要依靠脚本的回放功能了。一般在回放之前要先单击图2-12中第二个方框内按钮编译检查脚本是否存在语法错误等,然后单击图2-12中按钮回放脚本。

如果脚本在运行过程中出现错误,VuGen会在日志区域提示并标红错误信息,方便用户调试脚本。脚本运行完成后会产生报告,可以单击菜单View→Test Results来查看,如图2-13所示。

如果有错误,则报告中会体现,当然没有错误,也不能说明脚本一定成功,后面遇到这样的情况再讲解。

时间: 2024-12-30 16:43:50

《LoadRunner性能测试巧匠训练营》——2.4 脚本编写实战的相关文章

《LoadRunner性能测试巧匠训练营》—— 导读

前 言 国内软件测试行业人才缺口已突破20万,并随着需求的不断攀升而挺向30万大关.据悉,国外成熟软件企业,一个软件开发工程师对应1-2个软件测试工程师,而国内软件企业,平均8个软件开发工程师才对应1个软件测试工程师,比例严重失衡.国内测试行业在这一点上与国外的差距比较大.实际上,为了保证软件质量,从项目开始测试人员就要介入,要了解客户需求,参与项目评审,把握测试要点.如果测试人员数量少,软件质量是得不到保证的.测试行业的确需要大量人才,尤其是在性能测试方面有丰富测试经验的人才更加稀缺. 另一方

《LoadRunner性能测试巧匠训练营》——2.6 脚本调试实战

2.6 脚本调试实战 经历完脚本编写的折磨后,小白并没有休息,他想到了平时经常看到同事调试代码时总是用断点.打印日志等方法,不知道LoadRunner的VuGen能不能实现,于是继续研究.2.6.1 message函数详解在前面已经使用过了message函数,但并没有深入了解,下面深入学习. lr_output_message函数该函数一般用于打印输出到控制台和output.txt文件中. 函数用法: lr_output_message( "%s登录成功", lr_eval_strin

《LoadRunner性能测试巧匠训练营》——2.7 VuGen使用技巧

2.7 VuGen使用技巧 至此,小白可以松口气了,常规的录制.放回.设置.脚本编写已经完全掌握了,终于达到了一个里程碑,值得庆祝.不过闲不住的小白还是想利用休息时间继续看看LoadRunner的VuGen中的各种功能.2.7.1 协议嗅探 Portocol Advisor(协议嗅探)功能是LoadRunner 11中的新增功能,只是为了给大家选择协议时提供参考意见而已,这个功能不能全信,只是在我们没有头绪时,可以参考嗅探出的协议.协议嗅探使用步骤如下. 1)单击菜单File→Protocol→

《LoadRunner性能测试巧匠训练营》——3.2 场景设计实战

3.2 场景设计实战 Controller可以完成多种场景设计,如快增长.慢增长.组模式等,基本可以满足日常的性能测试场景需求.启动Controller后的新建场景界面如图3-1所示. 下面解释图3-1中的主要选项.1)Select Scenario Type:选择场景类型.根据需要,可以选择手工场景和基于目标的场景.各子选项含义如下. Manual Scenario:手工场景.就是手工指定场景如何运行,比较灵活,可以完成绝大多数的场景需求.此处还有一个选项,是否使用百分比模式,一般情况下不勾选

《LoadRunner性能测试巧匠训练营》——2.8 本章小结

2.8 本章小结 通过这段时间的学习,小白已经熟练地掌握了LoadRunnerA的VuGen使用,并能把常用的技术点与技巧很好地运用到项目实战中.回顾来看,VuGen的功能还是蛮强大的,从编写到调试再到细微的设置,不愧为传说中性能测试的"神器",也更加坚定了小白继续学习的信心.在高兴之余,小白也认识到很多事情是可以遵循步骤规则的,就像脚本的编写开发.小白也体会到只有总结.梳理学到的知识,才能让自己的头脑变得更清晰,从而不至于毫无头绪地抓狂.下一章小白将学习LoadRunner的第二大组

《LoadRunner性能测试巧匠训练营》——第2章 LoadRunner VuGen实战2.1 LoadRunner快速安装

第2章 LoadRunner VuGen实战 经过上面的学习,小白已深入理解了性能测试,接下来小白需要通过一个性能测试工具来引导他动手实践,毕竟实践才是王道. 经过查找资料,小白发现性能测试工具貌似比较多,但LoadRunner是目前比较流行的,所以小白决定先学习最流行的性能测试工具.下面就和小白一起来见识下LoadRunner 11的强大功能吧! 2.1 LoadRunner快速安装 在Windows下安装软件一般都是4个步骤:下载.安装.配置.验证.小白到HP的官网找到了LoadRunner

《LoadRunner性能测试巧匠训练营》——3.3 场景监控实战

3.3 场景监控实战 场景的设计学完后,接下来学习场景的监控,这是很重要的,在学习如下内容的同时要回顾1.3节中的知识. ** 3.3.1 监控信息概览与自定义脚本** 上面学习的都是Controller的Desgin界面中的内容,下面学习Run界面中的内容,这里主要完成场景的实时监控. 1. 虚拟用户数的监控与增加 首先观察左侧的Groups区域,如图3-20所示. 此处显示的是虚拟用户的状态,可显示出虚拟用户从准备.初始化.运行到停止的所有状态过程,同时能统计出成功.失败以及集合点处的虚拟用

《LoadRunner性能测试巧匠训练营》——1.3 性能术语与指标详解

1.3 性能术语与指标详解 小白理解了性能测试后就开始了性能测试基本概念的学习,首要任务就是深入理解重要的术语和指标,因为对这些术语和指标的理解是否深入.透彻,将直接影响后续的学习效果. 1.并发数 在理解并发数之前,先提出3个常见的概念,分别是系统用户数.在线用户数和并发用户数.小白发现很多人都会把这3个概念混淆,其实是不一样的.以BestTest的论坛作为例子,对应的解释分别如下. 系统用户数:简单地说就是该系统的注册用户数.例如,BestTest论坛里存在6666个注册用户,他们可以是活跃

《LoadRunner性能测试巧匠训练营》——1.6 本章小结

1.6 本章小结 通过本阶段的学习,小白深入理解了性能测试的作用.重要性以及意义,同时掌握了重要的术语.概念.指标,并把这些知识应用到实际生活场景中,经过深刻学习产出了两个经典模型.虽然第1章为基础知识,但对于学习整体的性能测试知识尤为重要,如果不能很好地理解和掌握这些基础,后续的学习将会变得凌乱不堪,这也是很多读者最容易犯的错误,切忌不要浮躁!接下来小白将学习现在十分流行的商业性能测试工具LoadRunner,他又会遇到什么问题呢?让我们继续往下看吧.