第三章 Vuser发生器

来源:互联网 发布:ggplot python 编辑:程序博客网 时间:2024/05/29 16:07

  Vuser发生器(Visual User Generator,VuGen)主要通过捕获客户端向服务器发送的HTTP请求,将这些请求录制成脚本,在回放时将捕获的HTTP请求再次发送,以达到模拟客户行为的目的,所以Vuser主要是用来捕获最终用户业务流程和创建自动化测试脚本,即生成测试脚本。VuGen是录制测试脚本、编辑与完善测试脚本的一个平台,支持C语言语法

3.1 脚本录制

  脚本开发主要包括四大步骤:计划、录制脚本、脚本增强和单机调试脚本。
  这里写图片描述

3.1.1 如何选择协议

  选择协议的常用方法主要有以下几种:
  (1)向开发工程师确认数据通信所采用的协议
  (2)可以通过概要或详细设计手册获知所使用的协议
  (3)使用协议分析工具捕获通讯时的数据包并进行分析,然后确定被测对象所使用的协议。
  (4)根据以往测试经验来判断被测队形采用的协议
  LoadRunner有一个协议分析工具(Protocol Advisor),通过该工具可以分析当前系统所使用的协议。协议分析工具的使用步骤如下:
  (1)在HP LoadRunner12.0版本,打开Virtual User Generator,然后依次选择Record—Protocol Advisor—Analyze Application,如下图所示,
  这里写图片描述
  (2)弹出Protocol Advisor对话框,如图所示
  这里写图片描述
  ● Record:选择应用程序类型,被测的应用程序类型主要包括两类:Web Browser和Windows Application,即常说的B/S和C/S架构的两类应用程序。
  ● Program to analyze:分析的程序,如果选择windows Application,那么该选项为需要测试的应用程序的路径。
  ● URL address: 需要分析的网页地址
  ● Working directory:工作目录,默认为LoadRunner所在路径的bin目录。
  (3)设置分析程应用程序的路径或URL地址,单机OK按钮,即开始分析应用程序,通常分析一个简单的业务即可停止分析。
  (4)单击悬浮框中的Stop Analyzing按钮,停止分析应用程序,并产生分析后的结果。
  Loadrunner提供了多种协议,具体的协议分类如下表所示。
  这里写图片描述
  创建新脚本时,会弹出一个对话框,LoadRunner提供3中选择协议的方式:单协议脚本、多协议脚本和最近使用过的协议。
  (1)单协议脚本。创建单协议Vuser脚本,在对话框中选择录制时需要的协议,如下图所示
  这里写图片描述
  (2)多协议脚本。创建多协议脚本,在窗口中选择Mutiple Protocols,然后勾选一个或多个协议。
  这里写图片描述
  (3)最近使用过的协议。从最近录制脚本我的协议列表中,选择一种协议进行录制

3.2 Recording Options设置

在进行录制时,首先要对录制的一些参数进行设置,只有将这些参数设置好,才能录制并生成需要的脚本。

3.2.1Recording选项卡

  Recording Level包含两种录制模式:HTML-based script和URL-based script,

HTML-based script

  单击HTML Advanced按钮,弹出 Advanced HTML对话框,如下图所示,在该对话框中,关于HTML-based script脚本方式又有两种:A script describing user actions和A script containing explicit URLs only。
  这里写图片描述
  (1)A script describing user actions。模拟用户行为录制,它创建URL(web_url)、link(web_link)、image(web_image)和提交表单(web_submit_form)。
  这种模式只录制用户的操作,其他内容不会被录制。使用的提交信息函数为web_submit_form( )。
  (2)A script containing explicit URLs only。录制所有links(链接)、images(图片)和URL(web_url),但不创建web_link、web_image和提交表单(web_submit_form)。这种录制方式生成的脚本不直观。

  在录制过程中很可能会录制到一些非HTML的元素(如java小程序、XML、ActiveX元素、javaScript),这些非HTML元素主要用于包含或去获取自己的一些资源,如javaScript的JS文件用于调用加载多个图片。对于这类非HTML的元素,录制时有3种方式:
  (1)Record within the current script step.在录制时对于非HTML资源并不会生成一个新的功能。它列出所有相关资源的参数,如web_url、web_link和web_submit_data。这些Web功能的参数使用EXTRARES表示。如以下代码:

web_url("index.asp",    "URL=http://www.daisy.com/index.asp",    "TargetFrame=",    "Resource=0",    "RecContentType=text/html",    "Referer=",    "Snapshot=t2.inf",    "Mode=HTML",    EXTRARES,    "Url=http:www.daisy.com/ScrollApplet.class","Referer=",ENDITEM,    .......    LAST);)

  (2)Record in separate steps and use concurrent groups。在一个组中记录这些单独的步骤,为每个非HTML资源创建一个新的功能(但不包含一些页面的功能,如web_url、web_link等)。所有的web_url资源都将放置在并行组中(并行组由web_concurrent_start和web_concurrent_en表示)。
  (3)Do not record:不记录,对于非HTML元素不记录。

URL-based script

URL-based script方式将每条客户端发出的请求录制成一条语句,对于LoadRunner来说,在该模式下,一条语句只能建立一个到服务器的连接,并将通讯过程中的很多隐藏的信息都录制出来(如session、cookie)。LoadRunner提供了web_concurrent_start()和web_concurrent_end()函数模拟URL-based script的工作方式。
  选中URL-based script单选按钮,单击URL Advanced…按钮,关于URL的高级设置有两种方式:Creat concurrent groups for resources after their source HTML page和Use web_custom_request only。
  (1)Creat concurrent groups for resources after their source HTML page:将捕获所有HTML页面的资源,并将其保存在并发组中(并发组使用web_concurrent_start()和web_concurrent_end() statements两个函数表示),如果不选中该选项时,HTML页面资源将会分成独立的、单独的web_url步骤,但不放入并行组中,如以下代码:
  这里写图片描述
  (2)Use web_custom_request only。如果录制的是非浏览器的应用程序,可以设置Vugen自定义HTTP请求,在LoadRunner中使用web_custon_request函数来实现,不管内容如何,如以下代码:
  这里写图片描述

选择HTML-based script还是URL-based script,应该根据实际需要进行,下面是一些常见的参考原则:
  ● 基于浏览器的应用程序推荐使用HTML-based script。
  ● 不是基于浏览器的应用程序推荐使用URL-based script
  ● 如果基于浏览器的应用程序中包含了JavaScript,并且该脚本向服务器发送了请求,比如DataGrid的分页按钮等,推荐使用URL-based script。
  ● 基于浏览器的应用程序中使用了HTTPs安全协议,建议使用URL-based script。如果使用HTML-based script模式录制后不能成功回放,可以考虑改用URL-based script模式来录制。

3.2.2

  Advanced选项是设置脚本回放的高级选项,如下图所示:
  这里写图片描述
  ● Save snapshot resources locally:表示运行结果中保存一个快照。
  ● Add comment to script for HTTP errors while recoding:表示出现错误时自动添加注释。
  单击Headers按钮,会弹出HTTP Headers 配置对话框,在该对话框中可以选择需要录制的Headers,以便服务器能够正确处理编辑信息。

3.3 Run-Time Setting设置

  Run-Time Setting设置主要是
 这里写图片描述
  

3.4 脚本完善

  首先,为了衡量服务器对每个动作处理的响应时间,需要定义事务(transaction).
  其次,为了衡量加重负载情况下服务器的性能情况,需要插入集合点
  最后,在录制脚本的过程中添加注释

3.4.1 插入事务

  事务响应时间的原理是将业务操作结束时的时间点减掉业务开始时的时间点,得到的差值就是事务响应时间。事务响应时间直观反映了业务的响应时间,所以事务由两部分组成:一是开始事务函数;二是结束事务函数。
  插入事务有两种方法:
  方法一:在脚本录制过程中插入开始和结束事务点:在录制工具栏中添加
  方法二:在脚本录制完成后插入开始和结束事务点
  在生成的脚本中找到要插入开始事务点的地方,选择Design—Insert in Script—Start Transaction命令或者Ctrl+T组合键,接着输入开始事务的名称;插入结束事务点的过程与插入开始事务点的步骤是一致的。
  在“结束事务”中,比在脚本录制过程中插入结束事务点时的“结束事务”多出了一项Transaction Status,其事务状态有四种可选:
  ● LR_AUTO:事务的状态被自动设置,执行成功,状态设置为PASS;执行失败,状态设置为FAIL;事务异常中断,状态设置成STOP。
  ● LR_PASS:事务执行成功,代码返回的状态是PASS。
  ● LR_FAIL:事务执行失败,代码返回的状态是FAIL
  ● LR_STOP:事务异常中断,返回STOP
  事务结束状态为PASS并不代表业务一定做成功了,LoadRunner在自动判断事务结束状态是是以结束函数是否运行为标准,即只要结束事务函数运行,那么就将事务的结束状态置为PASS,反之将事务的结束状态置为FAIL。
  所以一般情况下需要先设置检查点后,再根据检查点来判断事务是否成功。

3.4.2 插入集合点

集合点是指在脚本中插入集合点函数(LoadRunner中使用的集合函数为lr_rendezvous),当脚本运行到集合点函数时,将停止运行并等待其允许运行的条件(其允许运行条件即为集合点策略),达到后才释放集合点开始运行,也即在性能测试过程中如果需要保证虚拟用户真正并发,那必须添加集合点。
  集合点只能插入Action部分的脚本中。
  方法一:在脚本录制过程中插入集合点(Insert Rendezvous)
  方法二:在脚本录制完成后插入集合点,选择Design—Insert in Script—Rendezvous命令

3.4.3 插入注释

  方法一:脚本录制过程中通过录制工具栏插入注释
  方法二:脚本录制完成后插入注释。(Insert—Comment命令)

原创粉丝点击