搜档网
当前位置:搜档网 › 自动化测试工具LoadRunner和QTP

自动化测试工具LoadRunner和QTP

自动化测试工具LoadRunner和QTP
自动化测试工具LoadRunner和QTP

软件自动化测试工具的分析

摘要

软件测试行业在国内已存在多年,但其发展水平尚处于起步阶段。起初的软件测试完全靠手工来完成。在功能测试中,测试人员根据已编写的测试用例来执行测试计划,手动的输入大量数据并比较预期结果与实际结果,从而对系统的功能进行判定。当进行少量数据测试或者逻辑复杂的系统测试时,测试尚可取得效率。但当有大量的数据需要录入并进行反复测试的时候,手工测试便显得捉襟见肘。而在性能测试中,为了使系统更好的模拟现实的使用情况,软件测试方要联合使用方发起大量的人员在同一时间登录系统并完成相应操作,以验证系统的性能是否能够满足实际使用的需求。这样做不但会消耗大量的财力物力人力,而且也不能完全精确的获得系统性能的一些参数。在人们对测试需求日益增加之时,自动化测试应运而生。解决了长期以来困扰人们的诸多难题,成为了软件测试行业的领先技术与主流方向。所以对于自动化测试研究具有非常实际的现实意义。

自动化测试能够解决大量数据反复录入使用的难题,同时也能解决模拟大量用户对系统进行负载的问题。在论文中主要讨论了两种自动化测试工具,一个是功能测试工具QTP(Quick Test Professional),一个是性能测试工具LoadRunner。在对QTP的研究当中,论文主要描述了QTP在对应用程序的操作过程中显示出的快速、自动化的特点。QTP完成了对同一组数据的逐一自动录入,以及对应用程序某一属性的验证功能。QTP还可以对文字以及图片做验证从而对某一网页的打开与否进行验证。这些功能的完成都需要先编写测试脚本,测试脚本的编写可以直接录制并修改,也可手工编写。QTP生成的脚本可以通过手动修改来实现其对应用程序操作的改变。本次论文将会对QTP自动化的特性进行详细阐述与描绘。论文的另一大重点是性能测试工具LoadRunner。LoadRunner等自动化性能测试工具对于系统的性能测试有着革命性的意义,它使得起初的大量人员投入测试变为只要单人与多台电脑的测试。大量节约了使用成本,同时也大大提高了测试的效率。本次论文将会对LoadRunner在性能测试中对系统大量用户加载与多种系统性能指标进行演示和分析。其中涉及到对LoadRunner脚本的录制与修改,以及利用Controller控制器对被测系统进行大量用户加载的操作过程,以及加载之时之后系统与机器的各项性能指标的监控与分析。

通过这两种很具代表性的工具的研究可以让我们对自动化测试有更深的了解,同时对于自动化测试工具的工作机制有着更深的认识。

关键词:软件测试;自动化测试;QTP;LoadRunner

Analysis Of The Automated Software Testing Tools Abstract

Although software testing has existed for years in the country, it still stays at the stage of starting. The original software testing completely finished by hand. Testers executed the testing plans to input mass of data to compare the actual results and the expecting ones by hand, so that the testers can judge the function of the system. Testing may get efforts when it needs only a few data or it is testing the system with complex logic. But in the situation of inputting mass of data and testing repeatedly, manual testing will be at the loss what to do unless to invest a lot of manpower and time. At that time, to solve this urgent problem, the automatical testing came to the world to change the fate of the whole industry of software testing. At the same time, the study of the automatical testing has become necessary and meaningful.

Two automatical testing tools will be discussed in the treatise, one is QTP (Quick Test Professional)and the other is LoadRunner. They are both the main current testing tools in the country. In the research of QTP, the treatise will describe the main characters(fast and automatical) and the process of executing the plans of the testing. QTP will control the application to be tested to complete inputting the group of data one by one and verify the words and the pictures in the page so that we can check whether the expected webpage has been opened.

LoadRunner will be another key point in my treatise. LoadRunner and the other performance testing tools had brought the evolutional meaning to the industry of performance testing. The saved the cost of plenty manpower and change the testing that needed mass of people to the testing that only needed single person and a few machines. The main characters of LoadRunner will be discussed mainly as well as the working mechanism.We will use Controller to control a lot of virtual user to load the system to be tested, and collect the data of main indexes of the performance of the system and the load generator.

According to the research of the two main current automatical software testing tools, we can get a better understanding of the automatical testing and a deeper understanding of the working mechanism of the automatical testing tools.

Key words:software testing;automated testing;QTP;LoadRunner

II

目录

1前言 (1)

1.1 课题概述 (1)

1.2 课题的研究目标和研究内容 (1)

1.3 课题的研究方法和工作步骤 (2)

2软件测试概述 (3)

2.1软件测试 (3)

2.2手工测试 (3)

2.3自动化测试 (4)

2.4手工测试与自动化测试的比较 (4)

3自动化测试工具 (6)

3.1 功能测试工具 (6)

3.2 性能测试工具 (7)

4自动化测试工具LoadRunner (8)

4.1 LoadRunner的特点及其应用范围 (8)

4.2 LoadRunner三大组件 (9)

4.3 LoadRunner 名词解释与分析 (9)

4.4 LoadRunner工作机制 (10)

4.5 Vugen (11)

4.5.1脚本产生的过程 (11)

4.5.2脚本的录制 (12)

4.5.3脚本的回放 (14)

4.6 Controller (15)

4.6.1 Design (15)

4.6.2 Run (16)

4.7 Analysis (21)

III

5自动化测试工具QTP (26)

5.1 QTP的特点及应用场景 (26)

5.2 QTP的工作流程 (27)

5.3 QTP脚本的录制与回放 (27)

5.4 QTP脚本的加强 (32)

5.4.1 QTP中常用的函数 (32)

5.4.2实现对多组用户名的自动执行 (32)

5.4.3实现对城市与航班的随机选择并输出选择项信息 (35)

5.4.4检查点的使用 (37)

6总结 (40)

参考文献 (42)

致谢 (43)

IV

1 前言

1.1 课题概述

随着软件市场对于软件产品质量要求的提升,软件的质量问题被进一步看重。与此同时软件测试行业得到了快速发展的契机。在当今软件测试行业中,手工测试仍占主导地位,手工测试虽简单易行,但手工测试的进行在很多情况下需要投入大量的人力和时间。同时在一些系统级的测试中,手工测试依旧没法涉足其中。为了提高效率并且提高测试的覆盖率和功能性,自动化测试应运而生。软件自动化测试作为软件测试中的尖端技术将会起到引领作用。因此对于软件自动化测试工具的分析无疑非常具有实际意义。]1[

1.2 课题的研究目标和研究内容

研究目标:阐述软件测试的概念,比较手工测试与自动化测试的优缺点。全面分析软件自动化测试工具的特点与应用场景,详细而明确地描述分析自动化测试工具LoadRunner与QTP的特点、工作流程等。

研究内容:软件测试的概念、意义、国内外现状及发展、工作前景:软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试。它是在软件投入运行前,对软件需求分析,设计规格说明和编码实现的最终审查,是软件质量保证的关键步骤。国内软件测试尚在发展之中,国外软件测试行业一片繁荣。国内软件行业对测试越来越重视,软件测试前景光明。

手工测试的概念、特点:手工测试就是用人为手段执行测试用例,观察测试结果。手工测试通常能发现自动化测试不能发现的缺陷,但同时在一些场景下,手工测试所耗费的人力和时间通常比较大。]2[

自动化测试的概念、特点、应用范围、设计过程:自动化测试就是通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动测试,目的是减轻手工测试的劳动量,提高软件质量和软件测试的效率。自动化测试的优点:提高测试质量、提高测试效率、提高测试覆盖率、执行手工测试不能完成的测试任务、更好地重现软件缺陷的能力、更好地利用资源。自动化测试的局限性:对于定制性项目和周期很短的项目以及业务规则复杂的对象、人体感观与易用性测试,以及不稳定的软件测试,涉及物理交互的测试方面具有局限性。]3[

手工测试和自动化测试的比较:自动化测试不能完全替代手工测试。在一些特殊情况下,手工测试仍然比自动化测试效率高。

LoadRunner的特点:LoadRunner是一种预测系统行为和性能的负载测试工具,通过模拟成千上万名用户和实施实时性能监测来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。]4[

QTP的特点:QTP 提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。专业的测试者也可以通过提供的内置脚本和调试环境来取得对测试和对象属性的完全控制。]5[

LoadRunner、QTP的应用过程:LoadRunner:用Vugen录制LoadRunner 测试脚本—回放脚本—对脚本进行加强—用Controller生成负载—用Analysis 对测试结果进行分析。QTP:生成自动化脚本—同步回放脚本到应用程序—添加检查点—运行测试或测试组件。

自己对于自动化测试过程及软件测试技术的认识:几次培训的项目经历让我感受到了自动化测试的魅力与实力。自动化测试行业是一个高技术行业,经验至关重要,所以自动化测试值得我们长期从事与发展。

1.3课题的研究方法和工作步骤

由于自动化测试工具是需要在实际应用中才能体现其价值的研究对象,所以对于它们我们采用的研究方法是实例分析法:主要通过运用自动化工具对实际软件项目的研究而分析自动化工具的特点和应用过程。

在整个自动化测试工具的的研究过程当中,我把整个课题的研究分成了若干个步骤,每一个步骤对应一个工作阶段:

第一是准备阶段。在这个阶段里面我的主要任务是尽可能搜集软件测试与自动化测试相关的一些资料。同时要下载安装自动化测试工具QTP,LoadRunner 等,这也是我在课题中研究的主题对象。同时为了顺利的运行自动化测试工具,我还需要为其配置相应的系统环境,为分析工作的开展做准备。

第二是研究阶段。在这个阶段里面我主要是要完成对软件测试与自动化测试的概念的分析以及其在国内外的发展情况和前景等。同时完成对QTP,LoadRunner特点和工作流程的分析。完成QTP与LoadRunner对相应应用程序的分析,整理收集相应测试和分析结果。

第三是总结检查阶段。进入这个阶段以后,课题研究的主体已基本成型。考虑到QTP与LoadRunner为应用型软件工具,所以在对其研究的时候容易出现对工具的特点和工序描述不清的情况,所以需要通过与指导老师的交流沟通以及与研究方案进行对照来完成对研究方案的改进和完善。

2 软件测试概述

软件测试是指软件生存周期中的检查、评审和确认工作,其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。]6[

2.1 软件测试

软件测试的目标和意义:软件测试的目的就是发现软件中的各种缺陷,进而供开发人员修改。软件测试只能证明软件存在缺陷,但不能证明软件不存在缺陷,它可以使软件中的缺陷降到一定的程度,而不能彻底消灭缺陷。软件测试可以用较少的用例、时间和人力找出软件中的各种错误和缺陷,以保证软件的质量。

软件测试过程:一个规范的软件测试过程包括:拟定软件测试计划、方案;设计和生成测试用例、准备测试数据;执行测试,记录原始数据,对缺陷进行管理;生成软件测试报告、缺陷的统计和报表。软件测试过程与整个软件开发过程基本上是平行进行的。

软件测试的现状和发展:随着软件产业的发展,软件产品的质量控制与质量管理正逐渐成为软件企业生存与发展的核心。几乎每个大中型IT企业的软件产品在发布前都需要大量的质量控制、测试和文档工作,而这些工作必须依靠拥有娴熟技术的专业软件人才来完成。软件测试工程师就是这样的一个企业重头角色。业内人士分析,该类职位的需求主要集中在沿海发达城市,其中北京和上海的需求量分别占去33%和29%。民企需求量最大,占19%,外商独资欧美类企业需求排列第二,占15%。然而,目前的现状是:一方面企业对高质量的测试工程师需求量越来越大越大,另一方面国内原来对测试工程师的职业重视程度不够,使许多人不了解测试工程师具体是从事什么工作。这使得许多IT公司只能通过在实际工作中进行淘汰的方式对测试工程师进行筛选,因此国内在短期将出现测试工程师严重短缺的现象。因此随着业内软件企业对软件测试的重视程度的增加,软件测试行业也将越来越规范,并具有很好的发展前景。]7[

2.2 手工测试

手工测试的概念:手工测试是最传统的测试方法,它是由测试人员手工编写测试用例,并根据测试用例手工完成测试过程的方法。手工测试是由测试人员手动一个一个的输入测试用例,然后对比预期结果和实际结果,得出测试结果,与自动化测试相对应,属于比较原始但很有必要的一个步骤。

手工测试的特点:手工测试的优点在于简单易行,上手容易,在实际应用过程中方便实用,同时在一些逻辑关系比较复杂的测试项目或环节中较为高效。但同时它的缺点也很明显。在进行测试工作量很大时,可能会输入大量的数据,在

进行重复数据的录入或测试中,手工测试量很大,效率也很低,同时在执行回归测试时实现较为困难。

2.3 自动化测试

自动化测试的概念:自动化测试就是通过采用测试工具或其他手段,按照测试工程师的预定计划对软件产品进行自动的测试,它是软件测试的一个重要的组成部分,它能够完成许多手工无法完成或者难以实现的一些测试工作。自动化测试中除了常规的对于功能的自动化测试,还有针对性能的自动化测试,目前行业中较为主流的性能测试工具便是HP(惠普)公司的LoadRunner。

自动化测试作为当今软件测试行业中的主流方向和前沿技术拥有诸多优点。自动化测试可以提高测试的质量,对于以往只能依靠手工测试而实现的一些测试项目,尤其是在性能测试中利用手工测试对系统进行同步登录操作的误差,自动化测试可以更精确无误的完成。同时自动化测试还能提高测试的效率。过往在用手工测试对系统进行测试时,对于大量数据反复操作以及进行回归测试的过程中,自动化测试可以更快的完成,同时可以反复执行测试用例,大大提高了测试的效率。同时自动化测试还可以提高测试的覆盖率,更好地重现软件缺陷,更好地利用系统资源。

同时自动化测试也有它的局限性。在一些周期很短的项目中,自动化测试由于在前期测试计划制定需要耗费大量时间,所以会大大延长项目的周期,增加成本。在对业务规则复杂的对象进行测试中,自动化测试计划的编写会非常复杂,效率远不及手工测试。人体感观与易用性测试涉及到人的主观思维判断,是自动化测试无法涉及的领域。而对于不稳定的软件,因自动化测试的优点是可重复执行,所以并不适合不稳定的软件的多次执行。在涉及物理交互的测试项目中,需要人为手工的操作一些实体工具,自动化测试无法进行。]8[

2.4 手工测试与自动化测试的比较

早期的软件测试都是由手工完成的,而手工测试是一项艰苦的工作,它的工作量大,需要投入大量的时间和精力,而完全的手工测试已经满足不了软件开发的需求了。软件的快速发展催生了另一门技术的诞生--软件自动化测试。自动化测试技术是一项非常重要的技术,也是非常前沿的一项技术,在多数情况下可以替代手工测试的一门相对便捷的技术。

软件自动化测试的目的其实就是为了减轻繁杂的手工测试带来的大工作量,从而达到提高软件质量。当然软件自动化测试还无法完全替代手工测试,在相当一些情况下,手工测试依旧相对实用。

在软件开发过程中,软件测试工作要占用较长的项目周期,而在一些对于可靠性要求很高的软件测试中,其比例会更高。而在这些测试过程中,某个功能或某个特性要经过反复的验证和测试,尤其是在回归测试中,更要大量重复之前的

一系列操作。同时随着软件版本的更新和升级,重复测试又要反复的开展。这就大大加大了工作量,也降低了工作的效率,而自动化测试的应用能够大大的缓解这一过程带来的工作量。

但同时一些不需要大量重复的功能模块或是项目,本身规模也较小,如果依然使用自动化测试,效率反而降低,成本也会相应增加。由此可见,软件自动化测试技术不是万能的,但却是前沿的高端技术,是我们需要在软件行业中大力发展的技术。

3 自动化测试工具

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。在进行自动化测试的时候,我们需要用到自动化测试工具。根据测试项目的需求自动化测试工具可大致分为功能测试工具和性能测试工具。功能测试工具主要是用于替代部分手工测试对于系统的操作,验证系统功能的正确性,提高测试的效率。功能测试工具虽可用手工替代,但其在多方面应用的高效性是手工测试不能比拟的。相比而言,性能测试工具则不能被手工测试所替代,性能测试工具可以获取系统运行中一些性能指标,这非人眼人手所能获得数据。同时一些较好的性能测试工具还可对性能测试的一些指标进行横向纵向对比,从而更好的发现系统的瓶颈,进一步增强系统的性能。

无论是功能测试工具还是性能测试工具都将成为软件测试行业未来发展的主流方向和主要途径。在软件自动化测试快速发展的同时,测试工具的数量也与日俱增,各大软件生产企业百花齐放,测试工具各有千秋。对此,我们列举了一些在国内软件企业中常用的功能和性能测试工具。]9[

3.1 功能测试工具

QTP,全名Quick Test Professional software。QTP是HP(惠普)公司的一款企业级自动化功能测试软件。使用QTP的目的是想用它来执行重复的手工测试,QTP主要用于回归测试和测试同一软件的新版本。它可以覆盖绝大多数的软件开发技术,操作简便,实用高效,是目前国内软件测试行业最主流的功能测试工具。

WinRunner是Mercury公司的一种企业级的功能测试工具,用于检测应用程序是否能够打到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版本进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。

Rational Robot是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面IBM Rational Test Manager上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。

上述三款功能测试工具基本上概括了目前行业中所有功能测试工具的特点。他们的主要工作思路都是通过录制、回放和对脚本的修改加强来形成脚本,从而实施对测试对象的操作。目前比较高端与主流的功能测试工具多为企业级测试工

具,可以针对企业的整体架构进行测试。

3.2 性能测试工具

LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能。LoadRunner 能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT 资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。

SilkPerformer是一种在工业领域最高级的企业级负载测试工具。它可以模仿成千上万的用户在多协议和多计算的环境下工作。不管企业电子商务应用的规模大小及其复杂性,通过SilkPerformer均可以在部署前预测它的性能,可是的用户化界面、实时的性能监控和强大的管理报告可以帮助我们迅速的解决问题。例如加快产品投入市场的时间,通过最小的测试走起保证系统的可靠性,优化性能和确保应用的可扩充性。

WebRunner是RadView公司退出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能,用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。

上述几款性能测试工具比较具有代表性,同时也是当今的主流性能测试工具。性能测试工具的功能点以及工作原理多是通过模拟成千上万用户在复杂的环境中对系统或软件进行操作的过程。通过对实际用户的模拟来对系统或软件产品进行评估从而根据评测结果提出对系统或软件产品的修改意见,从而提高产品的性能。性能测试工具解放了双手,节省了大量时间与人力物力资源,对于软件测试行业的发展起到了至关重要的作用。

4 自动化测试工具LoadRunner

一个系统的成功与否不仅看它是否能达到人们的预期而成功完成某项任务,同时还要看系统的性能是否符合一定标准。系统的性能是一个很大的概念,覆盖面非常广泛,包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。而利用自动化工具则可以模拟真实用户来操作系统,通过这种方式来发现系统性能瓶颈的过程就叫作系统的性能测试。

LoadRunner是一种预测系统行为和性能的负载测试工具,通过模拟成千上万名用户和实施实时性能监测来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化

性能和加速应用系统的发布周期。]10[

4.1 LoadRunner特性

轻松创建虚拟用户:

使用LoadRunner 的Virtual User Generator,我们能很简便地创立起系统负载。该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下业务流程(如下订单或机票预定),然后将其转化为测试脚本。利用虚拟用户,我们可以在Windows ,UNIX或Linux 机器上同时产生成千上万个用户访问。

创建真实的负载:

Controller 的Rendezvous 功能提供一个互动的环境,在其中既能建立起持续且循环的负载,又能管理和驱动负载测试方案。而且,我们还可以利用它的日程计划服务来定义用户在什么时候访问系统以产生负载。

实时监测器:

LoadRunner 内含集成的实时监测器,在负载测试过程的任何时候,我们都可以观察到应用系统的运行性能。这些性能监测器为我们实时显示交易性能数据(如响应时间)和其它系统组件包括application server, web server,网路设备和数据库等的实时性能。

分析结果:

一旦测试完毕后,LoadRunner 收集汇总所有的测试数据,并为我们提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。使用LoadRunner 的Web交易细节监测器,我们可以了解到将所有的图象、框架和文本下载到每一网页上所需的时间。

负载测试是一个重复过程。每次处理完一个出错情况,我们都需要对我们的应用程序在相同的方案下,再进行一次负载测试。以此检验我们所做的修正是否

改善了运行性能。]11[

图4.1 LoadRunner 三大组件 4.2 LoadRunner 三大组件:

Vugen (Virtual User Generator )

用来录制脚本、编辑脚本

Controller

用来布置和执行测试场景

Analysis

用来对测试结果进行分析

4.3 LoadRunner 名词解释与分析: LoadRunner 为性能测试工具,在脚本录制编辑过程中的名词以及系统

Analysis 分析器里面有很多关于系统性能指标的名词,这里列出了一些最为常用

的名词。

Rendezvous (集合点):集合点用以同步虚拟用户以便恰好在同一时刻执行

任务。在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在

LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行

到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,

如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在

集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,

从而达到测试计划中的需求。Transaction (事务):事务就是在脚本定义中定义

的某段操作(ACTION),更确切的说,就是一段脚本语句.定义事务时,首先在脚

本中找到事务的开始和结束位置,然后分别插入一个事务起始标记,这样,当脚

本运行的时候,LoadRunner 会自动在事务的起始点计时,脚本在运行到事务结

束点时计时结束,系统会自动记录这段操作的运行时间等性能数据;在脚本运行

完毕后,系统会在结果信息中单独反映每个事务运行结果。Transactions per

Second (每秒通过事务数/TPS ):显示在场景运行的每一秒钟,每个事务通过、

失败以及停止的数量,是考查系统性能的一个重要参数。通过它可以确定系统在

任何给定时刻的时间事务负载。分析TPS 主要是看曲线的性能走向。将它与平

均事务响应时间进行对比,可以分析事务数目对执行时间的影响。例:当压力加

大时,点击率/TPS 曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开

始出现瓶颈。

Response Time(响应时间)

从用户的角度,响应时间=(C1+C2)+(A1+A2+A3)+(N1+N2+N3+N4);

从系统的角度,响应时间包括(A1+A2+A3)+(N1+N2+N3+N4)。

Database Server A2 Client C1

C2 Internet Web Server A1 A3 N1 N4 N3 N2 LoadRunner Controller VuGen Analysis

LoadRunner

图4.2 LoadRunner 工作机制

对于用户能够接受的响应时间,在行业中一般都有369原则,即3s 以内响应速

度比较快,3s-6s 能接受,9s 以上不能忍受。Throughput(吞吐量):即每秒处理

事务的数量。可以依据服务器的吞吐量来评估虚拟用户产生的负载量,以及看出

服务器在流量方面的处理能力以及是否存在瓶颈。Hits per Second (每秒点击

数):即运行场景过程中虚拟用户每秒向Web 服务器提交的HTTP 请求数。通过

它我们可以评估虚拟用户产生的负载量,如将其和“平均事务相应时间”图做比

较,可以查看点击次数对事务性能产生的影响。通过对查看“每秒点击次数”,

可以判断系统是否稳定。系统点击率下降通常表明服务器的响应速度在变慢,需

进一步分析,发现系统瓶颈所在。HTTP Responses per Second (每秒HTTP 响

应数):是显示运行场景过程中每秒从Web 服务器返回的不同HTTP 状态代码的

数量,还能返回其它各类状态码的信息,通过分析状态码,可以判断服务器在压

力下的运行情况,也可以通过对图中显示的结果进行分组,进而定位生成错误的

代码脚本。Web Page Breakdown (页面分解图):显示某一具体事务在测试过程

的响应情况,进而分析相关的事务运行是否正常。

4.4 LoadRunner 的工作机制:

LoadRunner 是一种企业级测试工具,它的工作机制较为复杂,掌握好

LoadRunner 的工作机制对于更好地掌握和使用LoadRunner 有很大帮助,同时也

会加深我们对LoadRunner 的理解。如图4.2为LoadRunner 工作机制的分解图。

LoadRunner 中的Vugen 通过监听IE 客户端与服务器之间的通信,捕捉记录

两者之间的信息传递来形成脚本。生成的脚本在Controller 之中形成Scenario (场

Start/Stop Load Generators Virtual Users Client Emulation Diag logs Copy/ paste Capture&Record .doc .html Monitoring Vugen

Controller Analysis HTTP Protocol Run Logs IE Clients Script

Scenarios Reports&Graphs MS Word Internet browser MS Excel Mercury Diagnostic s Schedule Run-time Settings Java Clients Servers/Environment Under Test Probes/ Agents Crystal Reports

图4.3脚本开发过程

景),按照制定的Schedule 来执行场景。Controller 通过控制Load Generators 来

对系统加载虚拟用户,并生成分析图表。在Analysis 中可以对图表进行系统分析,

并能以各种格式(Word 、Excel 、Crystal Reports )打印出来。

4.5 Vugen

4.5.1 脚本产生的过程:

脚本录制具体步骤:

(1)创建一个新的虚拟用户脚本,选择 Web(HTTP/HTML) 协议来录制基于浏览

器的应用系统。

(2)设置录制选项。

(3)点击 “Start recording ” 按钮。在“Start recording ”对话框中输入

应用系统网址并点击 OK 按钮。

(4)在 Web 系统中执行用户操作。

(5)点击“Stop Recording ”按钮,保存脚本。

此次我们选用的基于浏览器的应用系统,即LoadRunner 自带网站“Web

Tours ”。此网站是一个飞机订票网站,可完成简单的订票操作,操作方便简捷。

考虑到LoadRunner 对某一网站测试时需要连接网络,所以选用了“Web Tours ”,

只需开启Web Server 即可。开启方法如图4.4:

测试

建立测试目标 分析系统 建立测试环境 计划 录制 增强 事务 检查点 参数化 录制一个虚拟用户脚本 2 1 3 4 回放脚本验证脚本的正确性 图4.4 开启web 服务器

图4.5录制选项

图4.6 Web Tours 主页

4.5.2 脚本的录制:

打开Virtual User Generator ,点击新建,在“Category ”中选择“Web

(HTTP/HTML )”协议。一般情况下,基于浏览器的应用程序推荐使用HTML-based

Script 协议,不是基于浏览器的应用程序推荐使用URL-based Script ,因为我

们使用的是LoadRunner 自带的示例网站,所以我们选用HTML-based Script 方

式对脚本进行录制。

点击“Create ”按钮。

设置完毕后点击“OK ”,进入“Web Tours ”登录页面,如图4.6:

用浏览器打开 浏览器地址 Web Tours 网址 工作目录 网站一开启就开始录制 录制选项 从vuser_init

函数开始录制 用户注册 使用管理

员权限

登录按钮

已注册好的用户

图4.10 添加集合点

图4.8 添加事物 图4.9 LoadRunner 录制工具条2 图4.7 LoadRunner 录制工具条1 在进入此页面后LoadRunner 工具条会记录下当前页面的事件数量:

我们需要对“登录”和“退

出”两个功能的响应时间做分

析,所以要添加事务对这两个功

能进行响应时间的判定。在登录

之前需要对登录功能添加事务

即“Transaction ”。点击录制条上的按钮,输入事务的名称

后点击“Login ”,然后点击结

束事务。

在点击“Login ”进入主页面后,将录制位置改为“Action ”。此时录制到的

事件数目也会随之增加。如图4.9所示。

此时我们需要虚拟用户在进行下一步操作的时候实现同步操作,点击

按钮,如图4.10。添加集

合点完成订票流程后可

以看到Invoice 页面,表

示已经完成订票。完成

订票页面的操作之后,

将录制位置改为

“vuser_end ”。对“退

出”功能使用同样的方

法添加事务描述后,点击停止按钮,结束此次录制过程。 LoadRunner 将会形成相应的脚本“Script”以及录制日志“Recording Log”。在

“Script”中有三个函数分别为“vuser_init”,“Action”以及“vuser_end”。“vuser_init”

为初始化函数与“vuser_end”函数配套使用。这两个函数不参与迭代过程,在每次

脚本执行的时候只运行一次。而“Action ”函数为主体函数,可对主体操作进行

多次迭代。在对网站“Web Tour ”进行回放过程中我们不希望每次都对登录和退

出操作进行多次迭代,所以把登录和退出过程分别放在了“vuser_init ”和

“vuser_end

”函数中,每次运行脚本的时候这两部分不随迭代次数的增加而增当前页面的事件个数 当前录制存放在

init

函数中

图4.11 迭代次数设置 图4.12 回放总结

加。

在“Run-time

Settings-General-Run Logic ”中我们

要对“Action ”部分进行迭代次数的

设置。如图4.11所示,

可以看出随着迭代次数的增加,只

有Action 部分会多次迭代,

vuser_init 和vuser_end 部分只执行一次。

在“Recording Log ”中,我们可以看到LoadRunner 在录制过程中捕获的关

于应用系统客户端与服务器之间的数据通讯:

"GET

/WebTours/header.html"表示获取“WebTours/header.html ”这样一个网页。第一行

表示客户端向服务器发送请求,大小为625字节;第二行表示服务器向客户端发

送164字节的数据包,答复是否接受请求。第三行表示服务器向客户端发送692

字节的数据包,数据包内容为“WebTours/header.html ”网页。

4.5.3 脚本的回放 点击进行回放,在Last Replay Summary 左侧有回放成功与否的报告,同

时在右侧还有录制时和回放时网站的截图(Snapshot )。在Replay Log 中可以看

到关于回放中的迭代的描述,如图4.12所示。

图4.13 场景执行计划

图4.14 场景脚本

4.6 Controller

Controller 是LoadRunner 最核心的组件,是创建、维护、执行和监控场景的

管理中心。一个场景(Scenario )定义了Vuser 执行、测试目标、控制Vuser 的

电脑、执行压力测试条件等。

场景模式共有两种:手工场景和面向目标场景。手动场景:手工控制多少用

户参与运行以及在什么时候运行;在场景执行中,可以添加、启动和停止虚拟用

户运行。面向目标的场景:目标可能是吞吐量、响应时间、并发用户数;LoadRunner

自动地管理虚拟用户 ;在场景执行中,不能添加、启动和停止虚拟用户运行。

为了能够更精确的控制场景的执行,我们选择手动场景模式。

场景执行计划:

4.6.1 Design 打开Controller ,在Design 页面的左上角有控制场景脚本的“Scenario

Scripts ”,在“Load Generator ”负载生成器里添加负载的机器名称。若是本机手

动输入“localhost ”,若是想在另一台机器上进行加载,则输入该机器的IP 地址。

如图4.14所示。

在Design 页面的左下方,是整个场景执行的计划表即“Global Schedule ”,

在这里可以对场景执行的具体方式进行设置。比如场景运行的时间,虚拟用户加

载的个数和方式以及虚拟用户退出执行的方式。如图4.15所示:在“Initialize ”

里面,将场景设置为每一个虚拟用户在场景开始运行的时候就进行初始化。在

“Start Vusers ”里面,我们设置100个虚拟用户(虚拟用户数根据机器配置及具

体项目而定,可高达数十万),并且每5秒钟加载5个虚拟用户。在“Duration ”

中场景的执行时间为5分钟,这里对于测试系统稳定性的情况可以设置为24小在场景执行之前 设计场景

启动场景 在场景执行期间 同时跑多个Vusers 控制各个Vusers 显示各个Vusers 的运行状态

显示来自各个Vusers 的消息

监控系统和网络的资源 在场景执行之后

收集和组织性能参数 启动分析工具(可选)

时或者2天左右的时间。在“Stop Vusers”中,场景执行完毕之后每5秒钟撤下10个虚拟用户。

在进行“Global Schedule”中设置完毕后,在Design页面的右下角会生成对应的加载虚拟用户的走势图。如图4.16所示。

图4.15 全局计划表

图4.16 虚拟用户加载图

4.6.2 Run

点击进入“Run”页面中。在点击“Start Scenario”之前,必须要开启“Web Tour”网站的“Web Server”服务器,否则将无法打开“Web Tours”网站,也就无法让虚拟用户进行登录操作。

在Run页面的左上角是“Scenario Groups”,里面动态记录着Vusers的状态。虚拟用户在执行场景时虚拟用户的状态会发生变化。可以通过对

虚拟用户进行控制和观察。在Vusers控制器里可以手动停止某个或全部虚拟用户。如图4.17所示。

相关主题