ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:612.84KB ,
资源ID:8188466      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8188466.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Loadrunner性能测试基础教材.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Loadrunner性能测试基础教材.docx

1、Loadrunner性能测试基础教材LoadRunner性能测试基础篇 课程主要学习内容 性能测试基础; LoadRunner主要工具介绍; 以Web类型的性能测试为例讲解从性能测试需求、脚本开发、场景创建、场景运行到结果分析的一个完整的性能测试过程。1 性能测试基础1.1 理解性能测试性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。1) 负载和压力的区别 负载测试和压力测试都属于性能测试,两者可以结合进行。A. 负载测试是为了确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况,检验系统在各种给定负载下是否能达

2、到预期性能指标。B. 压力测试是通过不断向被测系统施加“压力”,测试系统在压力情况下的性能表现,确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。2) 性能记录的数据 性能测试过程中,根据性能测试的不同类型和不同目标,记录的数据也不同。A. 对于一个以调优为目的的性能测试,可能需要重点关注测试过程中各可能的性能制约点(例如磁盘IO、网络拥塞状况、服务器内存使用情况、数据库使用情况等),通过对参数调整后的系统进行反复测试来找到制约性能的因素;B. 一个以验证为目的的性能测试可能会重点关注是否能达到性能指标要求,重点集中在用户体验上。3) 性能测试的工具 性能测试由于需

3、要模拟并发等操作,需要工具的支持才能进行较好的性能测试。如LoadRunner、开源测试工具或是自己开发的工具。1.2 性能测试的目的目的是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。1) 评估系统的能力:测试中得到的负荷和响应时间数据可以被用于验证系统实际运行中的能力,并帮助作出决策。2) 识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄弱的地方。3) 系统调优:重复运行测试,验证调整系统后得到了预期的结果,从而改进性能。4) 检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄

4、露引起的失败,揭示程序中的隐含的问题或冲突。5) 验证稳定性(resilience)可靠性(reliability):在一个生产负荷下执行测试一定时间,评估系统稳定性和可靠性是否满足要求。2 LoadRunner概要介绍LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。LoadRunner主要特性:1) LoadRunner可以通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。通过使用LoadRunner,企业无需购置额外硬件节省成本,并且能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。2) LoadRunner适用于各种体系架构的企业系统,通

5、过模拟实际用户的操作行为和实时性能监测,来帮助更快的查找和发现问题。LoadRunner 能支持广范的协议和技术,为特殊环境提供特殊的解决方案。LoadRunner的主要组件包括三大块:Virtual User Generator、Controller、Analysis。2.1 Virtual User Generator(VuGen)创建性能测试脚本,模拟真实用户的操作。VuGen主要功能:1) 支持多协议的应用程序,比如Web、Socket、Tuxedo、Ejb等等。2) VuGen引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。可以在VuGen里面录制、编写功能脚本模拟

6、真实操作。VuGen创建系统负载的步骤:1) 使用录制方式生成脚本时,它先记录下业务流程,然后将其转化为测试脚本。2) 利用虚拟用户,我们可以在Windows ,UNIX或Linux 机器上同时产生成千上万个用户访问。介绍VuGen参数功能:用Virtual User Generator 建立测试脚本后,可以对其进行参数化操作,这一操作能让我们利用几套不同的实际发生数据来测试应用程序,从而反映出本系统的负载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实际用户的操作行为。参数化里面的Data

7、 Wizard功能:图2-1LoadRunner 通过Data Wizard 来实现从数据库中直接获取测试数据作为参数。Data Wizard 直接连于数据库服务器,从中可以获取所需的数据(如定单号和用户名)并直接将其输入到测试脚本。这样避免了人工处理数据,节省了时间。例图:图2-22.2 Controller创建性能场景,设置负载方案。对于同一个场景可以重复测试,调整程序、服务器、网络等可能影响性能的参数后,重复的测试来判定调整的有效性。虚拟用户测试脚本建立后,接下来设定负载方案,业务流程组合和虚拟用户数量。用LoadRunner 的Controller,可以很快组织起多用户的测试方案。Co

8、ntroller功能简述:1) 可以利用Controller的日程计划服务来定义用户在什么时候访问系统以产生负载,实现性能测试过程自动化。图2-3日程计划设定界面2) 可以用Controller 来限定负载方案,在这个方案中所有的用户同时执行一个动作-如登陆到一个库存应用程序-来模拟并发的情况(集合点)。3) 监测系统架构中各个组件的性能- 包括服务器,数据库,网络设备等-来帮助客户决定系统的配置。4) Controller的目标模式提供更多的测试灵活性。根据目前的用户人数事先设定测试目标,优化测试流程。例如,目标可以是确定的应用系统承受的每秒点击数或每秒的交易量。2.3 Analysis分析

9、性能数据,找出影响性能的原因。一旦测试完毕后,LoadRunner 收集汇总所有的测试数据,并为您提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。Web 交易细节监测器的功能:1) 使用LoadRunner 的Web 交易细节监测器,可以了解到将所有的图象、框架和文本下载到每一网页上所需的时间。例如,这个交易细节分析机制能够分析是否因为一个大尺寸的图形文件或是第三方的数据组件造成应用系统运行速度减慢。2) Web 交易细节监测器分解用于客户端、网络和服务器上端到端的反应时间,便于确认问题,定位查找真正出错的组件。例如,您可以将网络延时进行分解,以判断DNS 解析时间,连接服务器或S

10、SL 认证所花费的时间。通过使用LoadRunner 的分析工具,您能很快地查找到出错的位置和原因并作出相应的调整。3 Web类型负载/压力测试使用LoadRunner 进行测试的过程可以用下图表示:图3-13.1 制定负载测试计划制定负载测试计划一般情况下需要三个步骤,可以用下图表示:图3-23.1.1 分析应用程序参见LoadRunner性能测试设计前分析应用程序.doc。3.1.2 确定测试目标通过一些问题来确定测试目标:目标问题衡量终端用户响应时间完成一个逻辑进程的响应时间是多少?确定硬件配置哪一种硬件配置能够提供最优性能?检查可靠性系统能够无异常正常工作多长时间?检查硬件软件升级升级

11、对性能和可靠性的影响多大?评估新产品服务器硬件软件的选择?衡量系统能力系统不出现明显性能下降情况下可以承受多大的负载?找出瓶颈导致响应时间变慢的因素?不同阶段需要进行不同的负载测试:计划和设计开发发布产品发展评估新产品衡量响应时间检查可靠性衡量响应时间检查软硬件升级衡量响应时间检查硬件配置衡量响应时间找出瓶颈衡量系统能力检查软硬件升级衡量系统能力检查可靠性3.1.3 性能测试设计确定计划要如何执行。确定要使用LoadRunner 度量哪些性能参数,根据测量结果计算哪些参数,从而可以确定Vusers(虚拟用户)的活动,最终可以确定哪些是系统的瓶颈。在这里还要选择测试环境,测试机器的配置情况等等。

12、3.2 开发测试脚本测试脚本的组成:vuser_init、Action 和 vuser_end。其中vuser_init 和vuser_end 都只能存在一个,不能再分割,而Action 还可以分成无数多个部分(通过Create New Action按钮,新建Action)。我们一般把登录动作放在vuser_init,把注销关闭登录放在vuser_end。但是如果我们要在登录动作前做集合点,就必须把登录动作放到Action中,因为vuser_init中不能放入集合点。3.2.1 录制基本的用户脚本以LoadRunner自带的Web Tours应用程序为例。(说明,简要介绍一下WebTours系

13、统)默认设置下录制的脚本在回放中会出现“LoadRunner请求无法找到”的错误。这时在tree view中看不到此组件的相关URL。错误分析:所选择的录制脚本模式不正确。解决办法:打开录制选项配置对话框进行设置,在“Recording Options”的“Internet Protocol”选项里的“Recording”中选择“Recording Level”为“HTML-based script”,单击“HTML Advanced”,选择“Script. Type”为“A script. containing explicit”。 图3-3设置完后录制下来的脚本正常回放。关于录制时的设置参

14、见LoadRunner安装维护及配置手册.doc文档。3.2.2 完善测试脚本删除不必要的脚本。【演示】完善测试脚本有以下这些方法。3.2.2.1 插入事务事务(Transaction):事务是为了衡量请求开始到响应结束的时间。比如:我们在脚本中有一个数据查询操作,为了衡量服务器执行查询操作的响应时间,我们把这个操作定义为一个事务,这样在运行测试脚本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LoadRunner 对于脚本中

15、插入的事务数是不限数量的。计算方式Duration(含Think time),lr_wasted_time函数的使用。【演示】3.2.2.2 插入集合点插入集合点是为了模拟并发的情况。在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而达到测试计划中

16、的需求。【注意】集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。【演示】3.2.2.3 Think TimeThink time,思考时间。可以通过设置思考时间,来模拟真实用户在操作过程中的等待时间。Think Time很容易和Pacing混淆。二者都在loadrunnerVUGen的run-time settings里。为了更好说明区别,引入iteration的概念。通过设置Iteration迭代,可以指定虚拟用户在同一个Action中重复执行多次,每次重复称之为一个iteration。Iteration可以帮助我

17、们模拟现实世界的重复场景。Pacing,步调。通过设置两次迭代之间的间隔时间,来调整各个action之间的步调(或者称之为节奏)。从定义上来看,Pacing是和iteration绑定在一起的,可以认为是iteration pacing。Think time,从定义上来看,think time是在iteration内部的某个action中各个步骤的间隔时间。【注意】需要根据实际业务特点设置思考时间和步长,随意设置值的测试结果没有任何意义。3.2.2.4 插入注释【演示】3.2.2.5 参数化输入如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。这些操作都被记录到了脚本中。当多个

18、虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。用参数表示用户的脚本有两个优点:1) 可以使脚本的长度变短。2) 可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。参数化包含以下两项任务:1) 在脚本中用参数取代常量值。2) 设置参数的属性以及数据源。参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。另外,不是所有的函数都可以参数化的。【演示】参数的类型: DateTime:很

19、简单,在需要输入日期/时间的地方,可以用DateTime 类型来替代。其属性设置也很简单,选择一种格式即可。当然也可以定制格式。 Group Name:在Controller运行中,Group Name为加入场景后脚本的别名。在VuGen 中运行时,Group Name是None Load Generator Name:在实际运行中,LoadRunner 使用该虚拟用户所在LoadGenerator 的机器名来代替。 Iteration Number:在实际运行中,LoadRunner 使用该测试脚本当前循环的次数来代替。 Random Number:随机数。很简单。在属性设置中可以设置产生随

20、机数的范围。 Unique Number:唯一的数。在属性设置中可以设置第一个数以及递增的数的大小。【注意】使用该参数类型必须注意可以接受的最大数。例如:某个文本框能接受的最大数为99。当使用该参数类型时,设置第一个数为1,递增的数为1,但100 个虚拟用户同时运行时,第100 个虚拟用户输入的将是100,这样脚本运行将会报错,参数不够用。【注意】这里说的递增意思是各个用户取第一个值的递增数,每个用户相邻的两次循环之间的差值为1。举例说明:假如起始数为1,递增为5,那么第一个用户第一次循环取值1,第二次循环取值2;第二个用户第一次循环取值为6,第二次为7;依次类推。 Vuser ID:设置比较

21、简单。在实际运行中,LoadRunner 使用该虚拟用户的ID 来代替,该ID 是由Controller 来控制的。但是在VuGen 中运行时,Vuser ID 将会是 1。 File:需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据(下面我们将会介绍) User Defined Function:从用户开发的dll 文件提取数据。VuGen 支持C 语言的语法,在VuGen 中编写函数以供调用。添入随机数的取值范围为(1-100),选择一种数据格式。在Update Value on 中有以下几个选项: Each Occurrence:在运行时,每遇到一次该参数,便会取一个新的

22、值 Each iteration:运行时,在每一次循环中都取不同的值 Once:运行时,在每次循环中,该参数只取一次值【演示Random_Number_Test】Data Wizard连接数据库。【演示Data_Wizard】“Select next row ”有以下几种选择: Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取 Random:在每次循环里随机的读取一个,但是在循环中一直保持不变 Unique :唯一的数。【注意】使用该类型必须注意数据表有足够多的数。比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数

23、,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。 Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录。通常用在有关联性的数据上面。3.2.2.6 插入函数VuGen 中可以使用C 语言中比较标准的函数和数据类型,语法和C 语言相同。下面简单介绍一下比较常用的函数和数据类型。1. 控制脚本流程if else for while 总之 C 语言的控制流程的语句这里都可以直接使用2. 字符串函数由于在VuGen 脚本中使用最多的还是字符串,所以字符串函数在脚本中使用非常频繁

24、。具体的语法请参考帮助说明。strcmp 比较两个字符串strcat 连接两个字符串strcpy 拷贝字符串.【注意】在VuGen 中,以char*声明的字符串是只读的,如果试图给char*类型的字符串赋值的话,编译会通过,但在运行时会产生“Access Violation”的错误。解决这类问题,就是把字符串声明为字符数组,比如char100。3. 输出函数输出函数在调试脚本时非常有用。lr_output_message 输出一条消息.4. LoadRunner 提供的标准函数lr_eval_string 该函数功能是得到参数(参数化输入中)当前的值exg: lr_output_message

25、(temp = %s, lr_eval_string(WCSParam2);lr_save_string 该函数功能是把一个字符串保存到参数中exg: lr_save_string(439,WCSParam3);3.2.2.7 插入Text/Image检查点在进行压力测试时,为了检查Web 服务器返回的网页是否正确,VuGen 允许我们插入Text/Imag 检查点,这些检查点验证网页上是否存在指定的Text 或者Imag,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。【演示】3.2.2.8 关联为什么要做关联?所谓的关联(correlation)就是把脚本中某些写死的(ha

26、rd-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。举一个常见的例子,服务器在每个浏览器第一次跟它要数据时,都会在数据中夹带一个唯一的辨识码Session ID,利用这个辨识码来辨识跟它要数据的是不是同一个浏览器。对于每个新的交易,服务器都会产生新的Session ID给浏览器。那么这个Session ID就要根据实际操作产生的实时值来传递而不能是固定的值,否则服务器会发现这个Session ID是失效的,并且不会传送正确的网页数据给VuGen了。像这种情况我们都需要用到关联。如何做关联?1) 取值,web_reg_save_param函数的用法:如果取值数据超过2

27、56,使用web_set_max_html_param_len(长度值)增加参数值大小;转义字符使用,注意不要把参数自身的双引号转义。2) 关联使用结构关联函数;请求;对关联函数生成数据的使用。3) 关联方法自动:录制后自动关联,录制完成回放后自动关联Ctrl+F8;手动关联:请求开发人员确定需要关联的数据;先自动后手动。【例子】3.2.3 Run-Time Setting图3-4Run Logic:设置Action的iterations数,并且可以对脚本里的Action进行增删;Pacing:设置步长;Log:日志是否打开及日志设置;Think Time:思考时间是否忽略;运行时的设置参见L

28、oadRunner安装维护及配置手册.doc文档。3.2.4 单机运行测试脚本运行脚本;双击出错信息可以定位到错误脚本行;调试。【演示】3.2.5 VuGen 其他有用的功能3.2.5.1 脚本压缩功能图3-53.2.5.2 tools菜单图3-63.3 创建运行场景新建场景时,出现如下界面:图3-71) Manual Scenario:该项是手动设置场景。2) Manual Scenario with Percentage Mode:该项只有在“Manual Scenario”选中的情况下才能选择。选择该项后,在场景中我们需要定义要使用的虚拟用户的总数,Load Generator mach

29、ine 机器集,然后我们为每一个脚本分配要运行的虚拟用户的百分比。3) GoalOriented Scenario: 在测试计划中,一般都包括性能测试要达到的目标。选择该项后,LoadRunner 基于这个目标,自动为你创建一个场景。在场景中,我们只要定义好我们的目标即可。3.3.1 选择场景类型为Manual Scenario3.3.1.1 选择Vuser Groups添加脚本到场景中。【演示】3.3.1.2 添加Load Generator Machines对测试机做连接准备,供脚本运行时调用测试机。【演示】3.3.1.3 设置Global Schedule设置场景运行需要的虚拟用户数量,

30、用户增加的策略,场景运行持续的时间,虚拟用户减少的策略等。【演示】3.3.1.4 设置集合点【演示】3.3.1.5 设置结果文件保存路径【演示】3.3.2 选择场景类型为GoalOriented Scenario点击Edit Scenario Goal按钮进入目标场景设置界面:图3-8目标类型有5种:Virtual Users Goal/ Hits per Second/ Transactions per Second/ Pages per Minute/ Transactions Response Time,根据我们要测试的目标,可以按照以下原则这样选择使用。1) Virtual Users

31、 Goal:测试多少人可以同时运行Web 应用。2) Hits per Second/ Transactions per Second/ Pages per Minute:想测试Web Server 的性能,推荐定义目标类型为:Hits per Second、Pages per Minute 或者Transactions per Second,这些类型都需要指定一个虚拟用户的最小值和最大值的范围。Controller 试图使用最少的虚拟用户来达到定义的目标。如果使用最少的用户,不能达到目标,Controller 增加用户数,直到定义的最大值。如果使用了最多的虚拟用户数,定义的目标还没有实现,那么需要增加最大用户数,重新执行场景。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1