收藏 分享(赏)

《软件测试技术》课件第6章 负载测试实例.pptx

上传人:bubibi 文档编号:22692411 上传时间:2024-06-27 格式:PPTX 页数:108 大小:4.39MB
下载 相关 举报
《软件测试技术》课件第6章 负载测试实例.pptx_第1页
第1页 / 共108页
《软件测试技术》课件第6章 负载测试实例.pptx_第2页
第2页 / 共108页
《软件测试技术》课件第6章 负载测试实例.pptx_第3页
第3页 / 共108页
《软件测试技术》课件第6章 负载测试实例.pptx_第4页
第4页 / 共108页
《软件测试技术》课件第6章 负载测试实例.pptx_第5页
第5页 / 共108页
亲,该文档总共108页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第6章 负载测试实例6.1 负载测试的目标负载测试的目标负载测试(LoadTesting)是指在确切、可预知的负载环境中,通过不断提升被测系统的负载(如逐渐增加模拟用户的数量),来观察不同负载下系统的响应时间、数据吞吐量、系统占用的资源(如CPU、内存使用情况)等,以检验系统的行为和特性,进而发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题;或者探寻构成系统的不同组件,如数据库、硬件、网络等的上限性能,以备未来使用。第6章 负载测试实例性能测试(PerformanceTesting)是指在给定基准条件的前提下能达到的运行程度,测试目标软件在给定环境下的运行性能,度量其性能与预定义目标的

2、差距。通常,性能测试用实际投产环境进行测试,来求出最大的吞吐量与最佳响应时间,以保证上线后系统可以平稳、安全地运行。第6章 负载测试实例通常情况下,负载测试、压力测试/强度测试、容量测试等被统称为性能测试。很多时候,测试人员和用户容易将这几种测试混为一谈,下面分别对其进行说明。其中,压力测试/强度测试(StressTesting)是在极限负载(大数据量、大量并发用户等)情况下的测试,查看应用系统在峰值使用情况下的操作行为,以及当负载降低后系统的状态,从而有效地发现系统的某项功能隐患及系统是否具有良好的容错能力和可恢复能力。进一步,压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和

3、极限负载情况下导致系统崩溃的破坏性压力测试。容量测试(VolumeTesting)是测试预先得出能够反映被测软件系统应用特征的某项指标的极限值(如支持的最大并发用户数、可访问的数据库记录数等),该极限值被确定的前提是被测系统在其状态下没有出现任何软件故障或还能保持主要功能正常运行,具体可以在测试需求中对其进行约束。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。第6章 负载测试实例负载测试、压力测试和容量测试这几个概念容易发生混淆,下面通过一个简单的载重汽车例子加以区分。本例中,描述载重汽车性能的指标有载重量和行驶速度。(1)负载测试:载重20吨,汽车是否能以100公

4、里时速行驶;或者载重20吨,汽车的最快速度是多少。(2)压力测试:在20吨、30吨、40吨的情况下,汽车是否还能正常行驶,当载重多少时汽车将无法行驶,当汽车无法行驶后减少载重量,汽车是否还能继续正常行驶。(3)容量测试:如果要求汽车以时速100公里的速度行驶,最多可以载重多少吨。第6章 负载测试实例本节通过介绍LoadRunner工具和测试实例来阐述负载测试的相关内容,以达到如下目标:(1)能够区分负载测试、压力测试和容量测试的区别;(2)了解LoadRunner工具相关的基本概念,能够使用LoadRunner工具;(3)了解Web应用的发展及主要技术手段;(4)能够针对Web应用,设计满足要

5、求的测试用例,并进行测试。第6章 负载测试实例6.2 LoadRunner工具工具简介简介6.2.1 LoadRunner的组件的组件LoadRunner主要由以下几个组件构成:(1)VirtualUserGenerator:虚拟用户生成器,简称VuGen,用来录制被测目标系统客户端的操作,并自动生成虚拟用户脚本。(2)Controller:控制器,它是整个负载测试的控制中心,用来管理、设计、驱动及监控负载测试场景的执行情况以及被测目标系统的资源使用情况。第6章 负载测试实例(3)LoadGenerator:负载生成器,可以是压力机操作系统中的一个进程或线程,它执行虚拟用户脚本以模拟真实用户的

6、行为对被测目标系统发出请求并接收响应,进而模拟真实的负载。(4)Analysis:分析器,它读取控制器收集的测试过程数据,分析负载测试的结果,进一步生成测试报告。(5)Launcher:加载器,负责提供一个集成的操作界面,测试人员可以从中启动LoadRunner的所有其他组件。第6章 负载测试实例6.2.2 LoadRunner与与QTP的区别的区别了解HP公司产品的读者可能会知道,HP公司除了LoadRunner这款性能负载测试工具外,还有一款类似的QTP产品。让人容易产生混淆的是,通常测试人员发现LoadRunner可以做的工作,QTP也可以完成,如Web系统测试。与LoadRunner不

7、同,QTP是一款自动化功能测试工具,它们的主要区别是:(1)产品定位不同:LoadRunner是基于协议的负载测试,侧重的是压力、负载、容量、并发等的测试;而QTP是基于GUI对象的功能测试,主要应用于回归测试、版本验证测试等。第6章 负载测试实例(2)与被测系统交互的方式不同:LoadRunner采用捕获数据包并识别协议报文的方式,通过解析和生成特定的报文与被测系统交互;QTP则是基于操作系统的消息机制来截获消息,通过识别被测系统客户端的控件与被测系统交互。第6章 负载测试实例6.2.3 使用使用LoadRunner的测试流程的测试流程使用LoadRunner进行负载测试,需要经历如图6-1

8、所示的测试流程。图6-1LoadRunner进行负载测试的测试流程第6章 负载测试实例1制订测试计划制订测试计划在此阶段,首先需要定义性能测试要求,从需求中提取有用信息,获取性能测试目标,例如并发用户数量、典型业务流程以及这些业务流程要求的响应时间,然后根据这些性能测试要求,定义对应的压力指标。其次,需要根据测试需求确定系统的运行环境,包括硬件环境、软件环境、网络环境等。最后,需要确定测试环境、工具、数据等,包括搭建测试环境、选用测试工具、准备测试数据。其中,测试数据要保证尽可能地模拟真实情况。第6章 负载测试实例2创建虚拟用户脚本创建虚拟用户脚本使用LoadRunner的VuGen能很简便地

9、创建系统负载并能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。VuGen可以录制真实用户的业务操作流程(如用户注册、酒店预订等),然后将其转化为测试脚本(测试人员也可直接使用C、Java等语言编写测试脚本)。利用虚拟用户,LoadRunner可以在多台Windows、UNIX或Linux操作系统的主机上,同时模拟成千上万个用户访问被测目标系统的行为,这样一来就能够极大地减少负载测试所需的硬件资源和人力资源。第6章 负载测试实例为了模拟现实环境中多个用户的不同习惯和访问信息,VuGen可以在录制测试脚本后进行参数化处理。参数化可以利用多套、不同的实际数据来测试被测目标系统,从而尽可

10、能地反映出被测目标系统在真实环境下的负载能力。这些测试数据可以来自真实的业务数据,也可以由开发人员直接从数据库中提取,通过文本文件或电子表格等格式导入到LoadRunner中。同时,VuGen支持丰富的数据提取方式和随机访问方式,使得模拟产生的虚拟用户更加真实。第6章 负载测试实例3定义场景定义场景虚拟用户(测试脚本)创建完成之后,测试人员需要根据测试方案设定所采用的负载方案、业务流程组合和虚拟用户数量。通过使用LoadRunner的Controller,测试人员能够快速组织多起用户的测试方案。Controller的集合点(Rendezvous)功能提供一个互动的环境,在其中既能建立起持续且循

11、环的负载,又能管理和驱动负载测试方案。第6章 负载测试实例4运行场景运行场景测试人员在利用LoadRunner进行系统负载测试时,可以定义虚拟用户在什么时候访问系统以产生负载,这样就能将测试过程自动化。在Controller定义的负载方案中,可以定义所有的用户同时执行一个动作,如在某一时间点同时进行系统登录,进而来模拟系统的峰值负载情况。在测试过程中,LoadRunner可以显示和记录每个虚拟用户的访问结果,包括访问被测目标系统的结果是否正确、被测目标系统的响应时间是多少、统计有多少事务通过了测试等。此外,在运行负载测试过程中,测试人员还能通过LoadRunner集成的实时监测器来实时监测被测

12、目标系统中各个组件的性能,包括应用服务器、Web服务器、数据库、网络设备等,可以在测试过程中从客户和服务器两方面评估这些系统组件的运行性能,帮助测试人员更快地发现问题、调整上述系统环境配置、优化负载测试场景。第6章 负载测试实例5分析结果分析结果一旦测试完毕后,LoadRunner收集汇总所有的测试数据,并提供高级的分析和报告工具,以便迅速查找到性能问题进而追溯问题原因。使用LoadRunner的Web交易细节监测器,测试人员和开发人员可以了解到将所有页面(包括图像、框架和文本)加载所需的时间。例如,通过分析页面的加载时间,可以帮助程序员确定是否因为一个大尺寸的图像文件或第三方的数据组件造成被

13、测目标系统运行速度减慢。另外,通过Web交易细节监测器分解得到用于客户端、网络和服务器上点到点的反应时间,便于发现造成被测目标系统运行变慢的原因,定位查找出真正存在问题的组件。第6章 负载测试实例例如,测试人员可以进一步将网络延迟进行分解,以分析构成网络延迟的时间占比,确定DNS解析时间、连接服务器时间及SSL认证所花费的时间中哪一个时间才是系统的瓶颈。通过使用LoadRunner的分析工具,测试人员能够快速查找到出错的位置和原因,并为开发人员提供相应的调整建议。第6章 负载测试实例6重复测试重复测试负载测试是一个需要重复多次的测试活动。在完成每一次负载测试之后,测试人员都会给出本次测试的结果

14、和建议。开发人员根据这些建议对被测目标系统进行代码调整和系统优化。之后,测试人员需要对被测目标系统在相同的测试方案下,再次进行负载测试,从而检验所做的修正是否改善了被测目标系统的性能。这种重复的测试活动需要一直进行,直到测试结果满足测试需求。第6章 负载测试实例6.3 负载测试的设计负载测试的设计6.3.1 事务事务LoadRunner虚拟用户脚本由Init、Action及End三部分组成,其中在虚拟用户设置中可以让Action部分重复执行多次,而Init和End部分仅能执行1次。因此,通常情况下将初始化工作,如用户登录、数据库连接等操作放在Init部分,将退出登录、断开数据库连接等操作放在E

15、nd部分,而将实际的操作放在Action部分。第6章 负载测试实例通常情况下,LoadRunner的Web交易细节监测器只能将所有位于Action部分的脚本作为整体进行测量。例如,脚本中包含用户登录、机票检索、订票、支付等活动,那么此时度量的结果是完成上述所有操作的总时间。如果希望知道虚拟用户完成单个不同操作的时间,需要使用事务(Transaction)对上述操作进行界定。每个事务度量被测目标系统响应指定Vuser请求所用的时间。这些请求可以是简单操作(如等待某个机票查询的响应),也可以是复杂操作(如提交查询并等待系统生成报告)。此外,为了度量某个操作的性能,需要在操作开始和结束位置各插入一个

16、标记,两个标记用于界定该操作,如此就可以定义一个事务。通常,事务用于界定虚拟用户的某一个相对完整的、有意义的业务操作过程,例如登录、查询、交易、转账等都可以作为事务,但一般不会把每次HTTP请求作为一个事务。第6章 负载测试实例LoadRunner运行到该事务的开始点时会开始计时,运行到该事务的结束点时结束计时。这个事务的运行时间在LoadRunner的运行结果中会有显示。通俗地讲,事务就是一个计时标识,LoadRunner在运行过程中一旦发现事务的开始标识,就开始计时,发现事务的结束标识,则结束计时。开始计时和结束计时的时间间隔就是一个事务时间。通常,测试人员将事务时间认为是被测目标系统对一

17、个操作过程的响应时间。第6章 负载测试实例从性能测试的角度出发,测试人员需要知道不同的操作所花费的时间,这样就能够衡量不同的操作对被测目标系统所造成的影响。一个经验丰富的测试人员,需要了解每个操作对应被测目标系统后台的哪些操作,如航班查询可能涉及被测目标系统中的数据库表select操作,一个订单支付操作可能涉及数据库表的insert、update操作以及与外部支付接口的交互活动。测试人员能够从不同的操作响应时间分析得到系统的瓶颈点。可见,正确地设置虚拟用户脚本中的事务,对于分析被测目标系统是十分重要的技术手段。第6章 负载测试实例6.3.2 集合点集合点在介绍集合点这一概念之前,首先需要明确如

18、下三个概念:系统用户数Nu:使用被测目标系统的总人数;在线用户数Nou:高峰时同时访问被测目标系统在线人数;并发用户数Ncu:在同一时刻与服务器进行了交互的在线用户数。三者存在如下关系:NuNouNcu第6章 负载测试实例系统用户数仅反映可能会有多少用户访问该系统,通常仅对数据库中的用户表容量有影响。在线用户数能够在某种程度上反映系统的负载情况,如公司的门户系统,每个员工每天上班都要登录门户系统打卡、收发邮件、访问日程安排等。在线用户数对被测目标系统的服务器内存、缓存等资源占用多。但是,并不是所有在线用户都会在同一时刻对系统发出请求,目标系统服务器所承受的负载还与具体的用户访问习惯相关,所以真

19、正会对系统产生直接影响的是并发用户数。第6章 负载测试实例通常在用户需求规格说明书中,仅会使用一些描述文字说明用户对目标系统的性能需求。例如:“一个拥有4000员工的公司,需要开发一个仅供公司内部员工使用的办公自动化系统(OA系统),最高峰时有500人同时在线,对于系统的典型用户来说,一天之内用户使用访问OA系统的平均时长为4小时,通常用户仅会在8小时工作时间内访问该系统。”对于这样一段文字,我们可以获取到如下信息:系统用户数为4000,在线用户数为500,那么,系统的并发用户数是多少呢?第6章 负载测试实例在这500个同时在线用户中,考察到某一个具体的时间点,可能仅有30%的用户在浏览系统公

20、告,30%的用户在编写邮件,20%的用户将OA系统最小化做其他工作,10%的用户在做登录操作,5%的用户在收邮件,5%的用户在审批流程。这样的情况下,浏览系统公告、编写邮件和做其他工作的80%的用户并没有给OA系统带来任何负载,而其他20%的用户向服务器发起了请求,才真正对服务器构成了压力。因此,从上面的例子中可以看出,系统的并发用户数仅占在线用户的20%。但是,在实际中没有任何人能够给出确切的数字,并且不同系统在不同时刻并发用户数均可能不同。此时,仅能够通过长时间观察和经验对并发用户数进行推算。下面给出了一个并发用户数的推导公式:第6章 负载测试实例其中,L为在线用户的平均会话时长,T为考察

21、时间长度,为并发用户数的峰值。根据这个公式,可以计算得出如下结果:第6章 负载测试实例这个得出的仅仅是理论值,实际情况会有所不同。那么该如何根据实际情况模拟产生并发用户数呢?虽然在Controller中可以让多个虚拟用户一起开始运行脚本,但由于计算机的串行处理机制,脚本的运行随着时间的推移并不能完全同步。此时,需要使用LoadRunner提供的集合点(Rendezvous)。集合点是在虚拟用户脚本中手工设置了一个标志,以确保多个虚拟用户同时执行后续操作。设置集合点后,当某个虚拟用户率先到达集合点时,该虚拟用户将进行等待(代表该虚拟用户的进程或线程将被挂起),直到参与集合的全部虚拟用户都到达集合

22、点后,Controller将释放所有这些虚拟用户,使其继续共同对被测目标系统施压。第6章 负载测试实例注意:仅能向虚拟用户脚本中的Action部分添加集合点。集合点是一种特殊情况下的并发执行,通常是在以优化为目的的性能测试中才会使用,主要是为了对被测目标系统的某些模块、组件进行有针对性的施压,以便找到性能瓶颈。而在以评测为目的的性能测试中,用户更关心的是业务上的并发执行(即同一时刻有多个不同的业务模块、组件被用户访问),通常这种情况下不需要设置集合点。第6章 负载测试实例6.3.3 思考时间思考时间负载测试的目标是为了考量在一个已知的环境下被测目标系统的预期值是多少。因此,通常在进行负载测试的

23、时候需要尽可能地模拟真实的用户使用情况。而在真实的使用情况下,在用户的两个连续操作之间,都会存在一个时间段,不会向被测目标系统发起请求。例如,当用户单击注册按钮看到注册页面后,用户可能要完成阅读用户告知信息、切换输入法、录入用户基本信息等操作,而这些操作都要耗费一些时间才能完成;或者当用户向服务器发起一次搜索请求之后,要在得到的结果中定位寻找真正有用的结果,这样也要花费一定的阅读时间。在LoadRunner中,将存在于两个操作之间的空白时间段称为思考时间思考时间(ThinkTime)。第6章 负载测试实例在录制虚拟用户脚本时,如果不去更改默认的设置,LoadRunner会自动在生成的脚本中插入

24、用户的思考时间。实际上,在思考时间内,用户不会向被测目标系统发起请求,即不会给服务器带来负载。读者可能会认为:在负载测试时去掉思考时间,这样才能给服务器更大的压力。这需要考虑测试的目标究竟是什么,是为了模拟真实情况下服务器的工作情况,还是为了定位极限情况下被测目标系统的瓶颈点。那么,如果需要加入思考时间,多长的思考时间合适呢?通常情况下,思考时间在310s比较合适。但是,还需要根据实际的业务场景和用户情况而定。例如,要完成用户注册,对于一个使用计算机较为熟练的用户,填写用户名、密码、确认密码、手机、邮箱等基本信息可能仅需要10s左右,而对于一个计算机操作不熟练的用户,它所消耗的时间会更长。因此

25、,在确定脚本中思考时间时,应该充分理解测试场景中的相关信息,再确定思考时间的长短。第6章 负载测试实例虚拟用户使用lr_think_time函数模拟用户思考时间。录制虚拟用户脚本时,VuGen将录制实际的思考时间,并将相应的lr_think_time语句插入到虚拟用户脚本中。可以编辑已录制的lr_think_time语句,也可以向虚拟用户脚本中手动添加其他lr_think_time语句。以下函数说明虚拟用户需要等待8s,才执行下一个操作:lr_think_time(8);此外,可以通过设置参数来影响运行脚本时虚拟用户录制思考时间的方式。并且,在分析报告中,也可以通过设置参数来过滤掉所有思考时间

26、带来的影响。第6章 负载测试实例6.4 对对JForum论坛进行负载论坛进行负载测试测试6.4.1 创建虚拟用户创建虚拟用户1创建用户登录和登出的虚拟用户脚本创建用户登录和登出的虚拟用户脚本打开LoadRunner程序,首先看到的是加载器(Launcher),如图6-2所示,在加载器组件中单击“创建/编辑脚本(Create/EditScript)”,这时可以打开虚拟用户生成器(VuGen)组件的起始页。另外两个选项分别是“运行负载测试(RunLoadTests)”和“分析测试结果(AnalyzeTestResult)”。第6章 负载测试实例图6-2LoadRunner11.00窗口第6章 负载

27、测试实例图6-3虚拟用户生成器界面第6章 负载测试实例在如图6-4所示的新建虚拟用户弹出窗口中,确保类别(Category)是热门协议(PopularProtocols),此时VuGen将列出适用于单协议脚本的所有协议。在列表中选择“Web(HTTP/HTML)”,并单击“创建(Create)”按钮,创建一个空白Web脚本。在实际测试中不一定全部是这个协议,根据实际情况而定,可以询问开发人员。第6章 负载测试实例图6-4新建虚拟用户弹出窗口第6章 负载测试实例图6-5VuGen录制向导欢迎页面第6章 负载测试实例VuGen的向导将指导测试人员逐步完成创建脚本,并使其适应测试环境。任务窗格列出脚

28、本创建过程中的各个步骤或任务。在执行各个步骤的过程中,VuGen将在窗口的主要区域显示详细说明和指示信息。测试人员也可以自定义VuGen窗口来显示或隐藏各个工具栏。要显示或隐藏工具栏,则选择“视图”,再选择“工具栏”,并选中或不选中目标工具栏旁边的复选标记。通过打开“任务”窗格并单击其中一个任务步骤,可以随时返回到VuGen向导。单击“开始录制(StartRecording)”按钮,开始进行虚拟用户脚本的录制工作,LoadRunner将会弹出一个如图6-6所示的对话框。第6章 负载测试实例图6-6开始录制对话框第6章 负载测试实例在正式开始录制脚本之前,测试人员需要填写完善对话框中的信息。由于

29、被测系统是JForum论坛,它是一个Web应用程序,所以需要使用浏览器进行访问。应确保“应用程序类型(Applicationtype)”选中的是“互联网应用(InternetApplications)”,并且我们将使用Windows操作系统自带的IE浏览器,作为客户端访问JForum论坛,所以“录制程序(Programtorecord)”应选择“MicrosoftInternetExplorer”。第6章 负载测试实例接下来,在“URL地址”中填入JForum论坛的访问链接地址:http:/10.254.73.20:8080/jforum/forums/list.page注意:此处需要读者将其

30、替换成论坛实际访问的IP地址。其他内容请保持默认,其中“工作目录(Workingdirectory)”是用来保存录制产生的脚本以及保存后续记录测试日志、监控数据等内容的存储空间,默认是在LoadRunner中安装的空间,也可以单击右侧的“.”选择其他的目录。第6章 负载测试实例“录制到Action(RecordintoAction)”对应的下拉列表选择“Action”,这是因为本例子中仅有测试用户注册这一简单的操作,所以将其直接放于Action部分。实际测试工作中,读者需要根据实际测试情况决定将录制内容放置于哪一部分。注:为了避免IE浏览器在打开网站时出错,请确保此时Web服务器(即Tomca

31、t服务)正在运行,如图6-7所示,且保证在整个测试过程中不会关闭该窗口。第6章 负载测试实例图6-7Tomcat运行窗口第6章 负载测试实例此外,根据经验,给出读者如下建议:(1)建议在测试过程中,应该时刻关注Tomcat窗口中是否有异常抛出;(2)选中“Recordtheapplicationstartup”,这样会记录IE浏览器在访问应用时做的初始化工作;(3)如图6-8所示,单击“选项(Options)”,找到“高级(Advanced)”,在“支持字符集(Supportchartset)”选择“UTF-8”,这样可以对中文字符集有更好地支持,避免脚本中出现乱码。第6章 负载测试实例图6-

32、8录制高级选项第6章 负载测试实例单击“OK”按钮之后,LoadRunner窗口会自动关闭,并会自动打开IE浏览器,弹出如图6-9所示的浮动控制窗口,此时Web页面上的所有操作都会被录制下来,形成脚本。建议测试人员在录制的过程中添加事务,也可在录制结束后再添加,前提是必须对每个请求都非常熟悉,清楚地知道某个操作对应的是哪几个请求。图6-9录制时弹出的浮动窗口第6章 负载测试实例接下来,就需要在IE浏览器中模拟真实用户登录和退出JForum论坛的过程。在如图6-10所示的IE浏览器中,单击“登入”连接,打开如图6-11所示的用户登录窗口。图6-10JForum论坛的欢迎页面第6章 负载测试实例图

33、6-11JForum论坛用户登录窗口第6章 负载测试实例图6-12用户test01成功登录之后的JForum论坛界面第6章 负载测试实例退出JForum论坛之后,已经完成了“登录”和“退出”操作,此时需要停止虚拟用户脚本录制。单击如图6-13所示的浮动窗口上的“停止”按钮,停止录制虚拟用户脚本。图6-13单击停止录制按钮退出录制第6章 负载测试实例图6-14LoadRunner录制虚拟用户脚本概要第6章 负载测试实例图6-15工具栏中的“保存”按钮第6章 负载测试实例在弹出的如图6-16所示的对话框中,输入需要保存的文件名,如login-logout,单击“Save”按钮保存虚拟用户脚本。图6

34、-16保存录制的虚拟用户脚本第6章 负载测试实例2查看录制的脚本查看录制的脚本在如图6-17所示的录制概要界面中,单击左侧的“Actions”连接,可以查看刚刚录制的虚拟用户脚本。同时,在该界面的右侧,还可以看到录制脚本过程中VuGen自动保存的用户操作界面的截图。后续校验时可以根据该截图比对脚本,查看是否存在问题。第6章 负载测试实例图6-17录制概要界面第6章 负载测试实例可以在VuGen中查看刚刚录制的虚拟用户脚本。VuGen提供了“树视图”和“脚本视图”两种查看脚本的方式。树视图是一种基于图标的视图,将虚拟用户的操作以步骤的形式列出,而脚本视图是一种基于文本的视图,将虚拟用户的操作以函

35、数的形式列出,如图6-18所示。测试人员可以在该窗口中直接输入C或LoadRunnerAPI函数以及控制流语句,对虚拟用户脚本进行编辑。要在VuGen中进入脚本视图,可以在菜单栏中选择“视图”,再选择“脚本视图”,或者单击“脚本”按钮。第6章 负载测试实例图6-18VuGen提供的脚本视图第6章 负载测试实例3回放录制的脚本回放录制的脚本通过录制一系列典型用户操作(如用户登录、退出系统),已经模拟了真实用户操作。将录制的脚本加入到负载测试场景之前,回放刚刚录制的脚本,以验证其是否能够正常运行每一步必要操作。因为只有在确保每个虚拟用户脚本都可以正确运行的前提下,才能通过Controller在场景

36、中运行该脚本。否则,负载测试将失去意义。在回放过程中,测试人员可以在浏览器中查看操作并检验是否正常。在如图6-19所示的向导页面中,单击“Tasks”中的“VerifyReplay”按钮,回放已经录制的脚本,检查该脚本是否可以正确执行。第6章 负载测试实例图6-19向导中的回放操作第6章 负载测试实例图6-20脚本回放校验结果第6章 负载测试实例图6-21回放结果对比第6章 负载测试实例4添加事务添加事务确认录制脚本正确之后,在使用该脚本进行负载测试之前,需要对脚本进行增强处理,包括添加事务、参数化、设置集合点等操作。本次试验中,仅需要进行添加事务和参数化两步操作。观察图6-18中生成的脚本,

37、位于Action部分的脚本实际上由登录和注销两个操作组成。在不添加事务的时候,LoadRunner会将两个操作的完成时间记录在一起。而实际上我们希望分别得到不同事务的处理时间,因此我们需要在Action部分增加事务。LoadRunner收集关于事务执行时间长度的信息,并将结果显示在用不同颜色标识的图和报告中。测试人员可以通过这些信息,了解应用程序是否符合最初的要求。操作时,可以在脚本中的任意位置手动插入事务。在脚本中将用户步骤标记为事务的方法,是在事务的第一个步骤前面放置一个开始事务标记,并在最后一个步骤后面放置一个结束事务标记。第6章 负载测试实例第6章 负载测试实例图6-23在事务创建向导

38、中添加事务第6章 负载测试实例图6-24在脚本视图下事务的源代码第6章 负载测试实例5参数化用户登录信息参数化用户登录信息在脚本视图中可以发现,脚本中记录的是用户test01的登录和退出操作。但在实际业务中,要改进测试,使得不同的用户名配合该用户对应的密码进行登录,才能确保登录的成功。同样的,注销时也需要使用与登录用户相同的用户名才能确保成功退出。为此需要对脚本进行参数化。这意味着要将录制的值“test01”替换为一个参数。将参数值放在参数文件中。运行脚本时,虚拟用户将从参数文件中取值,从而模拟真实的用户登录和退出业务。选择“视图”,再选择“树视图”,进入树视图;或者单击“Tree”按钮进入树

39、视图,如图6-25所示。第6章 负载测试实例图6-25切换到树视图第6章 负载测试实例图6-26从树视图中进行参数化第6章 负载测试实例单击第一行“username”对应右侧的“ABC”按钮,在弹出对话框的“参数名”输入框中输入“username”,单击“Properties”按钮。对表单中的数据username进行参数化。在图6-27所示的参数属性对话框中,输入文件名“userinfo.dat”,单击“CreateTable”按钮。LoadRunner将提示该参数文件不存在,提示是否创建。在弹出的对话框中单击“确定”按钮,确定创建名为“userinfo.dat”的参数文件。第6章 负载测试实

40、例图6-27参数属性对话框第6章 负载测试实例图6-28编辑参数属性对话框第6章 负载测试实例图6-29对password进行参数化第6章 负载测试实例图6-30完成参数化之后的对话框第6章 负载测试实例图6-31查看username和password参数化后的结果第6章 负载测试实例图6-32对logout事务中的字符串进行参数化第6章 负载测试实例6.4.2 创建场景创建场景负载测试是指在典型工作条件下测试应用程序,例如,多家旅行社同时在一个机票预订系统中预订机票。测试人员需要设计测试用例来模拟真实情况。为此,测试人员要能够在应用程序上生成较重负载,并指定向系统施加负载的时间。特殊情况下,

41、可能还需要模拟不同类型的用户活动和行为。例如,一些用户可能使用其他浏览器访问被测目标系统,或者可能使用移动网络接入被测目标系统。在场景中都可以创建并保存这些设置。Controller将提供所有用于创建和运行测试的工具,帮助准确模拟工作环境。关闭VuGen之后,将回到Launcher界面,如图6-33所示。单击“RunLoadTests”连接,将打开Controller创建新场景。第6章 负载测试实例图6-33运行负载测试第6章 负载测试实例Controller提供了两种场景类型:(1)通过手动场景可以控制正在运行的虚拟用户数目及其运行时间,还可以测试出应用程序能够同时运行的虚拟用户数目。可以使

42、用百分比模式,根据业务分析员指定的百分比在脚本间分配所有的虚拟用户。安装后首次启动虚拟用户时,默认选中百分比模式复选框。(2)面向目标的场景用来确定系统是否可以达到特定的目标。例如,LoadRunner可以根据指定的事务响应时间、每秒单击数或事务数确定目标,然后自动创建场景。在图6-34所示的窗口中,选择“ManualScenario”,由测试人员手动生成场景。然后选择login_logout脚本,单击“Add”按钮,将login_logout脚本加入到新场景中。最后,单击“OK”按钮,完成创建新场景。第6章 负载测试实例图6-34创建新场景第6章 负载测试实例1场景计划场景计划在“场景计划(

43、ScenarioSchedule)”窗口中,设置加压方式以准确模拟真实用户行为。可以根据运行虚拟用户的计算机、将负载施加到应用程序的频率、负载测试持续时间以及负载停止方式来定义操作。用户不会同时登录和退出系统。LoadRunner允许用户逐步登录和退出系统。它还可以确定场景持续时间和场景停止方式。下面将要配置的场景相对比较简单,在设计更能准确地反映现实情况的场景时,可以定义更真实的虚拟用户活动。在图6-35所示的界面中,给场景命名“login-logout”,然后分别设置“StartVusers”、“Duration”和“StopVusers”。第6章 负载测试实例图6-35设计测试场景第6章

44、 负载测试实例“初始化(Initialize)”是指通过运行脚本中的vuser_init操作,为负载测试准备虚拟用户和负载生成器。在虚拟用户开始运行之前对其进行初始化可以减少CPU占用量,并有利于提供更加真实的结果。在“Action”单元格中双击“初始化”。这时将打开“编辑操作”对话框,显示初始化操作。选择同时初始化所有虚拟用户。按照一定的间隔启动虚拟用户,可以让虚拟用户对应用程序施加的负载在测试过程中逐渐增加,帮助准确找出系统响应时间开始变长的转折点。在“Action”单元格中双击“启动虚拟用户”,将打开“编辑操作”对话框,显示启动虚拟用户操作。在“开始X个虚拟用户”框中,输入10个虚拟用户

45、并选择第二个选项:每00:00:15(15秒)启动两个虚拟用户。第6章 负载测试实例测试人员指定本次测试的持续时间,确保虚拟用户在特定的时间段内持续执行计划的操作,以便评测服务器上的持续负载。如果设置了持续时间,脚本会运行这段时间内所需的迭代次数,而不考虑脚本运行时所设置的迭代次数。在“Action”单元格中,单击持续时间或图中代表持续时间的水平线。这条水平线会突出显示,并且在端点处显示点和菱形。将菱形端点向右拖动,直到括号中的时间显示为00:06:00,此时已设置虚拟用户运行5分钟。建议逐渐停止虚拟用户,以帮助应用程序在达到阈值后,检测内存漏洞并检查系统恢复情况。在“Action”单元格中双

46、击“停止虚拟用户”。这时将打开“编辑操作”对话框,显示停止虚拟用户操作。选择第二个选项并输入以下值:每隔00:00:30(30秒)停止5个虚拟用户,然后单击“Run”按钮,切换到运行界面。第6章 负载测试实例2增加增加Load Generator向场景中添加脚本后,可以配置生成负载的计算机(即负载生成器,LoadGenerator)。负载生成器是通过运行虚拟用户,在应用程序中生成负载的计算机。负载生成器通过操作系统上的进程或者线程来运行虚拟用户脚本,从而模拟真实用户的行为。因此,一台配置固定的计算机能够有效运行的虚拟用户数量是有限的。如果希望运行的虚拟用户数量超过了一台负载生成器运行虚拟用户数

47、的最大值,就需要多使用几个负载生成器。一个Controller可以使用多个负载生成器,并在每个负载生成器上运行多个虚拟用户。此外,Controller可以使用的负载生成器的数量以及可以运行的虚拟用户数量还和购买的许可证有关。第6章 负载测试实例图6-36添加新的负载生成器第6章 负载测试实例当然,如果添加的服务器与Controller不在同一台服务器上运行,则需要输入对应服务器的IP地址或主机名,并选中正确的操作系统。添加成功之后,名为“localhost”的负载生成器将出现在负载生成器列表中,并且状态为连接状态,如图6-37所示。图6-37添加成功的localhost负载生成器第6章 负载测

48、试实例3设置被监控的设置被监控的Windows系统系统为了能够在Controller中监视运行被测目标系统时Windows系统的资源使用情况,需要手工在Windows上进行如下操作。进入被监视的Windows系统,在“开始”菜单的“运行”中(可以用Win+R快捷键)输入services.msc,打开如图6-38所示的服务管理器。在服务列表中,开启RemoteProcedureCall(RPC)和RemoteRegistry两个服务。图6-38Windows操作系统的服务管理器第6章 负载测试实例如果在被监视的Windows系统中,管理员帐户没有密码,则需要进行如下操作,为其添加密码。在控制面板

49、中,依次进入“用户帐户”和“家庭安全用户帐户管理帐户”,选择管理员帐户,单击“创建密码”连接,打开如图6-39所示的界面,输入密码,如123456。最后,单击“创建密码”按钮,完成给Administrator添加密码“123456”的操作。第6章 负载测试实例图6-39为Administrator创建密码第6章 负载测试实例4增加对增加对Windows主机的监控主机的监控对被测目标系统生成重负载时,测试人员可能希望实时了解应用程序的性能以及潜在的瓶颈。此时,使用LoadRunner自带的一套集成监控器,可以评测负载测试期间,被测目标系统所在服务器每一层的性能及其组件的性能。LoadRunner

50、包含多种后端系统组件(如Web、应用程序、数据库和ERP/CRM服务器)的监控器。例如,可以根据正在运行的Web服务器类型选择相应的资源监控器。还可以为相应的监控器购买许可证,例如IIS,然后使用该监控器精确定位IIS资源中反映的问题。第6章 负载测试实例图6-40添加度量窗口第6章 负载测试实例在弹出的Windows资源窗口中,单击“Add”按钮,然后在弹出的“AddMachine”对话框的Name输入框中输入运行Tomcat服务器的IP地址,如“10.254.73.20”,选择Platform为“WindowsVista”,单击“OK”按钮,将测试机添加到监控中,如图6-41所示。图6-4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证 > 计算职称

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报