版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LoadRunner培训培训负载负载(Stress)测试工具使用基础培训测试工具使用基础培训1. LoadRunner基本介绍题目题目题目题目2. 用LoadRunner测试的步骤3. 工具使用之一: 录制脚本4. 工具使用之二: 修改脚本5. 工具使用之三: 创建场景6. 工具使用之四: 运行测试7. 工具使用之五: 分析结果8. LoadRunner目前的使用情况LoadRunner基本介绍1.1 LoadRunner基本介绍1.2 LoadRunner运行的典型场景1.3 常用语1.1 LoadRunner基本介绍1. Mercury Interactive公司的压力测试工具LoadRu
2、nner,是目前软件负载测试的工业标准2.LoadRunner是通过模拟多个用户并发负载,并进行实时监控的方式来进行测试 3.支持多种协议,包括HTTP、 WAP 、winsock、Tuxedo、Oracle4.与其它负载测试工具的不同在于,LoadRunner的每一个虚拟用户所占用的系统资源较少,适合于用较少的负载测试机器来达到大规模的负载测试所要求的并发压力5. LoadRunner适用于网络应用的负载测试1.2 LoadRunner运行的典型场景1.3 常用语1.ControlerControler: 负责场景的控制,脚本的分发,运行时数据的收集,测试结果的收集2. GeneratorG
3、enerator: 性能测试中实际压力的发起者,主要是将Controler传送过来的脚本,按场景所要求的运行属性进行收发包的动作;另外,也负责运行时数据的采集 3. MonitorMonitor: 负责收集运行时各主机,数据库待测系统的数据,并形成实时的曲线,用于性能测试运行时的实时分析;Monitor总是在Controler所在的机器上4. AnalysisAnalysis: 主要将收集到的最终的性能测试结果进行统计分析,并形成图表,便于分析系统的总体的性能结果 5. Vuser: Vuser: 是包含有各种运行时属性(循环次数,打印级别等)的脚本6. Scenario: 6. Scenar
4、io: 将各脚本按组的方式组织,按指定的运行时环境进行控制,分发,并监控运行情况7. Transaction: 7. Transaction: 脚本中的一部分,用于场景运行时(运行后),分析该段脚本的各响应时间指标(如平均响应时间、90%响应时间),这是分析用户行为的重要数据注:Controler和Generator只是逻辑上的区分,即它们可以在同一台物理机器上2. 用LoadRunner测试的步骤2.1 用LoadRunner测试的步骤2.2 最重要的是拟定计划2.1 用LoadRunner测试的步骤2.2 最重要的是拟定计划1.分析应用:进行负载测试前需要了解系统的结构;了解现网的实际部署
5、要求;了解用户的使用方式及行为;了解配置的不同对系统的影响2.定义测试目标:例如在较大压力下用户可以接受的最大响应延时是多少;系统要求的在多大的压力下不会出错;在多大的压力下出错率为多少是可以接受的;在多大的压力下系统不会崩溃;测试目的是找到系统的最大处理能力,还是找出系统中有瓶颈的地方3.设计测试所需环境的配置:以上两点结束后,才能给出负载测试的机器配置要求、并发数要求、网络配置要求、以及设计每一个场景,并给出场景成功或者失败的指标,以及场景重复运行的环境准备要求3. 工具使用之一:录制脚本3.1 选择脚本类型3.2 脚本的例子3.3 录制脚本3.4 回放脚本确认脚本的有效性3.1 选择脚本
6、类型1.当做好测试计划后,就知道需要使用何种类型的脚本了,目前LoadRunner可以支持的脚本类型,可以从Virtual User Generator的新建菜单中选择,如下图:2.实际的脚本会根据所选择的不同类型,而自动include不同的头文件3.2 脚本的例子1.左上图为Web(HTTP/HTML)类型的脚本,其它类型的脚本也基本相同2.可以看出,脚本是类似C的语言3.脚本分为Vuser_init、Action、Vuser_end三部分4.值得注意的是,每一个虚拟用户在脚本的执行过程中,只会运行一次Vuser_init,再运行多次循环的Action部分,最后运行一次Vuser_end,这
7、可以从脚本的Run Time Setting中看到,如左下图3.3 录制脚本1.LoadRunner的脚本,一般采用录制的过程获取初始脚本,点击工具栏的可以开始录制2.在弹出的Start Recoding对话框中可以进行更多选项的修改,例如加入浏览器的起始URL,还可以选择录制的脚本是放在init,Action,end三部分中的哪一部分,一般都选择放在Action部分,点击Options按钮,进入高级选项(里面的设置的变化,LoadRunner会自动记忆),里面有许多可设置部分,这里提到一点:Recoding LevelHTML-Based Script是以HTML的方式来理解录制时的行为,记
8、录的脚本与操作一致,但对于Session类操作或者一些列表类的点击与期望有出入,例如录制的脚本多为web_url()等函数URL-Based Script是以HTTP的方式来理解录制时的行为,记录的脚本与操作有一定差异,基本上将一个操作分解为多个HTTP请求,可以处理Session类操作或者一些列表类的点击,例如录制的脚本多为web_custom_request()等函数建议一般建议一般WebWeb类脚本采用类脚本采用HTML-Based ScriptHTML-Based Script方式,方式,如果有问题,再采用如果有问题,再采用URL-Based ScriptURL-Based Scrip
9、t方式方式3.3 录制脚本(续)3.录制时的每一个HTTP请求,都会被按操作顺序记录在脚本里,形成一个或多个LoadRunner的函数,也可以手工写这些函数,具体的函数的使用,参见帮助 4.录制时就应该设置Transaction的动作,(当然,也可以录制完成后再进行设置),方法在是某个需要设置Transaction的动作前设置事务的起始点,如下图在该动作后设置事务的结束点,例如录制一个登录邮箱的动作,在首页点了几个链接后,登录前填好用户名和密码,在点击“登录”按钮之前设置事务起始点“Login”,在点击登录后,邮箱完全显示后,再设置事务结束点“Login”,这样一个Login的事务就设置完成了
10、,生成的脚本如右图:5.一个脚本中可以有多个事务,事务可以嵌套6.录制完成后,点击stop按钮,即上图中左数第3个按钮,可以结束脚本的录制,接着可以存盘3.4 回放脚本确认脚本有效性当脚本录制完成,并存盘后,应立即回放脚本,以检查是否通过回放脚本的动作是Run一次脚本,或者点击F5回放完成后,会有界面弹出,指明该脚本是否执行成功,如下图如回放通过,则脚本录制就算基本完成4. 工具使用之二:修改脚本4.1 参数化4.2 加入打印信息4.3 同步点的概念4.4 备注4.1 参数化1.大部分的脚本都需要参数化,例如,一个登录脚本只记录了以一个用户名/密码对登录某个系统,但要达到以不同的用户名/密码对
11、登录,则需要用到参数化2.参数化就是将脚本中的某个字符串替换为一个参数列表的动作3.参数化的方法很简单,在脚本中将某个字符串选中,点右键,选择Replace With a Parameter,出现右上图:4.确定后,脚本中原有字符串被替换成参数名5.参数化时,参数类型可以采用多种方式,如File、Date/Time、Random Num,以下以File方式来讲解6.文件方式的参数化是较为常见的一种参数化方式,参数文件以ASCII码文件显示,一般需要手工修改该文件的内容7.参数属性窗口(右下图)中有几个需要注意的地方:A SequentialB Unique4.1 参数化(续)考虑做一个10 X
12、 50的负载测试的参数化,即10个并发,每个虚拟用户循环50次,采用文件方式参数化,则:Sequential的方式从参数文件中读取前50行,分给第一个虚拟用户;仍然取这50行,分给第二个虚拟用户,所有的虚拟用户都用前50行,后面的数据无效Unique的方式从参数文件中读取前50行,分给第一个虚拟用户;再从参数文件中读取接下来的50行,分给第二个虚拟用户,所有的虚拟用户都取不同50行,共从参数文件中获取500条数据.注:参数文件以及参数文件的设置属于脚本的属性,一直跟随脚本实际运行时,每个虚拟用户的执行不会按给它的参数的顺序来执行,即单个虚拟用户运行时的所采用的参数是无序的当参数文件不够用时,在
13、场景里初始化时,会报错4.2 加入打印信息1.在负载测试正在进行中,如果出现问题,很难找到问题在哪里,例如web脚本运行时,LoadRunner的Controler通常以返回的HTTP头信息中的状态标识来决定成功与否,例如,状态200为通过;现有的应用已经很智能化,如果未找到页面,也会重定向一个友好的出错提示页面,这样返回200,LoadRunner却不知道应用已报错2.一般而言对于上述情况,可以采用以下方法处理:LoadRunner先进行条件判断,如果不满足条件,则在运行时以及报告里打印信息,来报错,典型的例子为登录时用户不存在,可以采用以下方法:A)检查登录后的返回页面中有无特征字符串或特
14、征图片B)如未找到匹配值,则打印一条信息3.常用的打印函数有几个,如lr_errro_message(),lr_output_message()等等4.打印信息也常用于跟踪每个虚拟用户的事务状态,例如在脚本的多处加入打印信息,一旦出错,能够知道错误具体是在虚拟用户做哪一个操作时出的错4.3 同步点的概念1.首先提到的应该是LoadRunner在执行负载测试时各虚拟用户的运行情况,每个虚拟用户都会不间断地按照Action里的语句来执行,此时会有一个问题,即很难保证每个虚拟用户都是同时发起请求的,可能一个用户在发起请求时,其它的一些用户都在等待上一个请求的回应,这样如果10 X 50的负载测试时,
15、实际对服务器的压力没有10个并发,当事务响应时间越长,则实际的并发量则越小2.同步点的目的就是让所有的虚拟用户在同一时刻发起下面的请求,它能保证后面紧接的一个请求是所有虚拟用户同时发起的3.当设置同步点后,先运行完的虚拟用户会在同步点处等待,直到所有的虚拟用户都到达该点后,再同时发起请求4.设置同步点可以直接在脚本中写lr_rendezvous()函数;rendezvousrendezvousAction Of Script4.4 备注1.Session的控制Session用得越来越多了,这样会导致原来录制的脚本,在以后回放时,由于Session串已不存在,则会报错,因为Session是自动生
16、成的,每次都不一样解决方法是在产生Session之前的脚本前面加入以下函数:web_reg_save_param(“ParaName”,”LB=XXX”,”RB=“YYY”,LAST);原脚本中以后的请求中的Session串用该函数中的参数名代替该函数的实际处理动作是从接下来的HTTP请求的返回包体中找到一个满足左边界为字符串XXX,右边界为字符串YYY的地方,并将两个字符串中间的部分保存为Session的值,以便以后使用,即XXXnnnnnnnnnYYY如果出现在下面的返回包体中,则nnnnnnnnn这个串的值将会作为未来的Session串来使用5. 工具使用之三:创建场景5.1 场景的创建
17、5.2 场景的属性修改5.3 场景的保存5.1 场景的创建1.场景的创建可以从Controler里新建一个,也可以从Virtual User Generator中直接生成,以下讲从Controler里新建场景2.创建场景的始初框中有两种选则,一为手工创建场景,另一个为基于目标的场景,后者主要是给定一些条件,让LoadRunner自己去控制运行时的Vsser的多少,例如让Vusr数从50个到100个变动,直到点击率达到30后,再运行30分钟后退出3.手工创建场景是较常见的,选择已有的Script,加入到场景后,会形成右下图,可以看出,每个Script是以Group的方式存在于场景中的,新建时每个
18、Group并发数为104.可以让每个Group采用不同数目的Vuser,在不同的Generator上运行,这样可以进行分布式的负载测试,只要有足够多的Generator机器和License,就可以进行超强的并发压力5.2 场景的属性修改1.LoadRunner的脚本是有一些属性的,例如,循环次数,是否有thinktime等等,有些属性跟随脚本带入场景(例如thinktime),有些属性在场景中还需要重新设置(例如循环次数)2.所以创建场景后,还应对每个Script的属性分别进行检查,看是否满足场景设计的要求3.关于Schedual,可以进一步定义场景的运行时属性,例如定义该场景以10个并发开始
19、,每2分钟增加5个并发,直到全部并发上去后,再运行10分钟后,再每30秒停止5个并发用户,直到全部停止,这样可以形成阶梯式的并发,更趋向现网,而且更利于发现问题5.2 场景的属性修改(续)4.场景的属性修改,可以完成控制每秒种发包数量的功能(一般用于HTTP响应极快时,例如DSMP接口测试)如果每个请求中有lr_thinktime(1),即Sleep一秒钟,当请求的响应时间很小(千分之几秒)时,这样我们可以将请求包/响应包的时间忽略不计,则N个并发,就是控制了发送包的速度为N个包/秒5.3 场景的保存1.场景的保存,可以保存和该场景相关的脚本位置,场景的属性设置,以及测试结果的位置;另外,它还
20、可以保存Monitor相关的测试配置,这样可以大大减少下次重复测试需要的准备时间2.经验表明,最好把场景,脚本,结果,数据文件保存在一个目录下,再分子目录归类,而数据文件在Script中采用相对路径,这样可以保证这些东西拷到其它机器或其它目录下仍能使用,常用的目录结构如下:6. 工具使用之四:运行测试6.1 运行测试完成的事项6.2 运行时监控待测系统6.3 运行后注意事项6.1 运行测试完成的事项1.当点击Controler里的 按钮时,可以选择Result放置的目录位置,选择并确定后,开始运行测试,运行测试实际完成的动作有:A)编译各脚本(Pending)B)Controler连接各Gen
21、erator(Init)C)Controler将编译后的各脚本以及对应的数据按场景要求,通过FTP方式分发到各Generator机器(Ready)D)各Generator发起请求(对应Run) 6.2 运行时监控待测系统1.Run的时候,可以监控一些数据,分为两类:基本性能数据、服务器性能数据2.基本性能数据是从Generator采集的数据,Controler定时从各个Generator上FTP获取,并图形化显示出来,这类数据包括Run Vuser,Transactions Response Time,Hit Per Sencond,Throughput3.服务器性能数据(需要在场景运行前就进
22、行设置)是从待测系统的各个服务器采集的数据,这样数据的采集点就在待测系统主机上,部分服务器性能数据可以直接从服务器获取(那些服务器已提供这些数据采集的接口),另外一些需要在服务器上启动相应的Agent或采集进程,具体参考手册描述。(盛晓婷曾专门写过一份Monitor的PPT,请参考)4.运行时的监控数据会随着场景不断运行,曲线也会不断变动,按目前的经验,这些曲线的变动十分精确地反映了系统的运行情况,建议大家不断参考各手册,并多一些实践来综合分析Monitor曲线的变动的意义。5.服务器性能数据(如Oracle,Tuxedo,Unix,Weblogic)与具体的应用平台相关,且能帮助分析系统瓶颈,十分重要;一般而言,需要各部分的专家协同进行运行时性能分析,包括了SA,开发人员,DBA。建议在测试计划中明确需要进行的服务器性能采集的种类和需要参与分析的专家列表。6.3 运行后的注意事项1.当分布在各Generator机器上的Vusr均运行完毕后,Controler显示运行完成,此时,Controler会从各Generat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 火电厂实习报告(15篇)
- 开学心得400字8篇
- 居民环保倡议书(10篇)
- 用工单位用工合同(31篇)
- 山西省太原市2024-2025学年九年级上学期期中测评物理试卷
- 河南省周口市西华县2024-2025学年八年级上学期期中地理试题
- 2024年11月八年级期中物理试卷
- 上海高考语文三年模拟真题(21-23年)知识点汇编-古诗词赏析
- 2024年医疗设备维修保养合同范本
- 快递行业劳动协议样式
- 设备维修岗位危险源辨识风险评价及控制表
- 【课件】第5课+森さんは+7時に+起きます+课件-高中日语新版标准日本语初级上册
- Java语言程序设计PPT全套完整教学课件
- 小学英语-Mum bug's bag教学设计学情分析教材分析课后反思
- 复盘养猪分析:探寻背后的成功秘诀
- 《我国运动员在奥林匹克运动会取得的辉煌成绩》 课件
- 艺术设计本科专业人才培养方案
- qdslrdashboard应用软件使用说明
- 旅行社团队确认书三篇
- 海康2023综合安防工程师认证试题答案HCA
- 《超市水果陈列标准》
评论
0/150
提交评论