LoadRunner用户行为模拟器 《第三篇》

  用户行为模拟器简称VU,VU通过运行VU脚本模拟了用户对软件的操作行为。VU是基于网络协议的。很明显,被测服务器是通过各种各样的网络协议与客户端打交道的。VU要“骗过”被测服务器,当然就要遵守这些协议,按规矩、按步骤来执行动作,否则就会吃“闭门羹”。

  基于网络协议的脚本的一个好处是,我们可以使用相对少的硬件资源,来生成大量的虚拟用户负载。相比之下,WinRunner和QTP脚本时基于界面事件的,它在一台主机上同时只能运行一个虚拟用户的脚本,因为一个虚拟用户会占用整个主机的资源。

  所以可以有如下结论:

  1. VU不关心用户在界面发生的事情(如用户鼠标移动、填写WebForm数据)等。

  2. VU中的操作关联与界面上的操作关联是不一致的。如正常用户的操作是,打开列表页,点击一行进入详细页面。而LoadRunner只记录一个请求,以及这个请求的参数直接进入,对它来说根本没有打开列表页的步骤。

一、录制脚本

  VU通过录制用户在客户端软件的操作来直接生成脚本,用户的每个协议级的操作以LoadRunner的API函数方式记录在脚本里。回放脚本的时候,通过执行API函数来模拟最初用户的操作动作。

  1、选择协议

  协议有好多种,是用哪种协议当时你开发的时候你自然会知道。目前我一般用的都是Web(HTTP/HTML)协议。

  当我们试图创建一个新的VUser的时候,就会弹出协议选择对话框。

  

  有两种协议选择方式:单协议模式和多协议模式。

  (1)、单协议模式:当用户以单协议录制时,VU只录制在既定协议上的用户操作,在VU中我们可以使用单协议模式选择任何一种协议。
  (2)、多协议模式:当用户以多协议录制时,VU录制几个协议上的操作。并不是任意的协议都可以组合成多协议模式。

  2、规划脚本结构

  在录制时,用户可以选择哪些操作生成脚本在vuser_init、Action和vuser_end中,同时,也可以在录制时随时加入transaction的定义、注释和同步点。VU录制工具条如下所示:

  

  3、HTTP
Vuser中的URL mode和HTML mode

  在录制之前,我们需要设置录制选项:

  

  

  在默认情况下,选择“HTML-based
script”,说明脚本中采用HTML页面的形式来表示,这种方式的Script脚本容易维护,容易理解,推荐以这种方式录制。

  “URL-based
script”说明脚本中的表示采用基于URL的方式,所有的HTTP的请求都会被录制下来,单独生成函数,所以URL模式生成的脚本显得有些杂乱。


Action()
{
web_url("Login",
"URL=http://127.0.0.1:9090/Account/Login",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
}

  而以HTML模式录制,则生成如下脚本:


Action()
{
web_url("Login",
"URL=http://127.0.0.1:9090/Account/Login",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTTP",
LAST);

web_url("Default.css",
"URL=http://127.0.0.1:9090/Resources/CSS/Default.css",
"Resource=1",
"RecContentType=text/css",
"Referer=http://127.0.0.1:9090/Account/Login",
"Snapshot=t4.inf",
LAST);

web_url("gwu1.jpg",
"URL=http://127.0.0.1:9090/Resources/Images/login/gwu1.jpg",
"Resource=1",
"RecContentType=image/jpeg",
"Referer=http://127.0.0.1:9090/Account/Login",
"Snapshot=t5.inf",
LAST);
  ... 省略N个
}

  是选择HTML还是URL录制,有以下参考原则:

  1. 基于浏览器的应用程序推荐使用HTML-based script。

  2. 不是基于浏览器的应用程序推荐使用URL-based script。

  3. 如果基于浏览器的应用程序中包含了JavaScript并且该脚本向服务器产生了请求,比如DataGrid分页按钮等,也要使用URL-based
    script方式录制。

  4. 基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-based script方式录制。

  4、查看日志

  在录制和回放的时候,VU会分别把发生的事件记录成日志文件,这些日志有利于我们跟踪VU和服务器的交互过程。我们可以通过VU输出窗口观察日志,也可以到脚本目录中直接查看文件。

  1、执行日志(Execution
Log,新版本是Replay Log)

  脚本运行时的输出都记在这个Log里。

  “执行日志”中使用了不同颜色的文本。

  • 黑色:标准输出信息。

  • 红色:标准错误信息。

  • 绿色:用引号括起来的文字字符串(例如URL)。

  • 蓝色:事务信息(开头、结束、状态和持续时间)。

  2、录制脚本(Recording
Log)

  当录制脚本时,Vugen会拦截Client端(浏览器)与Server端(服务器)之间的对话,并且通通记录下来,产生脚本。在Vugen的Recording
Log中,我们可以找到浏览器与服务器之间所有的对话,包含通信内容、日期、事件、浏览器的请求、服务器的响应内容等。脚本和Recording
Log最大的差别在于,脚本只记录了Client端要对Server端的请求内容,而Recording
Log则是完整记录二者的对话。所以,通过录制日志,我们能够更加清楚地看到客户端与服务器的交互。

  

  3、产生日志(Generation
Log)

  产生日志记录了脚本录制的设置、网络事件到脚本函数的转化过程。

  提示:脚本能正常运行后应禁用日志。因为产生及写入日志需占用一定资源。

二、回放脚本

  单击run按钮,或按快捷键“F5”就可以运行脚本。VU脚本运行工具条如下:

  

  录制完成之后,最好先运行一次脚本,因为在跑测试之前必须先确保脚本没有错误。

三、关联

  关联的作用是客户端每次的访问,服务器都会有动态的内容产生,如果这个动态内容跟不上,则服务器就报错的情况。如SessionId,假如每次访问,服务器都为其分配一个session号(随机的)导致报错时,此时就要对seesion做关联。

  这个看起来好像很难的样子,先跳过, 用到再学。

四、脚本视图和树视图

  VU提供两种视图来查看脚本的内容,一个是脚本视图,另一个是基于图标的树视图。

  所有类型的Vuser都有文本脚本视图,但是只有特定的Vuser才会有树视图。

  1、树视图(Tree
View)

  Tree View也叫做基于icon的View,也就是说,脚本的每个函数在Tree
View中都以一个带有icon的节点来代替。可以点击工具栏=>"Tree"按钮或者在“View”=>“Tree
View”,显示VU树视图。

  

  Tree View的好处是使用户更方便地修改脚本,Tree
View支持拖拽,用户可以把任意一个节点拖拽到他想要的地方,从而达到修改脚本的目的。用户可以右键单击节点,进行修改/删除当前函数参数属性,增加函数等操作,通过Tree
View能够增加LoadRunner提供的部分常用通用函数和协议相关函数。比如Web Service Vuser就不能通过Tree
View参数化一些复杂的数据类型,在这种情况下,就需要Script View了。

  2、脚本视图(Script
View)

  在Script View中能够看到一行行的API函数,Script View适合一些高级用户,通过Script
View向脚本中增加一些其他的API函数。可以单击工具栏上的"Script"按钮或者在"View"菜单下选择"Script
View",显示VU脚本视图。

  当用户在Script View中对脚本做了修改之后,Tree View也会做相应的变化。如果脚本有语法错误,Script
View将不能转化为Tree View或缩略图。

  

  3、理解Snapshot

  napshot,顾名思义,就是快照,代表当前的step,Snapshot显示了客户端执行完当前step后的样子,在Tree
View右侧的frame中可以查看Snapshot,在LoadRunner 8.0中,Snapshot包含Page View、Client
Request和Server Response。

  Snapshot有两种生成方式,一种是在record的时候生成,另一种是在replay的时候生成。可以对比两种方式生成的Snapshot,以发现哪些是动态值,需要参数化。

LoadRunner用户行为模拟器 《第三篇》,布布扣,bubuko.com

时间: 2024-12-20 14:31:08

LoadRunner用户行为模拟器 《第三篇》的相关文章

HttpApplication处理对象与HttpModule处理模块 (第三篇)

一.HttpApplication对象简述 在HttpRuntime创建了HttpContext对象之后,HttpRuntime将随后创建一个用于处理请求的对象,这个对象的类型为HttpApplication. HttpRuntime管理一个定义在System.Web命名空间下的HttpApplicationFactory类的时候,HttpApplicationFactory通过工厂模式管理HttpApplication对象.在HttpApplicationFactory内部维护了一个HttpA

SylixOS ARM BSP 第三篇【bspInit.c】

此篇博客为 SylixOS ARM BSP 编写连载的第三篇,主要介绍 bspInit.c 文件具体实现. bspInit.c 为 BSP 操作系统初始化部分代码,通常由 startup.S 初始完基本处理器参数后调用,下面以 S3C2440A 处理器为例,逐块介绍 bspInit.c 代码. SylixOS ARM BSP 第二篇中提到 startup.S 初始化完成会将会调用 bspInit() 函数,此函数用于初始化操作系统,并开始多任务调度. int bspInit (void) {  

学习KnockOut第三篇之List

欲看此篇---------------------------------------------可先看上篇. 第一步,先搭建一个大概的框架起来.至于绑定什么的,我们稍后慢慢进行.可能会有人问为什么我那个位置要写一个form,关于这个呢,且埋一伏笔,稍后说明原由. 我们要做的是,当点击“Add”按钮时能将文本框里的值加入的下拉框里,当我们选中下拉框里的选项时点击"Remove"也能进行删除操作,同样,当点击“Sort”时也能对下拉框里的选项进行排序.有代码和图: 1 <!DOCT

SaltStack 入门到精通第三篇:Salt-Minion配置文件详解

SaltStack 入门到精通第三篇:Salt-Minion配置文件详解 作者:ArlenJ  发布日期:2014-06-09 17:52:16 ##### 主要配置设置 ##### 配置 默认值 说明 例子 default_include minion.d/*.conf master可以从其他文件读取配置,默认情况下master将自动的将master.d/*.conf中的配置读取出来并应用,其中master.d目录是相对存在于主配置文件所在的目录 default_include: minion

SQL Server索引的维护 - 索引碎片、填充因子 &lt;第三篇&gt;

实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故障排除工具是一样的,因为处理是相同的. 对于非常小的表(比64KB小得多),一个区中的页面可能属于多余一个的索引或表---这被称为混合区.如果数据库中有太多的小表,混合区帮助SQL Server节约磁盘空间. 随着表(或索引)增长并且请求超过8个页面,SQL Server创建专用于该表(或索引)的区并且从该区中分配页面.这样一个区被称为统一区,它可以为多达8个相同表或索引的

【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

[第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 表单身份验证(Forms Authentication

目录:第三篇 备份与恢复数据库

第三篇 备份与还原数据库 第11章 备份 11.1 恢复模式 11.2 备份类型 11.3 优化备份策略 11.4 备份集 11.5 备份介质集 11.6 备份选项 11.7 备份的安全性 11.8 备份的可靠性 11.9 查看备份历史 第12章 还原 12.1 设计灾难恢复策略 12.2 恢复过程 12.3 恢复用户数据库 12.4 恢复系统数据库 12.5 恢复到时间点 第13章 特殊的备份与还原 13.1 恢复加密数据库 13.2 恢复受损的数据库 13.3 文件组还原 13.4 页面还原

第三篇 SQL Server安全主体和安全对象

本篇文章是SQL Server安全系列的第三篇,详细内容请参考原文. 一般来说,你通过给主体分配对象的权限来实现SQL Server上的用户与对象的安全.在这一系列,你会学习在SQL Server实例中通过权限授权来执行操作及访问安全对象.在SQL Server中重要的主体是角色,你会学习角色可以让安全管理比使用单独用户更容易.你也会学习SQL Server的安全对象.授权Authentication is only part of accessing all of the goodies in

第三篇——第二部分——第三文 配置SQL Server镜像——域环境

原文:第三篇--第二部分--第三文 配置SQL Server镜像--域环境 原文出处:http://blog.csdn.net/dba_huangzj/article/details/28904503 本文将演示如何在域环境下部署镜像,在域中部署相对来说简单很多,但是很多企业并不真正使用域来管理服务器(本人所在的公司就是其一),所以有必要演示非域环境,并且重点放在非域环境下.但是作为实践经验和最佳建议,强烈使用域环境管理.非域环境将在第四文中演示:http://blog.csdn.net/dba