11、性能测试-LoadRunner

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

性能测试简介

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

性能测试相关术语响应时间、并发用户数、事务响应时间、吞吐量、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结构就要选择WebHTTP/HTML协议。如果是C/S结构则可以根据后端数据库的类型来选择如MS SQL Server协议用于测试后台数据库为SQL Server的应用对于没有数据库的WINDOWS应用可以选择Windows Sockets协议。
根据选择协议的不同Virtual User Generator 会使用不同的方式和界面引导用户完成脚本的录制。

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

 

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

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

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

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

 

2Advanced 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 (迭代次数)
  选择GeneralRun Logic
  说明设定每个Action的迭代次数。

 

2.Think Time (思考时间)
  选择GeneralThink 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(错误处理)
  选择GeneralMiscellaneous
  说明设定遇到错误时的处理方式。

 

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

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

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 NameInstant_10
Schedule byScenario
Run Modebasic schedule
Start VuserSimultaneously

2逐步加压
Schedule NameGradual_10
Schedule byScenario
Run Modebasic schedule
Start Vuser2 Vusers every 00:00:30HHMMSS

定义场景—设置集合点

    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信息。

 NameLoad 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 ProcedureCallRPC和Remote Procedure CallRPC、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形式的测试报告。

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“11、性能测试-LoadRunner” 的相关文章