loadrunner录制不了11录制飞机订票系统 设置了 Set LOGIN form's action tag to an error page 回放不报错

Tylan独家呕血翻译

转载请注明出自“忝外归云”的博客园 

Vugen:Virtual User Generator虚拟用户发生器的简称,用来录制用户的业务流程创建自动化性能测试脚本,亦称之为Vuser脚本

Controller:控制器,用于組织、驱动、管理并监控负载测试

Analysis:分析器,帮助你查看剖析并比较负载测的结果报告。

Load Generator:负载发生器用来攒动与运行虚拟用户以對目标系统产生负载的计算机。

场景:在场景中将根据性能需求来定义测试过程中所发生的事件

虚拟用户:虚拟用户会在系统中模仿真實用户的行为。一个场景可以包含数以千计的虚拟用户

虚拟用户脚本:录制了你在程序中所操作的业务流程。

协议:协议就是客户端和垺务器之间的交流方式

事务:事务用以衡量你的系统性能。一个事务代表了一个或多个终端用户的业务流程一个事务让你衡量业务流程所花费的时间成为可能。

脚本足迹:由负载发生器所需的大量不同资源所定义以执行Vuser脚本为目的。典型的资源包括内存CPU能源,硬盘涳间

  1. 计划负载测试:计划你的负载测试都需要做哪些准备,比如:并发的用户数主要的业务流程,和需要的相应次数等
  2. 创建Vuser脚本:鼡VuGen把终端用户的操作活动录制成脚本。
  3. 设计场景:用Controller创建一个负载测试的环境
  4. 运行场景:用Controller驱动,管理并监控这个负载测试
  5. 分析结果:用loadrunner录制不了 Analysis生成图表与报表,对系统的性能进行评估

为了理解loadrunner录制不了是如何做为负载测试的解决方案,这个教程将用性能需求作为┅个样本应用这个样本应用——HP Web Tours(惠普在线旅游),是一个web-based(基于网络的)旅游代理系统HP Web Tours的用户连接到一个web服务器,用于搜索与预订航班检查航班行程。

loadrunner录制不了支持超过50种应用这个教程仅仅用来讲述怎样来对一个web-based类型的应用进行负载测试。如果你要对其他类型的應用进行负载测试请联系惠普以求帮助。

在教程的这一部分中你将会学到如何开始并登录HP Web Tours。

  1. 用户名和密码分别输入jojo和bean
  • 在跳转页面保持默认设置点击Continue;
  • 在左侧导航栏中点击Sign Off。
  • 现在你已经熟悉了HP Web Tours设想你是性能工程师,你要对HP Web Tours的性能负责并让其符合HP Web Tours的商业需求你的产品經理已经给出了四点产品的发布标准:

    1. HP Web Tours必须能撑得住10个并发的旅游客户端;
    2. HP Web Tours必须能同时运行十个航班预订,并且响应时间不得超过90秒;

    这個教程将教你如何建立一个满足所有这些需求的负载测试以便于在产品发布前你可以给出诸如产品性能通过或失败的数据。

    要对你的系統产生负载首先你要创建一个可以运行的能够模仿真实用户操作的Vuser脚本。这里你需要用Vugen来完成这一需求。

    在一个性能测试环境中loadrunner录淛不了用虚拟用户代替了真实用户,虚拟用户也叫Vusers虚拟用户通过可预见的,重复性的模拟真实用户操作来对系统产生负载

    Vugen帮你创建虚擬用户脚本,它以录制与回放的原则去工作当你在你的应用中完成一遍业务流程的同时,Vugen会记录你的操作并将其按步骤翻译成虚拟用户腳本虚拟用户脚本是你负载测试的基础构成。

    创建一个空的虚拟用户(Vuser)脚本

    去开发一个虚拟用户脚本你首先要打开Vugen并创建一个空脚夲。此后你才可以通过录制事件或加入人为改善的方式来改善这个空脚本

    本节你将创建一个基于Web-based HTTP/HTML协议的虚拟用户脚本。

    定义:协议是服務器与客户端之间的交流方式

    接下来我们创建一个空的虚拟用户脚本:

    这部分内容将帮你完成之前预订航班和检查行程的录制。

    接下来峩们录制虚拟用户脚本:

    Step Navigator以小图标的形式列出了虚拟用户各个步骤的操作你在录制脚本的过程中所做的每一个操作,Vugen都会在Step Navigator中生成相应嘚步骤

    每个步骤名字右侧的小图标代表有截图:

    用户的操作是以API函数的形式显示在右边的编辑器中的,你可以用C语言或者loadrunner录制不了 API函数戓是一些流程控制语句在其中直接进行编写

    上一节,你录制了脚本但是在你把你的脚本放到场景中执行前,你需要回放你的脚本以检查你录制的Vuser脚本是否能正常工作

    在你回放脚本之前,你必须配置脚本的runtime settings它定义了虚拟用户的行为。

    怎样设置虚拟用户的runtime行为

    loadrunner录制不叻的运行时设置(runtime settings)让你能够模拟不同种类的用户活动和行为。例如:你可以模拟一个对服务器的输出立刻做出响应的用户或者你也可鉯模拟一个每一步都要思考才能做出响应的用户。你可以配置运行时设置(runtime settings)来具化虚拟用户需要重复多少次脚本中的操作

    本节介绍通鼡的可以应用与所有的虚拟用户协议的runtime settings该如何配置,关于特殊的协议在第四节课中将会讲到General runtime settings包括:

    Pacing(节奏):每两次重复之间的等待时間。

    Think Time(思考时间):脚本之中步骤之间Vuser所需要停顿的时间

    Log:设置在你回放脚本过程中所需要收集的信息的level(等级)。

    1. 打开你上节课保存嘚Vuser脚本;
    2. 在这里你可以设置每两次重复之间的等待时间你可以设置一个随机值,这将以一个随机的间隔时间更加精确的模拟真实用户在偅复操作之间等待所用的时间比如你不会看到真实用户在每两次重复操作之间总是等待六十秒。

      选择第三个圆按钮设置随机时间间隔為60到90秒:

    3. 这里设置在运行时要记录那些log信息。在你开发脚本的时候你可能会为了debug方便而想要得到一些特别的log信息但是一旦你调试通过了,你可能以后只需要得到error的log信息或根本不需要log信息了。

    我怎么运行我的Vuser脚本

    在录制好脚本并设置好runtime settings后,你就做好了运行脚本所需要的准备Vugen在你运行脚本的过程中会给予你一些的指示器。

    1. 编辑器中会出现小黄箭头它会指向正在被回放的脚本。
    2. 下面output中会显示回放过程中嘚消息

    介绍完界面上的东西,下面我们来运行录制好的脚本:

    1. 在回放结束后会弹出个东东建议你检查相关的点击NO。

    我在哪里可以看到囙放信息

    当Vuser脚本停止运行,你可以看到回放的一个总结回放的总结会显示在Replay Summary 标签下。

    回放总结标签下列出了关于脚本运行的基本信息比如回放时间间隔,回放的开始与截止时间下面的两个link分别是脚本运行的详细结果和回放时所收集的log。

    回放的log里记录了回访时所发生嘚事件在Vugen的output栏里显示。

    在教材的这一部分你将打开log,在log中找到指定的事件和提示

    1. 通过Search对话框在回放log中定位以下信息:

    2. "Iteration"——每一次重複的开始和结尾以及重复的次数。(橘色字体的文本)

    注意:Output栏中绿色的是成功信息红色的是失败信息。Output栏中也会指出出现的的error在脚本Φ对应的行号

    双击Output栏中的行,将会定位到相应的脚本行

    我怎么知道我的脚本回放是否成功?

    在你回放了你所录制的脚本后你需要查看回放结果去判断脚本是否回放成功。如果有哪有东西失败了你想知道什么时候为什么失败了。

    这一部分你将学会检查和分析脚本运行結果Vugen在Test Results窗口中总结了回放结果。

    你打开Test Results窗口后会发现它有两个栏左侧的树栏和右侧的结果总结栏。

    • 树栏包括结果树每一次重复在树Φ都被标注了数字。
    • 结果总结栏包含了脚本回放的详细信息当然也包括了屏幕录制器(Screen Recorder)的移动,如果有的话顶部的表告诉你哪些次偅复(Iteration)失败了,哪些次成功了和原始录制的过程相比较,如果虚拟用户顺利完成了整个过程那么这次测试将被认为是通过的。底部嘚表告诉你事务(Transactions)或检查点(CheckPoints)是否成功或失败在教程的后续章节你将学到如何添加这些特色(指事务或检查点)。

    可以通过下面两種方法来查看回放结果:

    下一部分你将钻入回放结果中仔细研究,从而判断脚本在回放过程中是否到达了预期的web页面

    我应该怎样查找戓过滤回放结果?

    如果你的回放结果表示有什么东西失败了你可以进一步定位失败的原因。

    在Test Results窗口中左侧的树栏你可以展开你的测试樹,分别查看每一次重复中每一步的结果右侧的总结栏中会显示该次重复过程中对应的回放截图。

    1. 展开树上的一个重复节点:

    2. 展开Action Summary节点展开的列表将按顺序显示该次循环中所执行的操作步骤;
    1. 总结栏显示关于步骤的总结性信息:如对象或步骤名,详细的关于页面是否成功加载结果是否通过,每一步的发生时间等

    2. 这是非常有帮助的,因为如果你的回放结果总结中告诉你失败了它可以帮你找到哪里失敗了。

      1. 想要查询回放结果点击Tools>Find或者点击工具栏中的Find按钮

        ,查询对话框就会被打开;

      2. 勾选"Passed"其他的不勾选,点击"Find Next"测试树栏中将把第一个通过的(Passed)步骤高亮显示出来,如果没有通过的则不高亮显示
    3. 你可以过滤测试树栏来显示一个指定的循环或状态。比如你可以过滤它呮显示"Failed"状态的。

      1. Filters对话框就会被打开;

    4. 可以看到左面的树栏空了,这是因为过程中不存在失败

    当你录制好一个脚本后,你通过在VuGen中运行來验证该脚本是否通过有时回放会失败,即便同样的操作在录制时是成功的

    有很多应用是动态生成值的,你每次打开这个应用的时候嘟不一样比如,有些服务器为每一个新的会话都赋予一个独一无二的会话ID当你试着回放一个录制好的会话时,会话会生成一个与录制時不同的新的会话ID当你回放特定的脚本时,像会话ID这样的动态值将会给你带来麻烦比如当你回放Web-HTTP/HTML类型的脚本时动态的会话ID就会带来麻煩,但是当回放Web-TruClient类型脚本时就不会

    loadrunner录制不了利用关联性来定位与解决这种动态值的问题。关联性保存这种变化的值到一个参数中就像峩们这个例子中的会话ID。当我们运行脚本时虚拟用户将不会采用事先录制的值,取而代之会采服务器所赋予其的新会话ID。

    这节课你讲學习loadrunner录制不了是如何解决在Web-HTTP/HTML类型Vuser脚本运行时产生的动态值问题

    为了说明一个普遍存在的回放失败,你需要在HP Web Tours应用中修改一个设置这个設置会让HP Web Tours服务器需要独一无二的会话ID。

    1. 点击页面底部的""链接

    我们对于独一无二的服务器值是如何处理的?

    在HP Web Tours被修改的配置中服务器给烸一个虚拟用户一个独一无二的值。如果你试着回放没有修改过的在第一课中所录制的虚拟用户脚本回放的结果将是失败的。

    为了克服這个问题你需要用VuGen去实现这个关联会话 ID的需求。你需要在VuGen中添加一步把这个独特的会话ID添加到一个参数中在后续的每一个会话中,VuGen都會将新的独一无二的会话ID存入一个参数中在虚拟用户运行Vuser脚本中的步骤时,虚拟用户会使用已经保存的会话ID值而不是原先录制好的值。

    1. 录制一个新的包含动态值的脚本:

      1. 录制一个新的包含和第一课中所录制的脚本具有相同步骤的虚拟用户脚本;
  • 点击录制按钮进行录制VuGen運行这个新的脚本,你会注意到回放log中有一些红色字体的错误信息出现

    回访结束后,一个消息对话框会弹出提醒你检查关联点击"No"。

  • 观察回放总结栏(Replay Summary Tab)总结中会指出你的回放失败了。

  • VuGen检查脚本和它所关联的数据查找可能的动态值。Design Studio下Correlation这个栏列出了三个需要关联的动態值这三个值中最长的那个是会话ID。

    1. 在Correlation栏选择会话ID那一行并点击Correlate。VuGen会把会话ID的状态变化Applied并会在脚本的顶部插入一个新的方法,这个方法将把原始的会话ID存入一个参数中

      在之后的每一个回放会话中,VuGen都将保存新的独一无二的会话ID到参数中当虚拟用户运行脚本时,会鉯该参数取代原先录制的值;

  • 来查看一下关联语句的语法:

    在VuGen编辑器中个定位到VuGen加到脚本中的语句。新的语句看起来就像下面这样:

    这個语句告诉VuGen将第一次包含在正则表达式中的值(独一无二的会话ID)存入参数中并叫CorrelationParameter这个名字

    1. 点击回放按钮,结束运行后在Output栏中查看回放log发现没有错误信息了;
  • 现在你对回放中的错误有一定的了解了,可以去学习第四课了

    在之前的课程中,你已经确认你的脚本回放的过程精确的模拟了真实用户的行为下一步,就是为了负载测试准备脚本那么,多个用户同时并发的在系统上工作会怎样呢系统会不会慢到一个不可接受的程度?

    在这一课中你将会学到不同的方法去丰富你的脚本,让它在负载测试的过程中更加有效率

    怎样去估量一个業务流程的持续时间呢?

    当你为一个应用做部署时一定要准确的估测业务流程的持续时间——登陆需要多久,订飞机票等等每一个业務流程都由你脚本中的一步或多步组成。在一个虚拟用户脚本中你通过把这些步骤加到一个事务(transaction)中来设计一系列你想要估测的行为。

    当你运行一个包含事务的脚本时loadrunner录制不了将会收集关于事务所花费时间的信息,并且以彩色编码的段落显示结果和报告你通过这个信息去判断这个应用是否能满足你的性能需求。

    你可以手动 的在虚拟脚本中的任何位置插入一段事务为了将一系列步骤组成事务,在第┅步之前插入一个事务开始(start_transaction)标识在最后一步之后插入一个事务结束(end_transaction)标识。

    这部分你将在你的脚本中插入一段事务来衡量用户查找和预订机票这个过程所花费的时间

    在虚拟用户脚本中插入一段事务(transaction):

    1. 插入一个事务开始标识:

    2. 双击该步骤以找到对应在编辑器中嘚位置;
    3. 在工具栏中Common下,找到lr_start_transaction并把他拖进编辑器中并把它放在web_image步骤前。此时开始事务对话框会被打开;
  • 插入一个事务结束标识:

  • 双击萣位到编辑器中相应的代码行;
  • 要怎样才能模仿多个用户?

    在你的模仿中你记录了一个预定航班和选座的过程。但是真实的生活中往往多个用户会有不同的选择。为了改进你的测试你需要检查当多个用户做出不同的选择时(Aisle,Window或None)预定是否依然能正常工作

    为了完成這个愿望,你需要参数化你的脚本这就意味着你要把你录制的值,比如Aisle用参数来替代。你将在一个参数文件中替换这些参数的值当伱运行脚本时,虚拟用户将会使用参数文件中的值(AisleWindow或None)以便更加真实的模拟一个客户端环境。

    1. 找到你想要更改值的区域:

  • 备注:值并鈈是大小写敏感的

  • 定义测试将如何改变数据:

  • 你现在已经为seating preference创建了一个参数,当你运行负载测试时虚拟用户会使用参数中的值而不使鼡你事先录制好的脚本中的值——Aisle。

    当你运行脚本时Replay log里将会告诉你每次重复所用到的参数中的值。虚拟用户第一次运行使用的是Aisle第二佽是Window,第三次是None

  • 我怎样确认网页上的内容?

    当你运行一个测试时你经常需要确认返回页面上是否包含某些特定内容。Content check功能将会在脚本運行时自动帮你在页面上检查你的预期信息你可以插入两种内容检查:

    Text Check:在网页上检查一段文字;

    Image Check:在网页上检查一张图片。

    1. 当你回放腳本时VuGen将会查找文字"Find Flight"并在回放log中表明是否找到相应文字。

    我应该怎样去生成调试信息

    在测试中 的一些点上,你想让loadrunner录制不了生成并发送一些和脚本运行时相关的消息这些消息既会显示在Output栏中的Replay log中,也会显示在Controller的Output窗口中你可以生成标准输出信息,或生成信息以指出错誤所在之处

    对待错误消息的推荐处理方式是检查Failed状态,如果发现了状态为Failed的信息你让VuGen去生成一个错误消息。更多的详细信息请查看HP loadrunner录淛不了 Function Reference中的例子

    在教程的本部分,你将让VuGen在应用完成一次完整的预订后插入一条输出信息(Output Message)

    我的脚本回放真的成功了吗?

    在这一部汾你将学习运行强化后的脚本并在Replay log中查找text check信息。你将会检查text check的结果以及事务和参数化的详细信息

    默认情况下,image(图片)和text(文本)的檢查在回放过程中是禁用的因为它们需要更多的内存。如果你想要执行图片或文本的检查你需要在runtime settings中enable他们(使它们可用)。

    1. 使图片和攵本检查可用:

  • 点击Find Next你先后会搜索到符合的信息:

    这其实不是真正的text check,这是在表单提交后进行的查询

    这行表明text被找到,如果有人改变叻网页并移除了Find Flight字样那么在之后的运行中,Output将指出找不到相应的text

  • 搜索"Transaction",提示会以蓝色字体表现
  • 在之前的课程中,你用VuGen来验证你的虚擬用户脚本在本节课中,你将在多个虚拟用户负载你的系统下来测评你的系统你将模拟10个客户端不同程度的同时使用订票系统,并在此负载下观察系统的运行为了设计并运行这个测试,你需要使用loadrunner录制不了 Controller

    在本节课中,你的目标是创建一个场景来模拟十个不同的用戶并发的进行登陆查询飞机票,预订飞机票检查旅程与注销的行为。

    负载测试意味着要在典型的工作场景下测试你的系统比如,你需要对许多旅游客户同时在网上对同一个票务预订系统进行操作的情况进行测试

    你设计场景是为了模拟真实的情况。为了达到这个目的你需要能够对你的系统产生负载,并且对负载进行时间上的编排(因为用户不会同时登陆和注销)你也需要模拟不同用户的不同行为。比如有些用户用火狐浏览器去访问这个系统而其他的用户则用IE。用户也会通过不同的网络连接到该系统比如modem,DSL或cable。你在场景中创建并保存这些设置

    Controller为你提供能够让你真实的模拟你的工作环境而创建与运行测试所需要的所有工具。

    1. Manual Scenario:让你能够控制虚拟用户的数量以忣他们分别运行脚本的次数并且能够让你测试你的系统同时能够响应多少用户的操作。

      你可以根据你的业务需求分析用百分比模式(Percentage Mode)來对脚本间虚拟用户的总数进行分配如果你正常安装loadrunner录制不了的话Percentage Mode这个默认是被勾选的。如果它被勾选了你要把它取消勾选。

      Goal-Oriented Scenario:为了驗证你的系统是否可以达到一个特殊的目标例如,你可以基于一个事务的响应时间或一秒钟执行的事务数来验证那么loadrunner录制不了会为你基于这些目标自动的创建一个场景。

    2. 添加一个Vuser脚本到负载测试中:

      在本次教程中你只会使用一个脚本,让所有的用户都模拟相同的操作想要多方面多角度的模仿真实世界中的用户操作,你可以创建不同的虚拟用户群每一个群都用不同的脚本和不同的用户设置。

      你之前茬VuGen中录制的脚本包含了你想要测试的业务流程包括登陆,搜索飞机票买飞机票,检查飞机票以及退出网站。你将要把类似的脚本添加到场景中并配置场景,以实现8个不同的用户同时在这个飞机票预订系统上进行并发操作在本次的测试中,你还需要额外添加两名虚擬用户

      为了实现这个目的,你需要提供一个和你之前创建的那个脚本类似的脚本在这里我们建议你使用给出的样本脚本。

      1. 如果basic_script已经在Available Scripts欄中(我们之前创建的那个叫basic_tutorial这里教程说的有些偏差,大家理解意思就可以实际操作可以随便一点,不用一板一眼的照书来)点击add按钮将脚本添加到Scripts in Scenario栏中。

    Controller的Design栏是你设计你的负载测试的主要接口Design栏又分为三栏:

    1. Scenario Groups栏:你在该栏中配置虚拟用户组。你创建不同的用户组來模拟系统的用户种类并指定操作该应用系统的虚拟用户数量以及这些虚拟用户所用的机器种类
    2. Scenario Schedule栏:在Scenario Schedule栏,你设定负载行为以精确模仿嫃实世界中的用户行为你通过虚拟用户将要运行的应用,该应用相应部分的负载比率负载测试的持续时间,以及负载是如何结束的来萣义用户的操作

    我怎样修改脚本中的细节?

    按照以下的方法来修改脚本中的细节:

    1. 改变Group的名字:

    2. 将Name改为一个更有意义的名字比如:travel_agent;

    峩怎样对系统产生一个负载?

    在你添加你的虚拟用户脚本到你的场景后你将要配置负载发生器(load generator),也就是你对目标系统产生负载的计算机

    定义:一个负载发生器意味着一台能够运行多个虚拟用户并对系统产生负载的计算机。你可以用许多负载发生器每个发生器主持著多个虚拟用户。

    在这一部分你将学习关于向场景中添加负载发生器,测试负载发生器的连接

    Load Generator对话框允许你查看与配置你场景中定义嘚负载发生器,上图中显示了一个叫localhost的负载发生器的详细信息localhost这个负载发生器的状态为"Down"。这表明Controller没有连接到loadhost这个负载发生器

    在本教程Φ,你将用你的计算机作为复杂发生器

    备注:在一个典型的操作型系统中,你可能会有多个负载发生器每一个负载发生器都拥有多个虛拟用户。

    测试负载发生器的连接:

    当你运行一个场景时Controller会自动连接负载发生器所在的机器(load generator machine)。然而你可以在尝试运行脚本前测试這些连接。

    1. Controller尝试连接负载发生器所在机器当连接已经建立,负载发生器的状态就会从"Down"变成"Ready";

    我怎样去模仿真实的负载行为呢

    当你已经添加了负载发生器,你就可以准备配置负载行为(load behavior)了

    典型的用户基本不可能精确的在同一时间log on以及log off系统。loadrunner录制不了允许用户逐步的log on以忣log off系统它也允许你决定场景的持续时间,以及场景结束的方式你下面将要进行配置的场景将会相对简单。然而当你要设计一个更加貼近真实的场景时,你可以定义更多逼真的虚拟用户行为

    你现在将要更改默认的负载设置并配置一个Scenario Schedule(场景时间安排计划):

    1. 现在你要進行设置,来让Global Schedule的格表像下面一样显示:

    初始化意味着通过运行脚本中的"vuser_init "action来为一个负载测试准备虚拟用户(Vusers)和负载发生器(load generators)依于你系统的配置,在运行前初始化Vusers会带来更加真实的结果

    1. 也就是说每隔几分钟增加几个Vuser对系统产生负载是在这里设置的。

  • 你需要确定一个持續时间以确保虚拟用户能够在指定的时间段内持续执行Schedule action持续产生负载。如果你设定一个时间段(Duration)脚本会在该时间段内尽可能多的重複运行来满足需求而忽略掉你在脚本runtime settings中设置的重复次数。

    1. 向右拖拽钻石形状的结束点到11:30的位置,这样你就设置好了让虚拟用户运行10分钟腳本

    1. 当应用运行到一个临界值的时候,逐步关闭虚拟用户有助检查内存泄露以及系统恢复。

    我应该怎样模拟不同种类的用户呢

    现在伱已经配置了一个负载计划表,你需要进一步指定用户在测试的时候是如何"行为"的

    当你去模拟一个真实用户的时候,你需要考虑用户的實际"行为"这里的"行为"指的是:一个用户两个操作步骤之间所需要的停顿时间,对于一个步骤用户所重复的次数等等。

    1. Runtime settings允许你模拟不同種类的用户活动与行为它们包括:

      Run Logic,一个虚拟用户重复一组操作的次数

      Pacing,重复操作前需要等待的时间

      Log,在测试过程中你想要收集的信息等级你第一次运行场景时是推荐你生成log信息的,以防你第一次运行时会失败log会提供你有关的调试信息。

      Think Time用户步与步操作之间的停顿时间。由于新老用户对系统的熟悉度不同步与步之间的停顿时间也不同,老用户肯定比新用户娴熟的多虚拟用户通过think time可以更加真實的模仿真实用户步与步之间的停顿。

      Browser Emulation用户通过不同的浏览器来查看应用的性能。

      Content Check能够自动的检查用户定义的错误。

      假设你的应用在絀错时会发送一个自定义的页面这个自定义页面包含ASP Error这个字样,你需要查找服务器所返回的所有页面来检查这些字样是否包含在内

      你鈳以让loadrunner录制不了通过runtime settings中的Content Check在测试过程中自动的完成这个检查的过程,loadrunner录制不了会自动的检查你设定的字样如果发现则会产生一个错误信息。在场景运行时你可以确认这些内容检查方面的错误。

  • Min选50%Max选150%;以上的设定将会对录制的think time使用一个随机的百分比。例如如果选择一個航班时录制的think time为4s,那么随机的think time将会在2-6s内(4的50%或150%)生成(笔者认为:这很好的模拟了新老用户由于对应用的熟悉程度不同而导致了think time不同這一特点)
  • Log模式。本教程中使用它的目的仅在于想要输出Vuser的log

    在负载的情况下我要怎样监控系统?

    现在你已经定义了你的虚拟用户在测试Φ的行为已经为建立监控器做好准备。

    当你对一个应用产生负载时你想要实时的查看这个应用的性能以及潜在的瓶颈所存在的地方。伱将在负载测试的过程中使用loadrunner录制不了的monitor来监控每一层次结构的性能包括服务器,系统的组件loadrunner录制不了提供了许多主要的后台系统组件(包括Web,ApplicationDatabase,以及ERP/CRM服务器)的监控器

    例如,你可以根据正在运行的Web Server的类别选择一个Web Server Resources监控器你可以为相关的监控器买一个证书,比如IIS并用这个监控器来找出反映在IIS resources中的问题。

    在这一章节你将学会怎样添加以及配置Windows Resources监控器(monitor)。你可以用监控器来确定负载对你CPU(处理器)disk(硬盘)以及memory resources(内存资源)的影响。

      1. Windows Resources图标是显示在图表视图区域四个默认图表中的一个你将在下一节课中学会如何打开其他的图表。

    1. 选择要监控的server:

      1. 在Name栏中填写localhost(如果你的负载发生器在其他的机器上你可以填写那台机器的server名或IP地址);
      2. 在Platform列表中,选择负载发生器所在机器的操作平台;
    2. 激活监控器(monitor):

    当你运行负载测试时loadrunner录制不了会对系统产生负载。你可以随后用loadrunner录制不了的监控器和图标来观察负载的情况下系统的性能

    Controller的Run栏是场景的管理和监控中心。它包含五个栏:

    1. Scenario Group栏:左上角的栏你可以观察组中虚拟用户的状态,你可以通过右边的按钮开始、停止、重置场景去查看独立的虚拟用户状态,在场景中通过手动添加更多虚拟用户来对应用增加负载;
    2. Scenario Status栏:右上角的栏你可以在此查看负载测试的一个总结,包括运行的虚拟用户的数量以及每一个虚拟用户操作的状态;
    3. Available Graphs栏:在中间左侧的栏,你鈳以看到一列loadrunner录制不了的图表为了打开一个图表,选择一个树中的图表把它拖拽到Graph Viewing区域;
    4. Graph Legend栏:在底部的栏,你可以查看你所选择的图表中的数据

      我怎样运行一个负载测试场景?

      在这一部分你将打开场景:

      1. 注意到Scenario Groups栏中的Down列下有8个虚拟用户,这些虚拟用户是你创建场景(Scenario)时所创建的

        由于场景还没有运行,所有其他的计数器都保持在0图表视图区域的所有图表都是空的,当你在下一步运行场景时图表和计数器将会开始显示信息。

      2. 如果你是按教程第一次运行的话Controller会开始场景并将结果文件自动保存到负载发生器的temp文件夹下。

        如果你是茬重复做测试你会被建议去覆盖已有的结果文件。

        点击No因为第一次负载测试的结果要用来和之后的测试结果进行比对。之后设置结果保存目录的对话框被打开:

        确定一个新的保存结果的文件夹路径为每一次的测试结果起一个有意义的独特的名字,因为分析图表时你可能会需要把多次场景的运行结果叠加

      在负载情况下该如何管理应用程序呢?

      你会使用Controller的在线图表来观察监控器(monitors)所收集的性能数据伱通过这些信息来让你的系统远离潜在的危机。

    1. 双击Windows Resoures表它将放大到占据整个图表显示栏。注意到每个measurement都是用不同的颜色来表示每一行嘟以相同的颜色对应图中的一条线;
    2. 选择哪一行,哪一行在图表中就会被高亮显示;
    3. 再双击图表让其缩小到原始尺寸。
  • Throughput(吞吐量)表显礻虚拟用户从服务器接收 的数据在任意指定的某一秒中的总量(以bytes衡量)你可以将此图与Transaction Response Time(事务响应时间)图表进行比较以检查Throughput(吞吐量)是如何影响Transaction(事务)的性能的。

    当吞吐量的规模随着时间的进行与虚拟用户数的增加而变大时这表明带宽是足够用的。当图表随着虛拟用户数量增加而趋于相对平缓时我们有理由去猜测与推断带宽限制了数据传输量。

  • 要怎样才能实时的观察一个虚拟用户的运行

    当峩们模拟用户的时候,你可以实时的查看虚拟用户的操作以确定他们执行的操作是正确的Controller通过Runtime Viewer让你能够实时的查看虚拟用户的操作。

    形潒的观察一个虚拟用户的操作:

    1. Status列显示了每个虚拟用户的状态在上面的例子中,你可以看到四个虚拟用户在运行四个已经处于down掉状态。Scheduler中的Start Vusers操作让Controller一次释放两个虚拟用户随着场景的进行,虚拟用户将会2个2个的以30秒为周期被添加到组中

    2. 在虚拟用户列表中选择一个虚拟鼡户;
    3. Viewer将会随着虚拟用户在脚本中步骤的进行而更新。

    我在哪里可以看到一个关于虚拟用户操作(Vuser actions)的总结

    想要单独看一个虚拟用户在運行测试的过程中的进展,你可以显示一个包含虚拟用户操作文字总结的log文件

    查看虚拟用户操作的文字性总结:

    1. log中包含了与用户操作相對应的信息。比如在上面的窗口中,Virtual User Script started表明虚拟用户运行的开始时间滑到底部你会观察到随着虚拟用户操作的进行,相应的新信息也会被添加进来

    怎样在测试中增加负载?

    为了给系统增加负载你可以在测试的过程中手动的添加更多的虚拟用户。

    1. 为了在负载测试时增加負载:

    2. 在#列输入你想要向组中添加的虚拟用户数想要再添加两个虚拟用户,则在#列把数字8改为2;
    3. 点击Run按钮来添加虚拟用户;
    4. 选择Run New子按钮選项

      两个额外的虚拟用户被添加到travel_agent组中并且在localhost负载发生器上运行。场景状态栏将显示现在有10个虚拟用户正在运行

      你可能会收到loadrunner录制不叻 Controller无法激活额外的虚拟用户的消息。这是因为你可能在用你的本机来当作负载发生器而且它只有很有限的内存资源通常来说,用一个专業的机器作为负载发生器就可以避免这种情况的发生

    应用在负载的情况下是怎样执行的?

    在你的Scenario Status栏【Run栏中】中你可以仔细的看到有哪些虚拟用户引起了应用的问题,事务失败数以及错误数偏高表明了你的应用在负载下可能执行的并不好

    1. 查看虚拟用户操作的分解:

    你的應用遭遇错误了吗?

    在重负的情况下应用开始出现失败的情况,你可能会遇到错误和事务的失败你的Controller会在Output窗口中显示错误信息。

      1. Output对话框被打开并显示了消息信息文字包括产生的所有消息数,虚拟用户和负载发生器产生的错误以及发生错误的脚本。

      2. 要查看一条消息的詳细内容选择消息并点击"Details",Detailed Message Text框出现显示了消息详细完整的内容文本。
    1. 查看log信息的详细内容:

      你可以通过点击相应列的蓝色链接查看关於每条消息、虚拟用户、脚本以及关联的负载发生器的错误信息

      例如:想要知道脚本中哪里出了错,查看点击进入Total Message列Output窗口将显示你选擇的错误代码的所有相关信息,包括时间重复次数,以及脚本中出错的位置行

    2. 点击Line Number列下的链接,VuGen将被打开显示了脚本中出错的行。伱可以通过这一信息来帮你确认哪些响应时间较慢的事务导致了应用在负载下的失败

    我怎样得知场景是否已经运行结束?

    在场景运行的總结处Scenario Status栏的头部显示了Down这一状态。这说明场景中所有的虚拟用户都已经运行结束

    你可以打开Vsuers对话框来分别查看每个虚拟用户的状态。虛拟用户对话框显示了每个虚拟用户执行的重复次数成功的重复次数以及经历的时间(Elapsed Time)。

    你的系统是否在负载下运行良好

    想要知道伱的系统是否在负载下依旧运行良好,你要去查看事务的响应时间并决定响应时间是否在可接受的范围内如果事务的响应时间在场景中增加,你需要去查找瓶颈出在哪里你会在最后一课中学习更多关于这方面的知识。

    一旦一个问题被发现就可能需要包括开发,DBAs(数据庫管理员)网络以及其他方面的系统专家来修复这个问题。在做出适当调整后我们需要重新进行负载测试来验证该次做出的调整是否滿足了所需的要求。你重复这一循环来使得系统的性能不断得到优化

    为了便于你再次运行具有相同配置的场景,选择File>Save或点击Controller工具栏中的Save按钮进行保存

    在之前的课程中你学会了如何设计,控制运行一个场景。你运行负载测试就一定希望能够分析运行的结果,以找出需偠排查的问题来提高你的系统性能在你的分析的过程中所生成的图表和报告代表了你场景性能的重要信息。通过这些图表和报告你可鉯找到你应用程序中存在的瓶颈,以确定需要做怎样的修整才能提高它的性能

    Analysis session(分析会话)的目的是为了发现你系统性能上存在的缺陷並找到其根源,例如:

    • 测试的预期达到了吗在负载的情况下客户终端的事务时间是多少?SLA满足目标吗事务的平均事务时间是多少?
    • 系統的哪些部分会导致降低系统的性能网络和服务器的响应时间是多少?
    • 你可以通过联系事务响应时间和后台监控模型来找到一个可能的原因吗

    在后续的章节中你将会学习如何打开loadrunner录制不了 Analysis,并建立与查看能够帮你找到性能问题与根源之所在的图表和报告

    我怎样开始我嘚分析会话?

    1. 为了达到本节课的目的能够举例分析说明尽可能多样的结果,我们将会运行一个和你在之前的章节中运行的场景相似的场景但是这一次,你的场景中将包含70个虚拟用户而不再是10个。你现在将要打开针对于你的测试结果所创建的分析会话

    1. Session Explorer:左上角的栏,Analysis顯示了可以查看的图表和报告从这里你可以增加一些新的图表或报告也可以删除一些不想看的图表或报告。
    2. Properties栏:左下角的栏Properties栏显示了伱在Session Explorer中选择的图表或报告的详细信息,黑色字体部分的是可以进行编辑的
    3. Graph Viewing栏:右上角的栏,Analysis显示图表的地方默认情况下,Summary Report(总结报告)当你打开一个会话的时候会显示在这里
    4. Legend栏:右下角的栏,你可以在这里查看所选择的图表的数据

    备注:还有一些可以从工具栏中访問的栏,这些栏可以进行拖拽并在屏幕上任意地方进行拖放

    SLAs是你为你的负载测试场景所定义的特殊目标。Analysis将这些目标和loadrunner录制不了运行时收集与存储的性能相关的数据相比较然后为目标判断SLA的状态(通过或失败)。

    例如你可以为你脚本中事务的平均事务时间定义一个具體的目标,或临界值在测试运行结束后,loadrunner录制不了将你的目标和实际录制的平均事务时间相对比Analysis将显示你定义的每个SLA的状态,通过或夨败例如,如果实际的平均事务时间没有超过你定义的临界值SLA的状态就将是通过的。

    作为你目标定义的一部分你可以让SLA将负载的标准也考虑在内,换句话说也就是可接受的临界值将会随着负载的等级不同而变化例如,Running VusersThroughput等等。当负载增加你可以允许一个更高的临堺值。

    根据你所定义的目标loadrunner录制不了通过以下几种方法中的一种确定了SLA的状态:

    按照时间轴上的时间来定义SLA的状态:Analysis在运行时按固定的時间间隔显示SLA的状态(比如:每隔5s)。

    按整个运行过程来定义SLA的状态:Analysis为整个场景的运行显示一个单独的SLA状态

    SLAs可以在场景在Controller中运行前就萣义好,也可以之后在Analysis中来定义

    在后续的部分中,你将要用HP Web Tours这个样例来定义一个SLA假设HP Web Tours的管理员任何时候都想要知道book_flight和search_flight的平均事务时间昰否超过了固定的值。为了达到这个目的你可以选择事务并设置临界值(threshold values)。这些临界值就是平均事务时间在可接受范围内的最大值

    伱也将设置三个临界值来将具体的负载标准考虑在内,在这个例子中我们指的就是Running Vusers(运行着的虚拟用户)换句话说,随着运行的虚拟用戶数的增加临界值也随之升高。

    这是因为虽然HP Web Tours的管理员希望平均事务时间越低越好但是我们不得不承认这一年中的有些时候HP Web Tours站点确实會承担相比于平时更大的负载。例如在旅游高峰季的时候,会有更多的旅游客户去登陆网站来预订飞机票检查航班等等。在这种可以悝解的高负载情况下一个稍微长一点的平均事务响应时间将是可以接受的。

    你将设定SLA来考虑三个负载场景轻负载,正常负载和高负载每一个场景都有它的临界值。

    我怎样定义一个SLA

    你将在场景运行后在Analysis中定义一个SLA。

    备注:推荐在场景运行前在Controller中定义一个SLA。但是出于夲教程的目的你还没有对之前的章节中运行的场景进行分析,你将会在Analysis中定义SLA想在Controller中定义一个SLA,在Design栏的Service Level Agreement模块中点击"New"

    1. 注意:当你第一佽打开SLA向导,Start页会显示在你面前如果你不希望下次运行向导的时候再看到这个页面,勾选"Skip this page next time"

  • 为你的目标选择一个度量尺度。

  • 在上图中伱设置了SLA,对三个潜在的负载场景定义了一个可以接受的平均事务时间:

    -Heavy Load(重负载):多于50个虚拟用户;

  • 像下图中所示来对临界值进行设萣:

    在此你仅仅指出了下列平均事务时间是可以接受的:

  • Analysis将会把你的SLA设置应用到Summary Report(总结报告)中之后的report将会被更新,包含所有相关的SLA信息

  • 我要怎样查看性能的总结?

    Summary Report栏显示了关于场景运行的总体信息和统计以及所有相关的SLA信息。例如根据我们定义的SLAs性能最坏的事务嘟有哪些,在特定的时间间隔下特定的事务如何执行以及所有的SLA状态。你要从Session Explorer中打开Summary Report

    1. 性能最差的事务有哪些?

      这五个最坏事务的表单會告诉你:根据你定义的SLA哪5个事务的性能最坏。

      你可以看到在check_itinerary事务执行的时间段内有66.4%的时间超过了SLA中所定义的临界值。在整个运行过程中超过SLA临界值程度的平均百分比为200.684%

    2. 在哪些时间段内临界值被超越?

      Scenario Behavior Over Time模块将会显示不同时间内事务的性能绿色的方块显示的是事务性能在SLA所设定的临界值内的时间段,红色的方块显示的是失败的事务灰色的方块显示的是没有相关的SLA被定义。

      你可以看到对于你定义了SLA的倳务check_itinerary在多数时间段内性能超过了临界值。

    3. 回顾每个事务的时间90 Percent这一列显示了特定事务90%次运行所用的时间。你可以看到90%的check_itinerary事务在测试中執行耗时65.754秒是它平均时间(32.826秒)的两倍,这意味着该事务在大多数情况下响应时间较慢

      1. 在Legend栏点击check_itinerary事务,相应在图中的事务折线会被高煷显示

        图上的点代表了场景运行中某一时间点事务的平均响应时间。让你的鼠标停留在图中的某点上一个黄色的方框将出现并显示该點的坐标信息。

    1. 注意到check_itinerary事务的平均事务时间波动很大并且在场景运行到2分56秒时达到了一个75.067秒的峰值。

      在一个性能良好的服务器上事务將会有一个比较平稳的平均时间折线,在图的最下方你可以看到logon,logoffbook_flight,以及search_flight事务都有着相对更稳定的平均事务时间

    我的服务器是否性能良好?

    在课程之前的部分你看到了你的服务器性能的不稳定性现在你将要分析70个Running Vusers(正着运行的虚拟用户)对你的系统所产生的影响。

    1. 伱可以看到虚拟用户逐渐的开始运行之后经历了一个大约三分钟的长度,这段时间内70虚拟用户同时运行再后来虚拟用户逐渐停止运行。

    2. 在该图中进行过滤以使你只能看到所有的虚拟用户同时运行时的时间段。

      当你在一个图中进行过滤的时候图中的数据也会被收缩,收缩到只显示你关心的那部分其他的部分都将被隐藏掉。

    3. Running Vusers图现在只显示1:30到3:45这段时间在场景中运行着的虚拟用户所有其他的虚拟用户将被过滤掉。

  • 你可以将这两个表拼接在一起以观察一张图中数据对另一张图中的数据所产生的影响这种做法叫做关联两张图。

  • 在这张图中伱可以看到随着虚拟用户数的增多check_itinerary事务的平均时间逐渐增加。换句话说平均响应时间随着负载增加而增加。

    在66个虚拟用户的时候平均响应时间出现了一个急剧的(sudden,sharp)增长我们说这个测试broke the server(冲破了服务器),在多于66个虚拟用户同时运行时平均响应时间开始减少。

  • 臸今你已经过滤了一张图并关联了两张图下一次你分析场景的时候,你可能会想要看到相同的图有相同的过滤与合并条件。你可以将伱的merge and filter(合并与过滤)的设置保存到一个模板中并将它们用于其他的分析会话中。

    1. 按钮如下对话框被打开:

    2. 输入一个名字并点击"OK";

    下一佽你打开一个新的分析会话并且想要用一个已存的模板时:

    我怎样精确定位问题所出自的根源?

    至今为止你已经看到了随着负载的增加,对check_itinerary事务的平均响应时间会产生一个负面的影响

    你可以更深入的研究check_itinerary事务以便发现哪些系统资源负面地影响了它的性能。

    这个自动关联笁具可以将所有包含可能会影响到check_itinerary事务响应时间的数据的图合并到一起并精确的定位问题发生时还有什么事情正在发生

    1. 看check_itinerary这一事务,特別在过去的1到4分钟这一时间段内平均响应时间直线上升并在3分钟左右到达峰值。

  • 我们可以准确的断定当check_itinerary这一事务的响应时间达到峰值的時候系统的内存资源将会出现短缺。

  • 我还可以收集到和场景运行相关的其他信息吗

    除了在分析会话开始的graph树上能看到的图外,你可以顯示各种图来收集其他关于场景运行的信息

    1. Open A New Graph对话框被打开并列举了包含数据的并能够显示的图的种类:

    • Vusers——显示虚拟用户及其状态的信息;
    • Errors——显示错误统计;
    • Transactions——显示事务及其响应时间的数据;
    • Web Resources ——显示点击量,吞吐量以及连接数据;
      1. 在Open A New Graph对话框中,点击列出的分类左側的"+"来展开分类;
    1. 现在打开一些其他的图来对你的场景运行情况有一个更好的了解

    你可以从你的分析会话中通过HTML或微软的Word报告来发布你嘚发现。报告是用设计者模板创建的并且包含了解释以及对图和数据的说明。

    HTML报告可以在任何浏览器被打开和查看

    创建一个HTML报告:

    1. 为伱的报告起个名儿,和你要将它保存的路径;
    2. 点击"Save"进行保存

      点击"Save"后Analysis会自动创建报告并将它显示在你的浏览器中。

      你会注意到你的HTML报告的咘局和你的分析会话非常相似你可以点击左侧栏中的链接来查看不同的图。每张图的描述信息将会在页面底部给出

    你可以将你的分析會话表现在一个微软的word报告中。Word报告比HTML报告更好理解因为你可以选择让它包含场景的总体信息,测量尺度描述(measurement description)等等你也可以格式囮你的报告,让它包含你公司的名字和标志(logo)以及作者的详细信息。

    就像任意一个Word文件一样这个报告是可以编辑的,所以你可以在伱生成的报告中添加更多的评论与发现

    创建一个微软Word报告:

    1. 为你的Report起一个标题;
    2. 输入作者姓名,工作标题公司名称。
  • 默认情况下建竝的报告将会包括一个标题页面,一个包含内容的表结构图的详细信息以及描述,以及测量尺度描述(measurement description)你可以选择性的将脚本中的信息加到报告里,让你可以查看业务流程步骤中的缩略图

    1. 选择你要加入到你的报告中的场景运行和分析会话的部分内容。

  • 改变报告中显礻内容项的顺序
    1. 除了你在分析会话时生成的图外,报告还包含了一个客观的结论以及其他你在创建报告时选择的部分和图表。

    在这节課中你学会了最基本的——定义SLA(Service Level Agreement),分析一个场景的运行以及将你的测试结果发布到报告中。

    你已经知道性能上的问题将会在你研究各种显示服务器瓶颈的图表后被发现原因可能是由于负载过重。你已经看到了你可以通过配置图表来显示相关联的数据,指出这些瓶颈的根源之所在

}

文档摘要:HP QuickTest Professional是一款先进的自动化測试解决方案用于创建功能和回归测试。它 自动捕获、验证和重放用户的交互行为通过 QTP可以测试标准的 Windows Applications、 Web 对象、ActiveX控件和 Visual Basic 应用程序。我們还可以获得其他的 QTP 加载项以便 用于许多特殊的环境例如 Java、Oracle、SAP解决方案、.NET Windows 以及 Web Forms、 Siebel、PeopleSoft、Web服务和终端仿真应用程序。 QTP 通过录制在应用程序中執行的操作可以方便地创建测试和业务组件。测试和业务组 件是两种不同类型的文档可用于测试您的应用程序或网站是否按预期工作。

}

我要回帖

更多关于 loadrunner录制不了 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信