Loadrunner工具原理及分析 - 51ste软件测试部落-中国软件测试者的乐园
登录|注册

Loadrunner工具原理及分析

发布时间:2015-05-13 17:18:17  关键字:Loadrunner原理 LR原理分析 

       性能测试工具原理性能测试工具,从广义上讲,在性能测试过程中使用到的所有工具都可以称其为性能测试工具。从狭义上来讲,我们可以把性能测试工具分为服务器端性能测试工具与前段性能测试工具。

  服务器端性能测试工具也我们测试人员通常所认为的性能测试工具。LoadRunner、JMeter、SilkPerformance、服务器端压力性能工具需要支持产生压力和负载,录制和生成脚本,设置和部署场景,产生并发用户和向系统施加持续的压力。

  前端性能测试工具应用比较广泛,开发人员,前端开发人员、测试人员都会经常用到。Firebug 、fildder2、Yslow、HttpWatch,前端性能测试工具只需要关于心浏览器等客户端工具对具体需要展现的页面的处理过程。

1.Loadrunner简介

LoadRunne是一种预测系统行为和性能的工业级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。

LoadRunner能够完成:1)轻松创建虚拟用户;2)创建真实的负载;3)定位性能问题;4) 分析结果以精确定位问题所在;5)重复测试保证系统发布的高性能。

2.loadrunner原理

    根据LoadRunner的总体架构图,包括各个组件VUGen, Controller、Load Generator(s)和Analysis之间的关系,从而分析LoadRuuner工具原理如下:代理(Proxy)是客户端和服务器端之间的中介人,LoadRunner就是通过代理方式截获客户端和服务器之间交互的数据流。

  1. LoadRunner的总体架构图:

Loadrunner总体架构图

  1. LoadRunner的工作原理图:

 Loadrunner工作原理图

  1. 下面为Loadrunner内部流程图,图示LoadRunner内部各个组件之间如何进行交互,数据流和文件流之间如何进行:

Loadrunner内部流程图

3Loadrunner工具组件

3.1VUGen(虚拟用户生成器)

    该组件主要用于录制或手动编写脚本模拟用户在被测应用下的一系列活动,以便后面通过对该虚拟用户进行大量复制进行负载测试。该部分主要包括三个部分:脚本的录制、录制选项设置、运行时设置。

3.1.1协议支持

     Loadrunner是一个基于协议的性能测试工具,则测试的对象都需要使用通信协议。该工具支持的协议见下面列表:

协议分类

具体支持协议

应用程序部署解决方案

Citrix ICA

客户端/服务器

DB2 CLI、DNS、Informmix、MS SQL Server、ODBC、Oracle(2层)、Sybase Ctlib、Sybase Dblib和Windows Sockets协议。

自定义

C模版、Visual Basic模版、Java模版、Javascript和VBScript类型的脚本。

分布式组件

适用于COM/DCOM、Corba-Java和Rmi-Java协议。

电子商务

FTP、LDAP、Palm、PeopleSoft 8 mulit-lingual、SOAP、Web(HTTP/HTML)和双Web/WinSocket协议。

Enterprise Java Bean

EJB测试和Rmi-Java协议。

ERP/CRM

Baan、Oracle NCA、Peoplesoft-Tuxedo、SAP-Web、SAPGUI、Siebel-DB2 CLI、Siebel-MSSQL、Siebel-Web和Siebel-Oracle协议。

传统

终端仿真(RTE)

邮件服务

Internet邮件访问协议(IMAP)、MS Exchange(MAPI)、POP3和SMTP。

中间件

Jacada和Tuxedo(6、7)协议。

流数据

Media Player(MMS)和Real协议。

无线

i-Mode、VoiceXML和WAP协议。

    Loadrunner提供三种选择协议的方式:1)单协议脚本;2)多协议脚本;3)最近新建脚本类型使用过的协议。

3.1.2脚本编写和录制

    Loadrunner支持手动编写和录制两种方式生成脚本。

   手动编写支持常见的编程语言,如C++、Java、Visual Basic等。该工具按支持的编程语言,以及应用分类封装了一些常用方法,当手动编写脚本时,可以查阅函数库说明文档进行使用。

    脚本录制时,VuGen模拟数据库客户终端并追踪所有用户发出的请求与用户从服务器接收的请求

Loadrunner录制关系图

停止录制时,所有客户端和服务器交互协议会被放在Generation Log内。VuGen根据Generation log进行协议交互分析,最终生成脚本。

    回放期间, Vuser scripts通过调用服务器API直接与服务进行交流。因为不需要客户端界面,所以可以允许大量用户运行或使用更少的机器进行测试,同时在客户端未开发的时候执行测试。

Loadrunner回放关系

3.1.2.1录制过程控制

    在录制过程中,用户可以进行控制。包括开始录制、暂停录制、继续录制、插入集合点、插入开始和结束事务以及插入注释等功能。

3.1.2.2脚本参数化

    在脚本录制完成后,可以对其中的可变数据进行参数化,以便获取真实的用户取值。

  1. 参数化提取数据行支持以下方式:
  • Sequential:顺序,所有虚拟用户按照顺序读取数据表;
  • Random:随机,所有虚拟用户随机形式读取数据表 ;
  • Unique:唯一,所有虚拟用户每次各取一值(不重复)。
  1. 参数的获取方式支持:
  • Each iteration:每次迭代以后;
  • Each occurrence:每次出现参数;
  • Once:每出现一个虚拟用户。

3.1.2.3脚本回放

    脚本可以进行回放,可选“回放过程页面展现”的方式。回放过程中以日志呈现,如果出现错误将说明原因并标红处理,执行完后进行日志保存。用户可以在运行日志中查看到相应的执行信息。

    并且回放完后,以页面统计方式呈现执行结果。包括回放的总体结果(成功/失败),失败的事务(步骤)数,以及以目录树的结构呈现每步骤的运行情况,如果出错的需要显示具体的错误信息。最后结果可以以HTML的形式导出。

3.1.3录制选项设置

    该部分主要包括对编写录制脚本所选语言、通信协议的选择、录制模式、录制结果处理、录制时错误处理、字符集支持、关联属性等的设置。

    持HTML-base和URL-base两种方式:

    HTML-base方式:是对每个页面录制形成一条语句,在该模式下,访问一个页面,首先会与服务器之间建立一个连接获取页面的内容,然后从页面中分解得到其他的元素(component),然后建立几个连接分别获取相应的元素。

    URL-base方式:是将每条客户端发出的请求录制成一条语句,对在该模式下,一条语句只建立一个到服务器的连接,并将通讯过程中的很多隐藏的信息都录制出来(如session、cookie)。

 

3.1.4运行时设置

    该部分主要包括对脚本迭代过程、用户操作的思考时间、运行错误处理方式、虚拟用户以线程或进程来处理的选择、用户网络模拟、浏览器效仿、检查点等设置。

3.1.5强大的函数库

    该工具按支持的编程语言,以及应用分类封装了一些常用函数,包括通用函数和特定协议的函数。

    通用函数包括:信息相关的函数,如输出、打印错误信息;事务函数,如插入事务;运行时函数,如思考时间设置;参数相关函数,如字符转换,获取变量等。

     特定协议的函数跟录制的协议类型有关系。主要方便用户在该协议下使用提供的特定函数进行过程通信的模拟。

3.1.6系统及浏览器的支持

  1. 系统支持
  • Windows Vista SP2 32-bit
  • Windows XP Professional SP3 32-bit
  • Windows Server 2003 Standard Edition/Enterprise Edition SP2 32-bit
  • Windows Server 2008 Standard Edition/Enterprise Edition SP2 32-bit and 64- bit
  • Windows 7
  1. 浏览器支持
  • Microsoft Internet Explorer 6.0 SP1 or SP2
  • Microsoft Internet Explorer 7.0
  • Microsoft Internet Explorer 8.0

3.2Controller(控制器)

     Controller根据实际负载场景分析进行性能测试场景的模拟配置,并配置相应的性能计数器,然后以脚本为组分配到相应的压力生成器进行用户模拟完成负载测试。

该部分主要包括场景类型选择、场景设计、场景执行及场景监视。

3.2.1场景类型选择

     场景类型包括:手动测试场景和面向目标测试场景。

3.2.1.1手动测试场景

     根据实际负载场景分析进行性能测试场景的模拟配置。

3.2.1.2面向目标测试场景

    面向目标场景是一个闭环回馈关系,在这种场景模式下,首先定义要达到的目标,然后LoadRunner会自动基于这些目标创建场景,运行过程中,会不断的将结果与目标相比较,以决定下一步怎么走。

3.2.2场景设计

3.2.2.1手动场景配置

 场景配置可以按照场景计划和用户组计划。

  1. 按场景计划,用户平均分配给虚拟用户组(一个测试脚本为一个虚拟用户组),然后统一进行计划配置,包括Initialize、Strart Vusers、Duration和Stop Vusers的设置。

     Initialize:初始化脚本,即提前为虚拟用户分配好所需的资源,设置初始化脚本的方式包括:

  • 在每个虚拟用户运行时初始化;
  • 每隔一段时间初始化一定的虚拟用户;
  • 在运行前完成虚拟用户的初始化。

     Strart Vusers:设置虚拟用户加载数量和方式,方式包括:

  • 同时加载所有用户;
  • 每隔一段时间加载一定的虚拟用户。
  • 设置场景的持续运行情况,包括:
  • 按照设置运行,即每个虚拟用户按照所指定的迭代次数运行,直到运行结束。
  • 按指定的时间运行,脚本迭代次数被忽略。

     Stop Vusers:停止虚拟用户及释放资源,停止虚拟用户使用方式包括:、

  • 持续运行结束后,同时停止所有的虚拟用户;
  • 每个一段时间停止一定量的虚拟用户。
  1. 按用户组计划,以组为单位进行计划,每个组都要设置自己的Strart Group、Initialize、Strart Vusers、Duration和Stop Vusers。

        Strart Group:设置每个组的运行方式,包括:

  • 当点击运行场景后,所有虚拟用户组立即执行。
  • 当点击运行场景后,隔一段时间后执行所有虚拟用户组。
  • 在某个特定的用户组运行结束后才开始,通俗的讲就是在某个脚本运行结束后才开始运行。
  1. 在手动场景中同时支持以百分比把虚拟用户分配到各用户组(脚本)中。

3.2.2.2面向目标场景配置

    在面向目标场景中,先定义测试达到的目标,然后再自动根据这些目标创建场景。

  1. 场景设置,包括:
  • Run Time:设置一个时间,当目标达到后该场景还会持续运行设置时间后结束。
  • If target cannot be reached:设置如果目标达不到,该如何处理场景,包括:停止场景并保存结果;继续运行场景直到达到目标。
  1. 加载行为设置,包括:
  • 自动加载用户;
  • 设定一个时间后达到目标;
  • 设置每隔一段时间增加一定的目标量。
  1. 目标类型设置,包括:
  • 虚拟用户数目标类型,主要用来测试服务器对并发用户的处理能力。
  • HPS(Hit per Second)目标类型,该目标是点击数/秒。设置HPS目标,同时设置最小虚拟用户数和最大虚拟用户数:当场景执行时,会优先使用最小的虚拟用户数来达到定义的目标;如果最小的用户达不到目标,则自动增加虚拟用户数,知道定义的最大虚拟用户数。
  • TPS(Transaciton per Second)目标类型,该目标是每秒处理的事务数。指定脚本中的目标事务,设置TPS目标,同时设置最小虚拟用户数和最大虚拟用户数。
  • 事务响应时间(Transaction Response Time)目标类型。指定脚本中的目标事务,设置该事务响应时间目标,同时设置最小虚拟用户数和最大虚拟用户数。
  • 每分钟处理的页面数(Pages per Minute)目标类型。设置目标,同时设置最小虚拟用户数和最大虚拟用户数。

3.2.2.3配置View Script

    在场景设计,脚本加载后,可以通过View Script窗口列表对脚本修改,修改后需要重新加载脚本,确保修改有效。

3.2.2.4配置Load Generator(负载生成器)

    负载生成器在控制器发出指令时,负责和其它的负载机建立联系并强制负载机执行。在View Script窗口中,虚拟用户组(脚本)对应一个负载生成器。

3.2.3场景执行

  1. 场景控制,包括“开始场景”、“停止场景”、“重置/复位”、“虚拟用户组”、场景结束等功能。
  • 开始场景:开始运行;
  • 停止场景:场景运行停止;
  • 重置/复位:将所有的虚拟用户组重置为运行前的“关闭”状态,准备下一次场景执行。
  • 虚拟用户组:查看虚拟用户组每个虚拟用户的详细状态,如运行状态、脚本、负载生成器和所用时间。
  • 场景结束:结束运行,包括三种结束方式:等当前迭代运行结束后,再停止运行场景;等当前的Action运行结束后,再停止运行场景;不等待,立即停止运行场景。
  1. 虚拟用户组的控制,即可以针对每一个虚拟用户组进行相关的操作,包括暂停、重置、初始化、编号重新定义、对虚拟用户排序、查看用户组的脚本日志等。

3.2.4场景监视

3.2.4.1关于联机监控

    Loadrunner提供了一些列监视器,用户只需要做简单的设置即可完成对服务器监控相关信息的监控和统计。

Loadrunner联机监控

具体包括下列监视器:

  • “运行时”监视器:显示参与场景的虚拟用户数和状态,已经虚拟用户数生成的错误数和类型。
  • “Web资源”监视器:监视场景运行时期间Web服务器上的信息,主要包括Web连接数、吞吐量、HTTP响应数、服务器重试次数和下载到服务器的页面数信息。
  • “系统资源”监控器:主要是监控场景运行期间Windows、UNIX、Tuxedo、SNMP、Antara FlameThrower和SiteScope资源使用情况 。
  • “网络延迟”监控器:显示关于系统网络延迟的信息 。
  • “防火墙”监控器:用来度量场景执行期间防火墙服务器信息统计的情况。
  • “Web服务器资源”监控器:用来度量场景运行期间Apache、Microsoft IIS、iPlanet (SNMP) 和iPlanet/Netscape Web 服务器的统计信息。
  • “Web应用程序服务器资源”监控器:度量场景运行期间应用程序服务器Ariba、ATG Dynamo、BroadVision、ColdFusion、Fujitsu INTERSTAGE、iPlanet (NAS)、Microsoft ASP、Oracle9iAS HTTP、SilverStream、WebLogic (SNMP)、WebLogic (JMX) 和 WebSphere统计信息的情况 。
  • “数据库服务器资源”监控器:用于度量场景运行期间数据库DB2、Oracle、SQL 服务器和Sybase统计信息的情况 。
  • “流媒体”监控器:用来度量场景运行期间RealPlayer和Media Player客户端以及Windows Media服务器和 RealPlayer 音频/ 视频服务器的统计信息 。
  • “ERP/CRM服务器资源”监控器:用来度量场景执行期间SAP R/3 系统、SAP Portal、Siebel Server Manager、Siebel Web 服务器和 PeopleSoft (Tuxedo) 服务器的统计信息 。
  • “Java性能”监控器:用于度量J2EE对象及J2EE和EJB服务器对象的统计信息 。
  • “应用程序组件“监控器:用来度量场景执行期间 Microsoft COM+和 Microsoft .NET CLR 服务器的统计信息。
  • “应用程序部署解决方案”监控器:用来度量场景执行期间 Citrix MetaFrame XP 和 1.8 服务器的统计信息。
  • “中间件性能”监控器:度量场景执行期间 Tuxedo 和 IBM WebSphere MQ 服务器的统计信息 。
  • “基础结构资源”监控器:用于度量场景执行期间网络客户端数据点的统计信息。

3.2.4.2监控器与度量

    在控制器(Controller)中,可以选择配置监视器,添加相应的性能因子(如CPU使用情况、内存使用情况)进行监控。并且支持对监控的时间频率(如每次/5s)进行设置。当场景运行后,Controller会把监控中的数据以MS Access方式保存,以便后面分析器进行处理。

3.3Load Generator(负载生成器)

    根据控制器场景中的调度指令,然后根据脚本内容产生实际的负载,扮演“产生负载”的角色。即根据用户的设置,进行自我复制来生成多个客户端向服务器发送请求。每复制出来的一份就是一个进程或线程。一台压力测试机运行的虚拟用户数根据测试机的配置而定。多台测试机可以合作,来模拟更多的虚拟用户向服务器发请求。

   控制器与负载生成器关系视图

3.4Analysis分析器

    场景运行后,可以根据保存的结果通过Analysis进行报告和图表方式呈现,以方便用户进行性能结构的分析。

3.4.1测试结果信息

    包括运行场景摘要信息、数据汇总、事务运行情况汇总及HTTP响应情况汇总信息。

  • 场景摘要包括:运行场景所在路径,结果所在路径,场景运行时间等信息。
  • 数据汇总信息包括:场景中最大运行虚拟用户数,总网络吞吐量,每秒钟的平均网络吞吐量,总点击数,每秒的平均点击数等。
  • 事务运行情况汇总,包括场景涉及所有事务的:最小响应时间、平均响应时间、最大响应时间、标准偏差、成功执行次数、失败次数等。
  • HTTP响应情况汇总,所有HTTP主要列出各响应状态(如HTTP200、404、400等)的总数,以及平均每秒响应的数目。

3.4.2监控器信息图分析

    自动根据监控器信息的类型以扇形图、曲线图、直方图等方式进行绘图呈现,并配以相应的信息统计表。反应计数器随时间变化关系的用曲线图进行呈现(如响应时间、吞吐量),对分类统计的用扇形图呈现(如错误统计),对对比统计的用直方图呈现(如事务成功、失败次数统计)。

    可以对图进行操作,包括:设置图中统计数据的粒度、合并多图分析、在图中增加注释、对生成图的数据进行筛选(如事务名、事务响应时间为特定范围)后重绘等。

    可以对信息统计表进行操作,包括:对表字段展现信息进行筛选(包括比例、度量、最小值、最大值、平均值、标准偏差、数量等),字段呈现图形的颜色、指定呈现筛选字段的图形,结果数据复制和导出等。

3.4.3整合分析报告并导出报表

    工具提供一套以上的默认的报告模版,并可以对模版中的标题、logo、页眉、页脚、显示的内容进行设置和增删形成正式的报告模版(模版可以保存,以便下次再次使用),然后工具根据测试结果信息和监控器分析图表生成性能测试报告。最后报告可以以WORD文档、HTML页面、水晶报表的方式导出。

本文为51ste.com原创文章,未经授权,不得转载、摘编等使用上述作品盈利;个人转载,需标明原文出处。

() ()

微信二维码

部落微信公众号

QQ二维码

部落QQ群二维码