脚本创建——性能测试学习笔记之 LoadRunner实战(3)

发表于:2018-1-24 14:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨婷 编著    来源:51Testing软件测试网原创

  5.1.3  脚本录制与回放
  下面我们跟着Lucy一起录制第一个Web Tours示例脚本,该脚本我们尝试完成注册操作。
  打开VuGen的方法可以双击桌面快捷方式图标“Virtual User Generator”,也可以通过“开始”菜单下的HP Software → HP LoadRunner → Virtual User Generator打开。如图5-7所示。
  图5-7  VuGen 默认主页面
  在LoadRunner“File”菜单下选择“New Script and Solution”(快捷键Ctrl+N),打开如图5-8所示页面,选择HTTP协议,输入脚本名称SignUp,选择脚本存放路径(存放路径可根据实际需要自行指定),最后单击“Create”按钮创建脚本。
  图5-8  VuGen 创建新脚本页面
  默认创建的脚本为空,单击“开始录制”按钮,如图5-9所示。
  图5-9  VuGen 开始录制按钮选项
  输入Web Tours页面访问地址http://127.0.0.1:1080/WebTours/index.htm,单击“Start Recording”按钮,启动录制。如图5-10所示。
  图5-10  VuGen 开始录制界面
  【特别说明】:脚本录制前请确保Start HP Web Tours Server服务器是启动的(详见5.1.1“启动WebTours示例程序”图5-2),也就是说http://127.0.0.1:1080/WebTours/index.htm可以正常访问。
  【特别说明】:在LoadRunner录制功能启动前请确保IE浏览器为默认浏览器,且IE浏览器的实例处于关闭状态,单击开始录制按钮后系统也会弹出提示信息加以确认。如图5-11   所示。
  图5-11  提示关闭浏览器
  脚本录制过程同5.1.1“启动Web Tours示例程序”注册过程相同,这里不再累述,唯一的区别是录制脚本时会出现录制工具栏,录制完成后单击停止按钮(方形图标),如图5-12所示。
  图5-12  录制工具栏
  下面是对录制工具栏相关功能的详细介绍。
  :红色圆点,表示录制脚本的状态,红色变浅表示当前正在录制脚本;
  :蓝色方块,表示结束当前脚本录制;
  :蓝色竖杠,表示暂停当前脚本录制,暂停后可随时恢复录制;
  :红色圆点/,表示取消当前脚本录制,该脚本录制不生效;
   :脚本中的操作,默认为Action,可调整;
  :添加新的Action操作,可添加多个;
   :一组事务,左边表示事务开始,右边表示事务结束;
   :定义一个集合点,主要用于Controller的并发操作;
  :添加注释,便于脚本理解;
  :插入文本检查点,用于回放脚本时检查页面的正确性。
  【特别说明】:录制工具栏为我们提供了诸多功能,这些功能并非都要在录制脚本的时候使用,大多数情况下我们习惯于在录制后使用上述功能对录制的脚本进行修改。
  本次注册信息填写如下。
  Username:tester001
  Password:123456
  Confirm:123456
  First Name:tester
  Last Name:001
  Street Address:chengdu
  City/State/Zip:610000
  录制完成后VuGen将自动生成完整的脚本代码,如下所示。
  Action()
  {
       // 打开Web Tours首页
   web_url("index.htm", 
   "URL=http://127.0.0.1:1080/WebTours/index.htm", 
   "Resource=0", 
   "RecContentType=text/html", 
   "Referer=", 
   "Snapshot=t1.inf", 
   "Mode=HTML", 
   LAST);
  // 打开sign up注册页面
   web_link("sign up now", 
   "Text=sign up now", 
   "Snapshot=t2.inf", 
   LAST);
   lr_think_time(46);
  
       // 填写并提交注册信息     
   web_submit_form("login.pl", 
   "Snapshot=t3.inf", 
   ITEMDATA, 
   "Name=username", "Value=tester001", ENDITEM, 
   "Name=password", "Value=123456", ENDITEM, 
   "Name=passwordConfirm", "Value=123456", ENDITEM, 
   "Name=firstName", "Value=tester", ENDITEM, 
   "Name=lastName", "Value=001", ENDITEM, 
   "Name=address1", "Value=chengdu", ENDITEM, 
   "Name=address2", "Value=610000", ENDITEM, 
   "Name=register.x", "Value=43", ENDITEM, 
   "Name=register.y", "Value=9", ENDITEM, 
   LAST);
   return 0;
  }
  【特别说明】:录制过程中,尽量不要有多余的动作,避免影响脚本录制多余的内容。也不要使用浏览器的后退功能,LoadRunner对该功能的支持不太好。
  录下脚本后,Lucy迫不及待地想要验证一下脚本的正确性,这就需要用到LoadRunner的回放功能,在菜单栏选择“Replay”回放脚本,如图5-13所示。
  图5-13  VuGen回放脚本按钮
  回放完成后Lucy得到了回放摘要,显示脚本通过,如图5-14所示。
  图5-14  Signup回放摘要
  Lucy非常高兴,很顺利地完成了第一个脚本的录制,但仔细一想又觉得哪里不对,按照LoadRunner工作原理,脚本回放向服务器发起的请求是真实存在的,而回放的是注册脚本,Web Tours系统是不会允许注册完全相同的两个账号。那么脚本回放为何是通过的呢?
  原来LoadRunner对脚本通过与否的判断是看协议的状态,例如HTTP协议返回值为200,表示OK,那么至于返回的内容是否是用户想要的LoadRunner并不做判断,如图5-15所示。
  图5-15  Signup返回的http数据
  双击web_link和web_submit_form服务器返回的Http请求都是200,所以LoadRunner给出的脚本状态为Passed。
  那么到底返回了什么值呢?在Snapshot Tab页面下打开Page View就可以查看到具体页面录制的情况,如图5-16所示。
  图5-16  Signup返回的页面视图
  通过返回提示,我们可以确定本次的回放实际上没有成功生成新的注册用户,Lucy明白这个道理后决定修改脚本中的注册信息。
  修改后的脚本注册信息如下所示:
   web_submit_form("login.pl", 
   "Snapshot=t3.inf", 
   ITEMDATA, 
   "Name=username", "Value=tester002", ENDITEM,  //改为tester002
   "Name=password", "Value=123456", ENDITEM, 
   "Name=passwordConfirm", "Value=123456", ENDITEM, 
   "Name=firstName", "Value=tester", ENDITEM, 
   "Name=lastName", "Value=002", ENDITEM,  //改为002
   "Name=address1", "Value=chengdu", ENDITEM, 
   "Name=address2", "Value=610000", ENDITEM, 
   "Name=register.x", "Value=60", ENDITEM, 
   "Name=register.y", "Value=12", ENDITEM, 
   LAST);
  再次回放脚本后,查看Snapshot的Page View,发现Web Tours页面提示tester002成功被注册了,如图5-17所示。
  为了保证LoadRunner的注册用户同真实用户注册效果是一致的,Lucy还手动打开了Web Tours页面,尝试用tester002的账号登录以确保可用。如图5-18所示。
  录制回放功能的基本介绍就告一段落,最后让我们来理解一下VuGen的基本工作原理。录制期间VuGen将监控客户机,并跟踪用户发送到服务器以及从服务器接收的所有请求,如图5-19所示。
  回放期间,Vuser脚本直接与服务器通信,不依赖于用户。这样,可以在一个客户机上同时运行大量 Vuser,这样就可以在有限的设备下模拟出大量并发访问的情况。图5-20为Vuser脚本向服务器发起请求。
  图5-17  tester002成功注册页面展示
  图5-18  用户手动验证tester002
  图5-19  VuGen记录发送和接收的请求
  【特别说明】:VuGen只能在 Windows平台上录制 Vuser脚本,但录制的 Vuser脚本可在 Windows 和 Linux 平台上运行。
  学习笔记
  笔记一:录制/回放脚本是学习LoadRunner的第一步,在刚才的录制过程中有很多选项我们并不完全理解,学习需要循序渐进,先不要把事情复杂化,没有人对LoadRunner的所有功能细节能够完全了解,我们可以边学习边细化。
  笔记二:LoadRunner 12的界面非常人性化,相对于习惯了LoadRunner 11的同行们可能需要短暂的适应,但没有网络传言中那么夸张,其实只要熟悉了基本的界面风格是很容易上手的。
  图5-20  Vuser向服务器发送和接收请求
  5.1.4  脚本录制与运行
  在5.1.3章节中我们成功地录制了一个signup脚本,并在回放时将脚本中的用户名由tester001修改为tester002。在本次操作过程中我们用到了录制选项操作“Start Recording”,这是脚本录制的开始,而回放脚本前通常也会按照需要做些运行时设置“Runtime Settings”。下面就针对这两大模块的常用功能进行介绍。
  1.“Start Recording”录制选项
  “Start Recording”录制选项如图5-21所示。
  图5-21  Start Recording录制选项窗体
  录制选项操作Start Recording主要包括操作选择(Action selection)和录制模式(Recording mode)两个部分。
  操作选择中Record into action的下拉列表有三个选项:vuser_init、Action、vuser_end,在脚本录制中,我们一般选择Action作为脚本存放的位置(在迭代部分会加以阐述)。
  录制模式中Record的下拉列表有四个选项:Web Browser、Windows Application、Remote Application visa LoadRunner Proxy、Captured Traffic File Analysis。
  (1)Web Browser:Web浏览器标配,用于Web端的测试,可以理解为B/S结构类型的脚本录制。
  (2)Windows Application:Windows应用程序,可以理解为C/S结构类型的脚本录制。
  (3)Remote Application visa LoadRunner Proxy:通过LoadRunner代理服务器的远程应用程序。代理模式可以脱离原有基于浏览器或者可执行文件的录制,录制的设备可以扩展到更多的局域网下的设备。
  (4)Captured Traffic File Analysis:第三方工具集成, 原理类似于代理模式,利用电脑作为网关,通过第三方工具(例如wireshark)对网络的特定数据包进行抓取,整理形成特定的文件,再通过LR对数据包文件进行分析,形成脚本。
  本次介绍我们用到的Web Browser的录制选项,如图5-22所示。
  图5-22  Web浏览器录制选项
  在Start Recording录制选项窗体的左下角有一个非常重要的选项,叫作“Recording Options”,如图5-21所示。该功能也可以直接在VuGen的Record菜单下选择“Recording Options”,或使用快捷键“Ctrl+F7”打开。下面我将介绍常用的部分功能选项。
  (1)录制标签(Recording)
  默认选择基于HTML的脚本录制格式,在HTML的高级中默认为第一种,描述用户操作的脚本(A script describing user actions),如图5-23所示。
  而在实际应用中,描述用户操作的脚本虽然便于理解,但每段函数的依赖性太强,脚本灵活度不够。而基于URL的脚本录制(URL-Based script)分解了脚本中的每个细节,不便于业务理解。我们经常选择的录制方式是基于HTML的脚本录制格式中的第二种,仅包含明确URL的脚本类型(A script containing explicit URLs only)。
  图5-23  录制操作对话框
  三种脚本录制的差异,详见附录A“LR三种录制脚本的对比”。
  【特别说明】:后续脚本录制如无特殊说明均使用A script containing explicit URLs only的脚本录制方式,切记,切记(本次“Signup”的脚本使用的录制方式为HTML的第一种)。
  (2)HTTP属性高级(HTTP Properties → Advanced)
  为避免脚本在中文环境下出现乱码,需要在复选框勾选支持的字符集UTF-8,如图5-24所示。
  图5-24  HTTP属性高级选项
  2.“Runtime Settings(F4)”运行时设置选项
  “Runtime Settings(F4)”运行时设置选项如图5-25所示。
  图5-25  Runtime Settings运行时设置窗体
  (1)Run Logic运行逻辑(General → Run Logic)
  用于设置当前脚本的迭代次数(也叫循环次数)。例如,设置两次迭代,Action中的脚本将被执行2次,如图5-26所示。
  图5-26  迭代次数设置
  【特别说明】:迭代次数不会影响到vuser_init,以及vuser_end,多数情况下我们会把脚本放入Action中方便迭代设置。
  迭代增强了脚本的灵活性,但有时并非所有的Action脚本都需要迭代,例如,想要实现1次注册,2次登录的检查就需要引入Block块的概念。
  下面是录制好的一个脚本,包含两个Action,分别是signup和login,我们来看一下加入Block的效果:
  在录制时将脚本拆分为两个部分,signup部分是注册相关的Action,注册完毕后不退出,而是新增了一个Action,命名为login,完成登录操作后脚本录制结束,如图5-27所示。
  图5-27  注册后进行登录的Action
  录制完后进入Runtime Settings->General->Run Logic选项,按1次注册、2次登录的假设完成Action和Block设置,如图5-28所示。
  图5-28  迭代次数设置
  (2)Run Logic运行逻辑(General -> Log)
  在VuGen脚本运行时为了更好地了解脚本执行情况,一般会选择查看扩展日志,如图5-29所示。
  图5-29  扩展日志类型
  【特别说明】:扩展日志一般是在单脚本运行时设置,在多脚本运行的Controller中,大多选择标准日志。
  (3)Run Logic运行逻辑(General ->Think Time)
  思考时间指的是脚本录制过程中产生的用户停顿时间,是用户正常访问的体现。但在单脚本运行的VuGen中,默认选择忽略思考时间(Ignore think time),如图5-30所示。
  图5-30  思考时间类型
  【特别说明】:在Controller中的并发操作下,一般选择使用录制思考时间的随机百分比(use random percentage of recorded think time),目的是为了更真实地模拟用户行为。
  (4)Run Logic运行逻辑(Browser->Browser Emulation)
  LoadRunner回放脚本默认采用IE浏览器,如果想要更改回放脚本的浏览器可以在该页面进行操作。如图5-31所示。
  图5-31  浏览器仿真选项
  学习笔记
  笔记一:脚本录制方式的选择不同,对脚本的阅读性将产生重大影响,每次录制脚本需要检查,“Recording Options”下,HTML的脚本录制格式是否选择了仅包含明确URL的脚本类型(script containing explicit URLs only)。
  笔记二:VuGen不仅仅是录制脚本,还需要考虑对脚本的各类设置,而VuGen是单脚本运行,在设置上Controller的多脚本仿真并不完全一致,后续执行期间需要多加注意。


本文选自《性能测试学习笔记之 LoadRunner实战》第五章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号