11、性能测试-LoadRunner

性能测试简介

    性能测试是利用产品、人员和流程来降低应用程序、升级程序或补丁程序部署风险的一种手段。性能测试的主要思想是通过产生模拟真实业务的压力对被测系统进行加压,研究被测系统在不同压力情况下的表现,找出其潜在的瓶颈。

性能测试相关术语:响应时间、并发用户数、事务响应时间、吞吐量、TPS(每秒事务响应数)、性能计数器等。
性能测试方法:负载测试、压力测试、配置测试、并发测试、可靠性测试等。
应用领域:能力验证、规划能力、性能调优、缺陷发现。
性能测试工具架构:一般包括以下部件:虚拟用户脚本产生器(Virtual User Generator)、压力产生器(player)、用户代理(Agent)、压力调度和监控系统(Conductor)、压力结果分析工具(Analysis)。

并发用户

并发一般分为2种情况:
一种是严格意义上的并发,即所有的用户在同一时刻做同一件事情或者操作,这种操作一般指做同一类型的业务。

另外一种并发是广义范围的并发。这种并发与前一种并发的区别是,尽管多个用户对系统发出了请求或者进行了操作,但是这些请求或者操作可以是相同的,也可以是不同的。对整个系统而言,仍然是有很多用户同时对系统进行操作,因此也属于并发的范畴。

关于用户并发的数量,有2种常见的错误观点。一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;还有一种比 较接近正确的观点是把在线用户数量理解为并发用户数量。实际上在线用户也不一定会和其他用户发生并发,例如正在浏览网页的用户,对服务器没有任何影响,但 是,在线用户数量是计算并发用户数量的主要依据之一。

响应时间

请求响应时间:

指的是客户端发出请求到得到响应的整个过程的时间。在某些工具中,请求响应时间通常会被成为"TLLB",即"Time to last byte",意思是从发起一个请求开始,到客户端接收到最后一个字节的响应时间所耗费的时间。请求响应时间过程的单位一般为"秒"或者"毫秒"。

事务响应时间:

    事务可能由一系列请求组成,事务的响应时间主要是针对用户而言,属于宏观上的概念,是为了向用户说明业务响应时间而提出的.例如:跨行取款事务的响应时间就是由一系列的请求组成的.事务响应时间和后面的业务吞吐率都是直接衡量系统性能的参数。

TPS:

        Transaction per second,每秒钟系统能够处理的交易或者事务的数量.它是衡量系统处理能力的重要指标。

点击率

HPS,每秒钟用户向WEB服务器提交的HTTP请求数.这个指标是WEB应用特有的一个指标:WEB应用是"请求-响应"模式,用户发出一次申请, 服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位.如果把每次点击定义为一个交易,点击率和TPS就是一个概念.容易看出,点击率越 大, 对服务器的压力越大.点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操 作中,客户端可能向服务器发出多个HTTP请求。

LoadRunner简介

    LoadRunner是一种预测系统行为和性能的负载测试工具。它通过模拟实际用户的操作行为和实行实时性能监测,来帮助测试人员更快的查找和发现问题。LoadRunner适用于各种体系架构,能支持广泛的协议和技术,为测试的特殊环境提供特殊的解决方案。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能并加速应用系统的发布周期。
    LoadRunner提供了3大主要模块,这3个模块既可以作为独立的工具分别完成各自的功能,又可以作为LoadRunner的一部分彼此衔接,与其他模块共同完成软件性能的整体测试。这3大模块分别是:
    Virtual User Generator   —— 用于录制性能测试脚本
    LoadRunner Controller   —— 用于创建、运行和监控场景
    LoadRunner Analysis      —— 用于分析性能测试结果

 
        LoadRunner的安装过程比较简单,运行setup.exe,点击“LoadRunner完整安装”,按照向导逐步安装就可以了。
     提示:建议安装过程关闭360等杀毒软件。否则可能出现安装后,用Controller创建场景报错:Failed to Connect to LoadRunner Controller,控制器无法使用。

LoadRunner 常用术语:

1.场景(Scenario):

场景即测试场景。在LoadRunner的Controller部件中,可以设计与执行用例的场景,设置场景的步骤主要包括:在Controller中选择虚拟用户脚本、设置虚拟用户数量、配置虚拟用户运行时的行为、选择负载发生器(Load Generator)、设置执行时间等。

2.负载发生器(Load Generator):

用来产生压力的机器,受Controller控制,可以使用户脚本在不同的主机上执行。在性能测试工作中,通常由一个Controller控制多个Load Generator以对被测试系统进行加压。

3.虚拟用户(Virtual User/Vuser):

对应于现实中的真实用户,使用LoadRunner模拟的用户称为虚拟用户。性能测试模拟多个用户操作可以理解为:这些虚拟用户在跑脚本,以模拟多个真正用户的行为。

4.虚拟用户脚本(Vuser script):

通过Vuser Generator录制或开发的脚本。这些脚本用来模拟用户的行为。

5.事务(Transaction):

测试人员可以将一个或多个操作步骤定义为一个事务,可以通俗的理解事务为“人为定义的一系列请求(请求可以是一个或者多个)”。在程序上,事务表现为被开始标记和结束标记圈定的一段代码区块。Loadrunner根据事务的开头和结尾标记,计算事务响应时间、成功/失败的事务数。

6.思考时间(Think Time):

即请求间的停顿时间。实际中,用户在进行一个操作后往往会停顿然后再进行下一个操作,为了更真实的模拟这种用户行为而引进该概念。在虚拟用户脚本中用函数lr_think_time()来模拟用户处理过程,执行该函数时用户线程会按照相应的time值进行等待。

7.集合点(Rendezvous):

设集合点是为了更好模拟并发操作。设了集合点后,运行过程中多个用户可以在集合点等待到一定条件后再一起发后续的请求。集合点在虚拟用户脚本中对应函数lr_rendezvous()。

8.事务响应时间:

事务响应时间是一个统计量,是评价系统性能的重要参数。定义好事务后,在场景执行过程和测试结果分析中即可以看到对应事务的响应时间。通过对关键或核心事务的执行情况进行分析,以定位是否存在性能问题。

响应时间2/5/10原则

当用户能够在2秒以内得到响应时,会感觉系统的响应很快

当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以

当用户在5-10秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受

而当用户在超过10秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。

LoadRunner工作原理

LoadRunner由四大组件组成:VuGen、控制器、负载发生器和分析器。

1、VuGen发生器:

捕捉用户的业务流,并最终将其录制成一个脚本:(1)选择相应的一种协议;(2)在客户端模拟用户使用过程中的业务流程,并录制成一个脚本;(3)编辑脚本和设置Run-Time Settings项;(4)编译脚本生成一个没有错误的可运行的脚本。

2、控制器(Controller):

(1)设计场景,包括手动场景设计和目标场景设计两种方式;(2)场景监控,可以实时监控脚本的运行的情况。可以通过添加计数器来监控Windows资源、应用服务器和数据库使用情况。

场景设计的目的是设计出一个最接近用户实际使用的场景,场景设计越接近用户使用的实际情况,测试出来的数据就越接近真实值。

3、负载发生器(Load Generators):

模拟用户对服务器提交请求。
通常,在性能测试过程中会将控制器和负载发生器分开;当使用多台负载发生器时,一定要保证负载均衡(指在进行性能测试的过程中,保证每台负载发生器均匀地对服务器进行施压)。

4、分析器(Analysis):

主要用于对测试结果进行分析。

LoadRunner测试流程

 LoadRunner测试流程

➤规划测试
  确定测试要求,如并发用户数量、典型业务场景流程;测试计划;设计用例;……
➤创建Vuser脚本
  使用Virtual User Generator录制、编辑和完善测试脚本。
➤定义场景
  使用LoadRunner Controller 设置测试场景。
➤运行场景
  使用LoadRunner Controller 驱动、管理并监控场景的运行。
➤分析结果
  使用LoadRunner Analysis 生成报告和图表并评估性能。

规划测试

  好的测试规划,能够指导整个测试过程,以更好的收集到测试目标要求的性能数据。规划可以包括测试的计划、用例的设计、场景的设计、性能计数器设置的设计等。

  以下列出几点规划事项:

 1.测试用例:

测试用例一般根据需要测试的功能进行设计,比如用例为:进入登录页面-》填写用户名密码,登录-》单击‘新增’按钮-》填写门店信息,保存。

  2.场景设计:

一般情况会设计两种加压方式进行测试:瞬时加压(多人同时进行某项业务操作)与逐渐加压(多人先后进行某项业务操作,操作时间间隔根据计划设定)。这里不详细说明。

  3.性能计数器方面:

可以收集CPU时间、内存、硬盘、网络、数据库参数、IIS参数等。这里不详细说明。

创建Vuser脚本—准备

 Loadrunner脚本开发步骤:
    录制基本脚本增强/编辑脚本配置运行时设置试运行脚本

在录制脚本前,先确定性能测试各种文件的存储结构,以便后续可以清晰查找各种需要信息。

      使用相对路径,便于测试环境的迁移。
      使用绝对路径(推荐放在C盘符下,理由如下:绝大多数windowns的操作系统都有C盘符,更大限度的方便测试环境的迁移。但也要考虑到目标环境的C盘情况。)。
    如果使用绝对路径,推荐的存储结构为一个父目录存储所有当次性能测试的文件,比如这个目录名可以为“ProjectName_Perf”,然后在“ProjectName_Perf”下新建5个目录,分别存放脚本、参数文件、场景、场景运行结果、分析报告,名字分别为Test_Script、Test_Parameter_List、Test_Scenario、Test_Scenario_Result、Test_Report(这里的命名规律为:Test开头,然后加上该目录所存放内容的名称,每个单词大写字母开头,用下划线隔开)。

创建Vuser脚本—录制基本脚本

1.启动LoadRunner
选择开始程序 HPLoadRunnerLoadRunner,打开HP LoadRunner11窗口。

2.打开VuGen
在LoadRunner Launcher窗格中,单击Create/Edit Scripts,链接启动Virtual user Generator起始页。

3.创建一个空白Web脚本

选择File New菜单,或点击   按钮,打开New Virtual User对话框,显示可供选择脚本的协议。

 对于常用的应用软件,我们可以根据被测应用是B/S结构还是C/S结构来选择协议。如果是B/S结构,就要选择Web(HTTP/HTML)协议。如果是C/S结构,则可以根据后端数据库的类型来选择,如MS SQL Server协议用于测试后台数据库为SQL Server的应用;对于没有数据库的WINDOWS应用,可以选择Windows Sockets协议。
根据选择协议的不同,Virtual User Generator 会使用不同的方式和界面引导用户完成脚本的录制。

4.录制前的设置
选择Web(HTTP/HTML),点击Create按钮,打开Start Recording对话框。选择的协议不同,打开的窗口就会不同,实例是针对Web录制的对话框。

 

      VuGen的脚本分为三个部分:Vuser_init,Action,Vuser_end。其中Vuser_init和Vuser_end都只能存在一个,而Action可分成无数多个部分,可以通过点击旁边的【new】按钮来创建Action。在迭代执行测试脚本时,Vuser_init和Vuser_end中的内容只会执行一次,迭代的是Action部分。

在Start Recording对话框,点击Options按钮,进入录制选项设置。一般要设置以下选项:

1)Recording HTTP/HTML level中设置脚本的显示形式:URL_based script。

 基于浏览器的应用程序推荐使用HTML-based script。
 不是基于浏览器的应用程序推荐使用URL-based script。
 基于浏览器的应用程序中包含了JavaScript,并且该脚本向服务器发送了请求,比如DataGrid的分页按钮等,推荐使用URL-based script。
 基于浏览器的应用程序中使用了HTTPS安全协议,建议使用URL-based script。

 

2)Advanced Support charset中设置编码格式:UTF-8;

   提示:录制Web脚本时,生成的脚本中存在乱码该如何解决?
 新建脚本--->选择协议(Http)-->选项-->高级-->选择“支持字符集”并点选“UTF-8”。
 在回放脚本之前:Vuser-->运行时设置-->浏览器-->浏览器仿真-->更改-->使用浏览器-->语言下来选择 “中文(中国)”。

 

5.录制
   在Start Recording对话框,点击OK按钮,开始录制。系统自动弹出IE,加载营销系统的登录界面。
   在录制的过程中,屏幕上有一个悬浮的录制工具栏,是脚本录制过程中测试人员和VuGen交互的主要平台。

 熟悉录制脚本工具栏:

 

实例操作:登录系统新增门店注销
    通过操作被测系统,操作的每一个步骤都被记录,在录制的过程中,可以在相应的步骤插入action、事务、检查点、集合点等信息。录制完成后单击    按钮,Loadrunner开始生成脚本,生成的脚本如图所示。

 

 

熟悉两种脚本查看方式:
Script View 可以查看全部录制的脚本代码(左图)
Tree View   可以查看每个URL获取来的页面(右图)

创建Vuser脚本—增强/编辑脚本

1.插入事务
    插入事务是用于把功能分为若干部分,在统计性能指标时,可以对不同的事务分别作统计。如果对脚本不是太熟悉,可以在录制的时候,逐步插入。也可以在录制完成之后,在脚本中插入。

  在录制时插入操作为:录制某个功能开始前单击插入事务的起始点录制,直到某个功能结束插入事务的结束点。

  在脚本的插入方式为:
插入事务起始点:
单击某个功能起始前的空白处右键鼠标insertstart transaction命名OK。系统自动在脚本语句中插入如下语句:
lr_start_transaction("登录");

插入事务结束点:
单击某个功能结束后的空白处右键鼠标insertend transaction命名(与起始点的名字一致)OK。
系统自动在脚本语句中插入如下语句:
lr_end_transaction("登录",LR_AUTO);

 

 

2.参数化
  参数化的作用是在进行场景执行的时候,每个不同的虚拟用户可以按照参数的读取策略读取到参数值,以模拟不同用户在提交或者读取不同的数据。
  每个用户在界面上读取和提交的信息都不太相同,因此一般都需要参数化,其它与输入信息对应的比如用户id之类的信息也需要参数化;另外,录制环境绝大多数情况下与执行环境不一致,因此一般需要对IP、端口或者域名做参数化。

下面将分四部分来介绍参数化的方法和实施过程:

    确定需要参数化的常量
    准备数据
    对脚本进行参数化
    还原初始字符串

 确定需要参数化的常量

       打开脚本后,首先要确定哪些常量需要参数化。例如我们的营销系统登录的脚本代码:

 

  可以看出,在web_submit_data函数中,两条语句包含了两个常量:e号和密码。
  "Name=txtUserNumber", "Value=220999", ENDITEM,
  "Name=txtPassword", "Value=888888", ENDITEM,
  当我们想模拟多个不同的用户来运行登录脚本的时候,需要对Value=220999和Value=888888进行参数化。
  另外,新增门店的脚本代码中,门店名称具有‘必填+唯一’的属性,也需要做参数化设置。其它还有哪些常量需要参数化,可以根据业务场景来确定。

准备数据
         根据实例,我们需要准备e号、密码、门店名称这三个参数的数据。

对于e号和密码,我们准备下述可以直接登录系统(无需选择企业)的e号和密码:
220999  888888
210996  888888
220995  888888
210998  888888
220990  888888
220997  888888
220991  888888
210993  888888
220994  888888
220992  888888
……

对于门店名称,我们准备下述不同的名称:
天河城东门店
广百百货体育西路店
正佳广场店
天河城旗舰店
体育西路门店
石牌桥分店
岗顶旗舰店
天河北路分店
体育东路店
珠江新城总店
……

对脚本进行参数化

以e号参数化为例,参数化过程如下:
1)选中220999 右击鼠标 在右键菜单上选择replace with a parameter。


2)在弹出窗口填写参数名称,或选择一个已经存在的参数名。

 

常用的参数类型:
Data/Time:使用当前日期/时间替换所选常量。
Group Name:使用Vuser组的名称替换所选常量。
Load Generator Name:使用Vuser脚本的负载发生器名替换所选常量。
Iteration Number:使用当前的迭代编号替换所选常量。
Random Number:使用一个随机生成的整数替换所选常量,可以通过参数属性设定参数的范围。
Unique Number:使用一个唯一编号替换所选常量,可以通过参数属性设定参数的第一个值和递增的规则。
Vuser ID:使用运行脚本的虚拟用户ID来代替选择的常量。
File:采用外部的数据来代替,可以使用单独的文件,也可以使用现成的数据库中获取数据。
User Defined Function:从用户开发的dll文件中获取数据。

实例中填写参数名称:UserNumber;选择参数类型File,来写入已准备好的数据。

3)单击窗口的properties按钮,设置parameter的properties。

 

文件File:
参数化结束后,脚本保存的根目录下会自动生成一个 以参数名称命名的 参数文件;也可以直接选择一个已准备好的参数文件。
选择参数列Select Column:
By number:以列号为参数列。
By name:以列名为参数列。
文件格式:
       Column:参数之间的分隔符:逗号、空格、Tab。
      First data:从第几行读取数据。
选择参数分配方法Select next row:
Sequential:顺序的分配Vuser参数值。当正在运行的Vuser访问数据表格时,它将会提取下一个可用的数据行。
Random:当脚本开始运行时,“随机”的为每个Vuser分配一个数据表格中的随机值。
Unique:为Vuser的参数分配一个“唯一”的顺序值。注意,参数数量一定要大于等于“Vuser量*迭代数量”。
选择参数更新方法Update value on:
Each iteration:脚本每次迭代都顺序的使用数据表格中的下一个新值。
Each occurrence:在迭代中只要遇到该参数就重新取值。
Once:在所有的迭代中都使用同一个值。
当超出范围时When out of values:(选择数据为unique时才可用到)
Abort Vuser:中止。
Continue in a cyclic manner:继续循环取值。
Continue with last value:取最后一个值。

  设置完成后,被参数化的值会被参数名代替。实例中设置参数名为UserNumber,脚本原先220999部分变为了紫红色的{UserNumber}。

4)如果其它地方也用到这个相同的参数,则可以进行替换。

方法一:选中需要被替换的常量右键鼠标use existing parameter选择已经存在的参数名。

方法二:选中这个设置好的参数,右键鼠标replace more occurrences逐个替换(如果确定所有都需替换可以全部替换)。

 还原初始字符串

    通过VuGen,可以还原最初录制的字符串从而撤消参数化。方法为:
在脚本视图中,右键单击该参数并选择“Restore original value()”。

    设置完成后,该参数被还原为初始字符串。实例中的参数{UserNumber},被还原为初始的220999。

3.插入集合点
  插入集合点是一种增大并发压力的方式。脚本运行时,只有当到达集合点的虚拟用户数满足设置要求时,才会继续往下运行。 插入集合点可以在录制的时候,逐步插入,也可以在录制完成之后,在脚本中插入。需要注意的是,集合点只能插入Action部分的脚本中,不能插入vuser_init和vuser_end两部分脚本中。

  在录制时插入操作为:录制某个功能开始前单击插入集合点命名OK
  在脚本的插入方式为:单击需要插入集合点的功能开始前的空白处右键鼠标insert rendezvous命名OK。

 

系统自动在脚本语句中插入如下语句:
lr_rendezvous("新增门店");

实例中,可以在新增门店的功能前插入集合点。

4.关联
  关联的含义是,在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的形式替换录制时的静态值,从而向服务器发出正确的请求。最最典型的是用于sessionID。
  常用的关联技术有三种:录制中关联、录制后关联、手动关联。

   录制中关联
    设置录制前的recording optionscorrelation,可以勾选LR已有的关联规则,也可以新建规则;录制过程中,关联自动在脚本体现。

 录制后关联

    关联的使用可以在脚本录制完成后,回放一次脚本,然后在脚本的菜单的vuserscan script for correlations进行设置。

     通过回放脚本和扫描关联,系统尝试找到录制与执行时服务器响应的差异部分,找到需要关联的数据,并建立关联。

 

   手动关联
    录制前关联与录制后关联都属于自动关联的范畴。如果出现自动关联不能解决的问题,就需要使用手动关联的方法。手动关联的一般步骤如下:
    1)录制两份脚本,保证业务流程和使用的数据相同。
    2)使用WinTiff工具比较两份脚本,对两份脚本中不同的地方进行判断,找到需要关联的数据。
    3)找到左边界和右边界字符串,写出关联函数。
    4)在脚本中‘需要关联的数据’前面插入关联函数。
    5)用关联函数中定义的参数取代脚本中‘需要关联的数据’。
    具体方法不详述,可查阅相关资料。

5.其他
  前面讲解了插入事务、插入集合点、参数化、建立关联的方法,一般的脚本都需要做以上几项的修改工作。此外,还可以通过插入注释、插入检查点来完善脚本。另外脚本出现问题了,也可以通过打印信息来调试脚本。
  插入注释:在脚本中插入注释,可以清晰找到需要修改的位置,增强脚本的可读性。
  插入检查点:在脚本中设置检查点函数,将返回值的结果反映在Controller的状态面板上和Analysis统计结果中,由此可以判断数据传递的正确性。
  具体方法不再详述,可查阅相关资料。

创建Vuser脚本—配置运行时设置

    在VuGen中,选择 VuserRun-time Settings,可以设定脚本回放过程的一些参数。如Iteration Count (迭代次数)、Think Time (思考时间)、Error Handling(错误处理)、Multithreading(运行方式)等。

1.Iteration Count (迭代次数)
  选择General:Run Logic
  说明:设定每个Action的迭代次数。

 

2.Think Time (思考时间)
  选择General:Think Time
  说明:设定脚本回放时对思考时间的处理方式。

 Ignore think time
脚本回放时,将不执行lr_think_time()函数,这样会给服务器产生更大的压力。
Replay think time
脚本回放时,执行lr_think_time()函数,具体执行方式有一下3种:
1)按照录制时获取的think time值回放。
2)按照录制时获取值的整数倍数回放脚本。
3)制定一个最大和最小的比例,按照两者之间的随机值回放脚本。
Limit think time to 选项,用于限制think time的最大值,脚本回放过程中,如果发现有超过这个值的,用这个最大值替代。

3.Error Handling(错误处理)
  选择General:Miscellaneous
  说明:设定遇到错误时的处理方式。

 

Continue on error
遇到错误时继续运行。
Fail open transactions on lr_error_message
执行到事务中调用的lr_error_message()函数时将事务的结果置为Failed。
Generate snapshot on error
对错误进行快照。

4.Multithreading(运行方式)
  选择 General:Miscellaneous
  说明:设定脚本是以多线程方式运行还是以多进程方式运行。

Run Vuser as a process
以多进程方式运行。
Run Vuser as a thread
以多线程方式运行。
一般会选择把虚拟用户当做进程来处理,因为系统上线后,用户的操作都是以进程的方式进行。待确认。。

创建Vuser脚本—试运行脚本

1.脚本录制完毕后,按F5键,或点击菜单中的   按钮,可以试运行脚本。回放过程中VuGen在下方同步打印日志。

2.如果需要查看不同的日志形式,可以在脚本页面菜单的vuserruntime-settingslog选择不同的项,回放脚本时将打印不同级别的日志。

 

3.运行结束后,系统会给出相应的运行结果,可以通过ViewTest Results查看回放结果。

     在VuGen中试运行脚本的作用,主要是查看录制的脚本能否正常通过,如果有问题,系统会给出提示信息,并定位到出错的行上,便于用户查找到错误,修改完善测试脚本。

    脚本修改完善的工作完成后,将脚本以有意义的单词命名保存在约定的目录当中。实例的脚本可以命名为AddStore,保存在Test_Script目录下。

定义场景

    脚本准备完成后,可以根据场景用例设置场景。Controller控制器提供了手动和面向目标两种测试场景。
    手动设计场景(Manual Scenario)最大的优点是能够更灵活地按照需求来设计场景模型,使场景能更好地接近用户的真实使用。一般情况下使用手动场景设计方法来设计场景。
    面向目标场景(Goal Oriented Scenario)则是测试性能是否能达到预期的目标,在能力规划和能力验证的测试过程中经常使用。
    
    本次介绍手动设计场景的下述几个步骤:

        创建场景
        设置schedule
        设置集合点
        多机联合产生负载
        设置负载均衡    
        设置Windows资源监控器

定义场景—创建场景

    Controller控制器可以从程序中打开,然后选择保存好的脚本;也可以从VuGen中直接连接到该脚本的控制场景。
    实例从VuGen中启动Controller的步骤如下:
1.单击VuGen菜单栏的toolscreate controller scenario。


2.在弹出窗口选择虚拟用户数、运行结果保存目录(按照事先约定选择目录,结果文件的命名最好包含用户数/加压方式/场景名)、负载产生的负载机所在地。

      实例的结果文件可以命名为:ADDStore_Result_InstantandGradual_10,保存至Test_Scenario_Result目录下。

3.在Create Scenario窗口中点击OK,链接启动LoadRunner Controller。

     默认显示用户组模式,可通过菜单ScenarioConvert Scenario to the Percentage Mode切换为百分比模式。

定义场景—设置Schedule

    在Controller的Scenario Schedule中,可以设置场景的各项计划,如虚拟用户的加载方式、释放策略等。

1.设置场景的基本信息
  Schedule Name:设置场景名称。
  Schedule by:选择按场景计划或按用户组计划。
  Run Mode:
  real-world schedule 是真实场景模式,可以通过增加Action来增加多个用户。
  basic schedule 是我们以前用的‘经典模式’,只能设置一次负载的上升和下降。

2.设置场景的各类参数
  双击Global Schedule中的对应行,可以设置schedule的各类参数。

 

Initialize:初始化是指运行脚本中的Vuser_init操作,为测试准备Vuser和Load Generator。

 

Start Vusers:设置场景Vuser加载方式。

 

Duration:设置场景持续运行的情况。

 Stop Vusers:设置场景执行完成后虚拟用户释放的策略。

 

Start Time:设置场景启动时间。

     根据前述Scenario Schedule的设置方法,可以将实例中10个用户新增门店的场景设计如下:

1)瞬时加压
Schedule Name:Instant_10
Schedule by:Scenario
Run Mode:basic schedule
Start Vuser:Simultaneously

2)逐步加压
Schedule Name:Gradual_10
Schedule by:Scenario
Run Mode:basic schedule
Start Vuser:2 Vusers every 00:00:30(HH:MM:SS)

定义场景—设置集合点

    LR在运行场景的时候,允许测试人员根据项目需要自己设定集合点的并发策略。单击Controller菜单栏的ScenarioRendezvous,可以查看场景中所有的集合点名称、所属脚本、当前状态和相关的虚拟用户列表信息等,根据系统需求,还可以针对集合点的执行进行设定。

1.集合点设置
  单击Disable/Enable Rendezvous按钮可以选定集合点是否启用。
  单击Disable/Enable VUser按钮可以设定一个用户是否参与到集合点中。
  单击Policy按钮可以设定集合点执行策略。

2.集合点策略设置

 第一项:当前所有用户数的X%到达集合点时,开始释放等待的用户并继续执行场景。
第二项:当前正在运行用户数的X%到达集合点时,开始释放等待的用户并继续执行场景。
第三项:当X个用户到达集合点时,开始释放等待的用户并继续执行场景。
Timeout betweenVusers:设定一个超时时间,当第一个用户到达集合点时,系统开始计时,如果在这个设定的时间内没有达到指定的用户数,系统就不再等待,释放用户让场景继续执行。

3.手动释放Vuser
   在场景运行过程中,点击Status Information列表的Release按钮,可以手动释放等待中的虚拟用户。

定义场景—多机联合产生负载

    为了避免一台测试机器模拟的虚拟用户数过多,他本身性能的下降直接影响测试效果,LR允许使用多台机器运行场景来均衡测试机器的负荷。只要一台机器安装了Load Generator并启动了LoadRunner Agent Process进程,就可以被Controller统一调度来运行场景,Controller负载收集统一的测试信息和执行结果。
    单击菜单ScenarioLoad Generator,可以查看到所有已经加载的Load Generator信息。

 Name:Load Generator所在的机器名称。Status:标识了Generator目前的状态。
Platform:显示了系统的平台名称。

    单击Add按钮,可以添加新的Load Generator;单击Connect按钮,LR的Controller就会尝试去连接选中的Load Generator,如果连接成功就在Status字段中显示Ready,如果失败就会显示Failed。

定义场景—设置负载均衡

    这里的负载均衡是用来解决测试过程中,负载机分配不均的问题。方法为:先选择ScenarioConvert Scenario to the Percentage Mode,将场景模式由用户组切换为百分比,然后在已经添加好的Load Generators机器列表中选择需要的机器。这样就可以保证负载机均匀地对服务器施压。

     场景创建完成后,以有意义的名字命名场景并保存。如实例命名为AddStore_InstantandGradual_10,保存在Test_Scenario目录下。

定义场景—设置Windows资源监控器

    通过添加Windows资源监控器,可以监控负载对服务器的CPU、内存、磁盘等资源的影响。在监视服务器之前要做一些工作来确保监视连接成功。
      被监视主机的访问模式改为:经典-本地用户以自己的身份验证;且必须设置密码。
      被监视系统开启以下三个服务:Remote ProcedureCall(RPC)和Remote Procedure Call(RPC)、Remote Registry。
      确认安装Controller的机器可以连接到被监视的机器。
      确认并打开共享文件C$。
    上述工作的详细方法不再过多描述,如有疑问和其他问题,可参阅相关资料。接下来在Controller中添加被监控的计算机资源。
    
    添加Windows资源监控器的步骤如下:
    1.点击Controller界面下方的Run选项卡,打开Run视图。
    2.选择菜单MonitorsAdd Measurements,或在Windows Resources图中点击鼠标右键选择Add Measurements,打开Windows Resources窗口。
    3.点击Monitored Server Machines下的Add按钮,在Add Machine对话框中填写计算机名称或IP,并选择计算机平台,点击OK。
    4.默认的Windows Resources度量将列出在Resource Measurement on文本框中,点击OK激活监控器。

 运行场景

    场景设计完成后,单击Controller界面下方的Run选项卡,可以进入场景的执行界面。这个界面用于控制场景的执行,包括启动停止执行场景,观察执行时是否出错及出错信息、执行时用户情况、相关性能数据。
    单击Start Scenario按钮,场景开始运行。一些即时的数据(比如用户数,等待数,成功事务数,失败事务数等)以及性能数据的折线图,会在Run的过程中显示。

 

    执行完成后,执行结果以事先的命名默认保存在建立场景时设置的保存目录。如果涉及到调优,需要多次执行同一个场景,建议每次运行前先调整菜单的ResultsResults Settings,场景结果保存的名字建议包含重要调优参数值。调优参数比较多样,可以在具体的项目用附件约定。
 
    测试期间,可以使用LoadRunner的联机监控器观察Web服务器在负载下的运行情况。特别是可以看到,负载的增加如何影响服务器对用户操作的响应时间(事务响应时间),以及如何引起错误的产生。

分析结果

    LR的Analysis模块是分析系统的性能指标的一个主要工具,它能够直接打开场景的执行结果文件,将场景数据信息生成相关的图表进行显示。Analysis集成了强大的数据统计分析功能,允许测试员对图表进行比较和合并等多种操作,分析后的图表能够自动生成需要的测试报告文档。

    Analysis分析器可以从程序中打开,然后选择保存好的结果文件;也可以从Controller中直接连接到该脚本的控制场景。
    实例从Controller中启动Analysis的步骤如下:
    单击Controller菜单栏的ResultsAnalysis Results,链接启动Analysis,将上一次运行的场景结果生成报告。默认显示Summary Report页签的概要报告,可以切换其他页签,查看对应性能数据的报表。

 

1.图形合并
    理论上性能测试的所有数据都是需要去关注的,一个最基本的关注点是在概要报表的Transaction Summary中被列出的用户响应时间。其对应的折线图为Average Transaction Response Time。
    通常测试报告需要给出“虚拟用户—用户响应时间”的折线图,这个折线图可以通过合并报表的形式生成,过程如下:选中Average Transaction Response Time报表,单击菜单栏的ViewMerge Graphs然后选择与Running Vuser图合并,生成的折线图即为“虚拟用户—用户响应时间”。

 2.生成报告:Analysis可以生成HTML或Microsoft Word两种方式的测试报告。

生成HTML报告:
1.点击菜单ReportsHTML Report。
2.为HTML报告选择文件名和保存路径,点击【保存】按钮。Analysis将创建报告,并将其显示在web浏览器中。

生成Microsoft Word报告:
1.点击菜单Reports New Report打开右图所示的窗口。
2.设置General、Format、Conten选项卡内容后,点击Generate按钮,即可生成Microsoft Word形式的测试报告。

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值