VuGen(虚拟用户 Generator) LoadRunner 中的脚本示例
什么是 VUGen?
虚拟用户接口 (虚拟用户 Generator) 是 LoadRunner 中的一个重要工具,用于创建测试脚本来模拟系统上的真实用户行为。在 VUGen 中,人类被虚拟用户 (VUser) 取代,VUser 执行的操作记录在 VUser 脚本中,以模拟真实用户行为进行测试和监控。
VUGen 是 LoadRunner 的四个核心组件之一。它是您开始使用性能时与之交互的第一个组件 测试 使用 HP LoadRunner。
让我们了解与 VUGen 相关的一些显著特点
VUScript: 如前所述,VUGen 的目的是创建用于模拟真实虚拟用户的 VUScript。
行动: 操作是负载系统中执行的一组用户事务,用于完成定义的任务。操作可以与其他编程语言中的函数进行比较。每个 Vuser 脚本都有 3 个默认函数
- Vuser_init(用于登录应用程序)
- Action(用于记录业务流程)
- Vuser_end(用于退出应用程序)
VUGen 不仅记录脚本,还会重播脚本(仅限 1 个 VUser),以确保脚本记录正确。确保脚本记录正确后,即可将其合并到 LoadRunner 场景中
VUGen 中的脚本开发流程
1.录制脚本: 通常,这是编写脚本的第一步,其中每个用户操作都记录到脚本中。
2.重播并验证: 脚本录制完成后,回复脚本以确保其正常运行。通过应用程序前端或数据库验证任何影响。
3.增强脚本: 一旦记录得到验证,就通过添加检查点、验证数据、添加交易和会合点来增强脚本。
4.重播并验证: 与之前一样,重新播放您的脚本并验证一切是否按预期进行。
5.配置运行时设置: 配置和控制起搏持续时间、思考时间变化、代理设置以及是否希望忽略任何外部资源。
6. 用于负载场景: 根据测试目标制定负载场景。使用负载分配和地理范围代理来制作真实的场景。
比较 QTP 和 LoadRunner 之间的记录
VUGen 忽略 UI 对象:
与 QTP 脚本不同,LoadRunner 脚本独立于 GUI。这是因为生成的代码不是基于 UI 对象工作的,而是基于客户端向服务器发出请求并期望服务器响应客户端的原则工作的。这就是为什么重放 LoadRunner 脚本始终独立于浏览器的原因。VUser 可以通过执行对服务器 API 的调用直接与服务器通信 - 而不依赖于客户端软件 (SUL),这意味着如果对负载系统的 UI 进行更改,则不会对脚本产生影响。这说明; 性能测试 完全基于客户端/服务器通信(请求和响应)而不是 GUI 对象。
请参阅以下链接了解更多详情: http://youtu.be/FDORUeqpNJs?t=3m41s
我们将在下面更详细地了解 VUGen 脚本的工作原理。
Web Tours 应用程序简介
为了实现所有实际目的,我们将使用与 LoadRunner 捆绑在一起的 Web Tours 应用程序。
HP Web Tours 需要依赖“Web Tours 阿帕奇 服务器”必须先运行,然后才能运行。要运行 Web Tours Apache Server,请转到“开始菜单” => “HP 软件” => “示例” => “Web”,然后单击“启动 HP Web Tour 服务器”。
一旦“服务器”被激活,它将打开一个shell并在控制台上输出。
控制台应如下面的快照所示,在 shell 中查找您的 IP 地址:
注意:如果关闭此窗口,服务器将停止。
现在您可以访问 Web Tours 应用程序 –
一旦启动,它将看起来像-
了解VUGen环境
要运行 VUGen,请双击桌面上的 VUGen 快捷方式,或转到“开始菜单”=>“HP 软件”=>,然后单击“虚拟用户” Generator.
VUGen 启动画面将出现如下内容
启动画面随后将打开 HP Virtual User Generator 首页,如下图:
从文件菜单中,您可以观察到各种命令控件。这些控件的用途如下:
新脚本和解决方案: 用于开始创建新脚本。或者,您也可以从工具栏按钮创建新脚本。
打开>>脚本解决方案:用于从目录中打开现有的、先前创建的脚本或解决方案。
添加>>新脚本: 用于将之前创建的脚本添加到当前解决方案中
当我们开始创建第一个脚本时,我们将熟悉其他控件。让我们继续学习。
点击 点击这里 如果视频无法访问
创建您的第一个 VUGen 脚本
在录制之前,请确保 Web Tours App 服务器正在运行。请记住,您需要保持服务器运行,因此不要关闭它。如果窗口让您感到困扰,您可以将其最小化。
提示: 在实际问题中,需要熟悉主题应用程序 (SUL),尤其是当它涉及复杂的业务工作流和数据阶段时。您还可以与 HP Web Tours 进行交互,以确保在录制时可以重复精确的步骤。
在开始编写任何应用程序 (SUL) 脚本之前,需要熟悉应用程序流程。通过本教程,我们将熟悉随 HP LoadRunner 一起提供并自动安装的 HP Web Tours。
步骤1) 单击文件=>新脚本和解决方案,如下面的快照所示:
您可以使用快捷键(Ctrl + N)执行相同操作。
步骤2) 将显示一个选择协议的窗口。列表与以前的版本略有不同
1. 选择单一协议
2.网站
3. 输入脚本名称
4. 单击“创建”
请注意: 您可以使用 协议顾问 确定应用程序用于通信的正确协议。对于 HP Web Tours,我们已经知道它需要“Web – HTTP/HTML”协议。我们将在稍后学习如何确定适合您的 SUL 的正确协议。
提示: 应用程序有时可能需要多个协议才能与其服务器通信。对于这种情况,请导航至窗口左侧的“多个协议”列表。
但是,使用 VUGen 编写脚本时,HP Web Tours 只需要一个协议。
提示: 您无法轻松重命名脚本,因此在命名脚本时要有创意。如果您必须重命名脚本,请使用 另存为 功能并赋予新名称。一个好的命名法可以是 WT01_Signup,其中 WT 是应用程序名称的缩写形式,01 是业务流程序列,而 Sign up 是指正在编写脚本的业务流程。另外,请注意,脚本名称中不能使用空格。
步骤3) 单击“创建”后,HP VUGen 将打开 IDE(集成开发环境)或 代码编辑器。您可以注意到脚本文件是空白的,除了函数操作的基本签名。下面的快照应该有助于更好地理解它:
步骤4) 点击录制按钮 您可以在工具栏中找到它。请参阅下面的快照:
步骤5) 打开新窗口
1. 如果我们研究上面的窗口,会发现此弹出窗口的标题栏中提到了脚本的名称。当您处理一次打开的多个脚本时,这将帮助您对正确的脚本进行更改。
2. 如果您没有看到其余控件,请点击 更少的选择 按钮以确保您不会看到更少的选项。
3. 记录行动 字段决定录制后生成代码的位置。VUGen 脚本便于在录制期间和录制后切换到其他操作或创建新操作。
4. 记录: 字段告诉 VUGen 主题应用程序 (SUL) 是 Web 应用程序或桌面客户端。一旦开始录制,就无法覆盖此选项。
5. 应用: 字段告诉 VUGen 使用哪个浏览器进行录制。如果您不使用 Web – HTTP/HTML 协议,您将使用此字段选择桌面客户端。
提示: 与 QTP 脚本不同,LoadRunner 示例脚本独立于 GUI。这是因为生成的代码不是基于 UI 对象工作的,而是根据客户端向服务器发出请求并期望服务器响应客户端的原理工作的——通常以 HTML 的形式(因此得名协议)
6. URL地址: 此处输入 SUL 的 URL。单击“开始录制”时,VUGen 将调用此 URL。使用的浏览器将是“记录:”字段(如果它与您的默认浏览器不同)。
7. 开始录音:立即与延迟: 如果您选择了 即时 录制模式,您会注意到,只要您点击“开始录制”按钮,VUGen 就会开始录制事件。但是,如果您选择延迟录制模式,VUGen 将调用系统 (SUL),但不会开始捕获事件,除非您单击浮动栏中的录制按钮。
8. 工作目录: 这是 VUGen 在捕获事件时将使用的临时目录。脚本的副本也将在此位置提供,以防您丢失文件夹 🙂
9.录音选项: 这些设置告诉 VUGen 要捕获什么类型的 URL 以及使用什么记录模式。
10.开始录制: 将开始录制。点击它
步骤6) 一旦开始录制,VUGen 将使用所选的浏览器调用 HP Web Tours 应用程序。
让我们通过 LoadRunner 脚本示例来了解如何在 Web Tours 应用程序中注册用户并记录基本脚本。
会出现一个浮动录制栏,提供各种录制控制。它会显示已用时间以及自动捕获的事件数量。让我们仔细看看浮动栏。
在上面显示的快照中,SUL 已触发 56 个事件,自记录开始以来总共已过去 0 分 25 秒的时间。
您还会发现,键入时没有触发任何事件。问问自己为什么。您能回答吗?
这是因为在您输入时不会发生客户端与服务器之间的通信。因此,不会触发任何事件,也不会生成有关输入的脚本。只有在您提交表单后才会生成代码(单击“继续”)
录音可暂停 使用暂停按钮。请注意,只要录制保持暂停状态,应用程序触发的所有事件都将被忽略。这也意味着,即使您的应用程序正在发送请求和/或接收来自 SUL 的响应,只要您暂停录制,就不会生成脚本。
如果你暂停了录制,则需要点击录制 按钮即可从浮动栏中恢复录制。
当您在 vuser_init 部分录制时,您会注意到会合按钮未启用。切换到操作(或创建新操作)并继续录制。请参阅下面的快照以了解如何切换操作。
你会注意到,切换到 Action 后,会合点 按钮将自动启用。这是因为 VUGen 不允许在 vuser_init 中插入会合点.
在记录时间使用事务
假设您希望衡量 X 个用户同时注册时的响应时间。为了实现此目标,让我们继续阅读。
到目前为止,您已在 vuser_init 操作中记录了应用程序的打开。切换到操作后,输入 SUL 所需的用户信息。现在,在点击“继续”按钮之前,请按照以下步骤操作:
点击按钮开始交易 在浮动栏中输入交易的名称,例如01_Signup。
提示: 使用像 01_ 这样的前缀来命名您的交易是一种很好的做法,有助于保持它们的唯一性。
浮动栏将如下所示:
单击“确定”关闭交易标签。
单击应用程序的继续按钮。
点击按钮结束交易。选择您要关闭的交易的名称,例如,在本例中为 01_Signup。请参阅下面的快照以了解说明。
如果您没有打开多个交易,您将只看到一个名称。但是,如果您有多个交易,您将能够从列表中选择。
在记录时间插入评论
现在您已成功关闭交易,您可以在记录时添加注释,以便在稍后研究代码时提醒自己。从浮动栏中,单击按钮以插入注释。浮动栏旁边将出现一个文本框,您可以在其中输入任何文本。
此注释将被插入到您单击“确定”按钮之前刚刚完成的步骤(代码)之后的代码中。
在应用程序中,您可以单击“继续”。您将看到应用程序的欢迎信息。
现在选择 vuser_end 操作并单击 登出 从应用程序中。关闭应用程序并单击停止按钮 从浮动栏中。
代码生成
录制停止后,您会注意到 VUGen 生成后的活动。这包括根据您的录制生成代码、交易和评论。请参阅下面的快照。
VUGen 完成“执行后期生成操作”后,它将立即开始“执行相关性后期生成操作的扫描”,我们将更详细地了解相关性的含义。
后期生成操作完成后,您将看到设计工作室窗口。如果发现任何相关候选对象,您将能够在此窗口中查看它们。
您可以安全地单击“关闭”按钮,VUGen 将带您到已生成的代码。
窗口看起来如下:
如上图所示,编辑器包含易于理解、可读的代码。您可以查看录制时使用的参数。
VUGen 的左侧称为步骤导航器,它可让您了解“脚本”,而无需查看代码的粒度。例如,您可以阅读步骤,如打开 URL、花费思考时间和提交表单。这封装了与每个请求相关的所有参数。
您的脚本已生成,单击文件菜单,然后单击将脚本另存为以浏览要保存脚本的位置。如果您之前已经保存过脚本,VUGen 将自动建议最后使用的目录。建议的名称将是您开始录制时提到的名称。
全部完成。
现在,祝贺您已成功生成并保存了您的第一个脚本。
确定协议和协议顾问
您可能曾问过自己,为什么我们要使用 Web – HTTP/HTML 协议。我们如何决定应该使用哪种协议?答案并不那么简单。
作为回答这个问题的先决条件,您需要具备一套架构基础技能。如果您是初学者,您可以与拥有扎实的客户端架构和开发技能的人合作,为您的 SUL 开发产品。您可以与 SUL 的开发人员交谈,了解您的应用程序利用了哪些接口。这应该会引导您自然而然地找到用于虚拟用户脚本开发和协议选择的接口。
为了满足缺乏架构技能的初学者的需求,LoadRunner 在 LoadRunner 9.1 中引入了一项名为“协议顾问”的功能。虽然这让很多人的生活变得更轻松,但人们应该更多地依赖架构和开发技能,而不是协议顾问和从开发团队那里获取有关底层开发技术的信息。协议可能并不在所有情况下都建议正确的协议。
要使用协议顾问,请转到记录 => 协议顾问 => 分析应用程序
请参阅下面的快照:
这将打开 Protocol Advisor 的主窗口。如果您注意到,这有点像录制窗口。让我们看看下面的窗口:
由于我们使用基于 Web 的应用程序,因此请选择 Web 浏览器。
指定随后将调用的应用程序的 URL。工作目录可以保留原样,因为这只是 VUGen 使用的临时目录。确保您对此目录具有读写权限。
单击开始分析按钮。
会出现一个浮动条,有点类似于记录时间浮动条。看一下快照:
该过程将告知已用时间和触发的事件数。但是,这些信息不是必需的。此事件计数器的唯一好处是,您知道您的客户端 SUL 正在与服务器通信。
一次只分析一个业务流程是一种很好的做法,因为大型企业应用程序中的各种业务流程可能涉及各种协议。例如,某些应用程序中的仪表板可能有 Ajax 或 Flex 等,但这不会出现在登录页面上。
完成特定业务流程的执行后,您可以点击“停止”按钮。VUGen 协议顾问将提供有关协议建议的摘要报告。看看它是什么样子的:
您可以查看协议顾问的建议。这些建议可能是也可能不是最佳选择。
您现在已经学会了使用协议顾问。但是,这对初学者或需要“另一种意见”的情况可能会有所帮助 - 依靠您的架构意识、编程知识、开发技能和从开发团队获得的信息来决定协议。
录音选项
每当 VUGen 生成脚本时,生成的代码都基于可以在“录制选项”下找到的各种配置 - 或者您可以按 Ctrl + F7 查看 LoadRunner 中的录制选项。
在讨论所有配置之前,让我们先看一下录制选项窗口:
配置有多种类别,例如常规、关联、网络和数据格式扩展。让我们逐一了解其中最重要的配置。
一般 => 记录:
此主题需要详细了解。因此,将单独讨论。
一般 => 脚本:
看一下快照以了解一下:
你会注意到的 语言 下拉菜单已禁用。一个常见的误解是 LoadRunner 不会生成任何其他语言的代码。另一个误解是它需要许可证才能使用其他语言。
两者都是错误的。LoadRunner 会自行决定在生成脚本时使用哪种语言。在几乎所有情况下,您都会发现自己正在使用 C语言.
对于某些 Java 应用程序(如 Java 小程序)生成的代码将位于 Java脚本语言.
VUGen 将生成以下脚本: VBScript 语言 仅适用于使用 Visual Basic classic(MS Visual Studio 2002)开发的应用程序
脚本选项:
您可以选择“在交易结束后生成固定思考时间”。这意味着,无论用户等待多长时间,生成的思考时间(延迟)都将等于指定的值。该值以秒为单位。
动作中的最大行数 file 指的是 VUGen 生成操作的最大行数。如果脚本较大,VUGen 将自动创建新操作。默认设置为 60,000。可以指定的最大值为 65,000
处理以下桌面应用程序时,您可能会发现此配置很有用: Oracle 在后端。
常规 => 协议 让您可以选择或取消选择在开始录制时选择的任何协议
本质上,这只会在您希望 重新生成脚本.
看一下屏幕:
当您在录制脚本时使用了多协议时,此功能非常有用。您可以重新生成脚本并取消选择您不需要的协议,并获得新脚本,而无需重新录制。
一般用途总体评估 => 代码生成:
看一下下面的快照:
此配置告诉 VUGen 在记录时查找关联候选对象。如果您不希望自动关联,那么您可能希望关闭此功能。
相关性 => 配置:
看一下下面的屏幕截图并熟悉该屏幕。
虽然自动关联只能帮助 5% 到 10%,但您可以选择“规则扫描”和“自动关联找到的值”。但是,如果您的脚本无法运行,您可以考虑通过单击按钮恢复为默认值。
相关性 => 规则:
转到规则,在这里您可以看到 VUGen 用于查找关联候选的各种规则。如果您知道应用程序 (SUL) 使用什么作为参数,则可以添加自定义规则。但是,这是记录时间设置的高级用法。如果您是初学者,您可以放心跳过此主题。
HTTP 属性 => 高级:
该框架提供与HTTP绑定相关的各种设置。
重置每个操作的上下文,启用此选项可指示 VUGen 在录制之前将操作之间的所有 HTP 上下文重置为其初始状态,为录制会话提供一个干净的开始。默认情况下启用此选项。
除非特别需要,您可以保留其余配置不变。
网络 => 端口映射:
此帧应保持完整。如果您正在录制桌面应用程序,则可能必须选择 WinINet 级别数据。
您可以进入选项(只要您使用套接字级数据)并选择各种选项,如 SSL 版本或其他类型的安全套接字层。如果您是初学者或不需要这些选项,则可以跳过。查看一下以熟悉屏幕。
现在您已经完成了大部分记录时间选项,让我们进入下一个主题并了解 HTML 和基于 URL 的脚本之间的区别。
基于 HTML 和基于 URL 的脚本之间的区别
您可能已经注意到可以选择基于 HTML 的脚本或基于 URL 的脚本。查看快照以回顾一下。
那么这个选项是什么?该选哪一个?
- 基于 HTML 的脚本 基于用户操作,脚本包含与所采取的操作直接对应的函数。让我们来理解一小段代码的示例:
计费示例:
web_link(“Enterprise Systems Performance", "Text=Enterprise Systems Performance," "Snapshot=t4.inf", LAST);
- 基于 URL 的脚本 基于用户操作向服务器发送的 HTTP 请求。
以下是 URL 模式的代码示例,用于执行与上述相同的操作(在 HTML 模式下)
计费示例:
web_url(“Enterprise Systems Performance", "URL=/esp.html", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=/atc?. . . , "Snapshot=t4.inf", "Mode=URL", LAST);
提示: 最好先自己试验一下再继续。更改录制时间设置,录制两次相同的脚本,即一次使用 HTML 模式,一次使用 URL 模式 - 然后比较两者。保持脚本简短,这样您就可以了解差异。
我们如何决定使用哪种模式?
让我们了解这两种模式的优缺点,以便了解在某些情况下哪种模式更合适:
HTML 录制的好处
- 减少捕获动态值的需要
- 动作标签值和隐藏数据不是硬编码的
- 它们在播放过程中从内存中检索
- 如果它们是动态的,VUser 仍然运行
- 脚本的大小与业务流程一样大——每页一个步骤
HTML 录制的缺点
- 脚本的可扩展性较差
- 播放过程中搜索内存(缓存)
- 需要更多内存
- 需要更多 CPU 能力
URL 记录的好处
- 灵活性
- 经验 Java 页面上的小程序和 ActiveX 对象
- 能够在 UNIX 上重放
- 可扩展性
- 脚本比 HTML 脚本更具可扩展性,因为它们需要的资源更少
URL 记录的缺点
- 脚本需要更多相关性(不会从缓存中检索任何内容)
- 上下文相关检查不起作用(解析器被禁用)*
- 脚本很大(所有图像和帧都记录为单独的步骤)
以下是一个简单的例子:
HTML 模式 | URL 模式 |
---|---|
直观易懂。 | 不像 HTML 脚本那么直观。 |
脚本更小,请求被封装并且易于理解。 | 脚本很大,包含对每个图像、css、html 等的调用,因此很难理解。 |
可扩展 | 更具可扩展性和有效性,可创建 负载测试. |
重新生成脚本的使用
假设您想录制刚刚录制的相同脚本,但录制时间设置不同。在这种情况下,您可以使用重新生成脚本功能。
您可以通过“记录”=>“重新生成脚本”或使用热键 Ctrl+Shift+R
单击菜单后,VUGen 会向您发出警告,提示您现有脚本以及对现有脚本所做的所有更改都将丢失。警告消息如下所示:
您也可以单击“选项”从这里打开“记录时间选项”。
单击“确定”继续重新生成脚本。
播放脚本并理解日志
保存脚本后,您可以点击 重播或按 F5。
您可以在工具栏中找到此按钮:
您需要确保服务器正在运行(这是应用程序正常运行所必需的)
当您重放脚本时,您会注意到,与 QuickTest Professional 不同,它不会打开任何浏览器进行重放。请记住,此执行将仅模拟 SUL 上的 1(单个)用户负载。此执行的目的是确保您的脚本正常运行。
提示: 您需要验证应用程序本身的影响。例如,如果您要创建记录,请转到应用程序并手动验证您的脚本是否确实创建了记录。您的脚本很可能不会再由另一个测试或 QA 团队测试,因此您需要非常小心地处理脚本并确保对其进行了彻底的测试。
您可以让重放日志保持活动状态,因为这将有助于识别相关性候选对象以及您可能遇到的任何错误和警告。由于生成日志需要大量资源,因此最好在完成脚本调试并将其用于场景后将其关闭。
录制和播放过程中生成的文件概述
让我们关闭 VUGen 并查看它在脚本文件夹中创建的文件。
VUGen 创建一系列配置文件、数据文件和源代码文件,其中包含 VUser 运行时和设置信息。脚本每次迭代的结果都单独存储。如果您至少执行过一次脚本,您会注意到一个名为 result1 的目录。此目录供系统使用,测试人员应忽略它。
您需要了解的重要文件:
VUGen 将为每个操作创建一个 .c(C 语言代码文件)。因此,最后,您将拥有 vuser_init.c、vuser_end.c 和 Action.c – 如果您创建了更多操作,您也会看到相应的文件。例如,myAction.c
重放日志保存在名为 output.txt 的文件中。如果您多次替换它,output.txt 将包含最后的执行日志,而 output.bak 将包含上次运行之前的日志。
.usr 文件将包含您自定义的所有运行时配置。即使您将所有配置保留为默认配置,此 usr 文件也将包含相关信息。此文件还包含用于创建脚本的 LoadRunner 版本。如果您正在阅读无法记住版本号的旧脚本,此信息将非常有用。
您将看到一个名为“数据”的文件夹。此文件夹保存事件的图像以及代码的副本。当您“重新生成”代码时,VUGen 会使用这些文件。