目录
Loadrunner简介
Loadrunner原理
Loadrunner工具组件
1、VUGen(虚拟用户生成器)
2、Controller(控制器)
3、Load Generator(负载生成器)
4、Analysis分析器
性能测试工具,从广义上讲,在性能测试过程中使用到的所有工具都可以称其为性能测试工具。从狭义上来讲,我们可以把性能测试工具分为服务器端性能测试工具与前端性能测试工具。
服务器端性能测试工具也我们测试人员通常所认为的性能测试工具。LoadRunner、JMeter、SilkPerformance、服务器端压力性能工具需要支持产生压力和负载,录制和生成脚本,设置和部署场景,产生并发用户和向系统施加持续的压力。
前端性能测试工具应用比较广泛,开发人员,前端开发人员、测试人员都会经常用到。Firebug 、fildder2、Yslow、HttpWatch,前端性能测试工具只需要关于心浏览器等客户端工具对具体需要展现的页面的处理过程。
Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628
LoadRunne是一种预测系统行为和性能的工业级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。
LoadRunner能够完成:1)轻松创建虚拟用户;2)创建真实的负载;3)定位性能问题;4) 分析结果以精确定位问题所在;5)重复测试保证系统发布的高性能。
根据LoadRunner的总体架构图,包括各个组件VUGen, Controller、Load Generator(s)和Analysis之间的关系,从而分析LoadRuuner工具原理如下:代理(Proxy)是客户端和服务器端之间的中介人,LoadRunner就是通过代理方式截获客户端和服务器之间交互的数据流。
1、LoadRunner的总体架构图:
2、LoadRunner的工作原理图:
3、下面为Loadrunner内部流程图,图示LoadRunner内部各个组件之间如何进行交互,数据流和文件流之间如何进行:
该组件主要用于录制或手动编写脚本模拟用户在被测应用下的一系列活动,以便后面通过对该虚拟用户进行大量复制进行负载测试。该部分主要包括三个部分:脚本的录制、录制选项设置、运行时设置。
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)最近新建脚本类型使用过的协议。
2)脚本编写和录制
Loadrunner支持手动编写和录制两种方式生成脚本。
手动编写支持常见的编程语言,如C++、Java、Visual Basic等。该工具按支持的编程语言,以及应用分类封装了一些常用方法,当手动编写脚本时,可以查阅函数库说明文档进行使用。
脚本录制时,VuGen模拟数据库客户终端并追踪所有用户发出的请求与用户从服务器接收的请求
停止录制时,所有客户端和服务器交互协议会被放在Generation Log内。VuGen根据Generation log进行协议交互分析,最终生成脚本。
回放期间, Vuser scripts通过调用服务器API直接与服务进行交流。因为不需要客户端界面,所以可以允许大量用户运行或使用更少的机器进行测试,同时在客户端未开发的时候执行测试。
①录制过程控制
在录制过程中,用户可以进行控制。包括开始录制、暂停录制、继续录制、插入集合点、插入开始和结束事务以及插入注释等功能。
②脚本参数化
在脚本录制完成后,可以对其中的可变数据进行参数化,以便获取真实的用户取值。
③脚本回放
脚本可以进行回放,可选“回放过程页面展现”的方式。回放过程中以日志呈现,如果出现错误将说明原因并标红处理,执行完后进行日志保存。用户可以在运行日志中查看到相应的执行信息。
并且回放完后,以页面统计方式呈现执行结果。包括回放的总体结果(成功/失败),失败的事务(步骤)数,以及以目录树的结构呈现每步骤的运行情况,如果出错的需要显示具体的错误信息。最后结果可以以HTML的形式导出。
3)录制选项设置
该部分主要包括对编写录制脚本所选语言、通信协议的选择、录制模式、录制结果处理、录制时错误处理、字符集支持、关联属性等的设置。
持HTML-base和URL-base两种方式:
HTML-base方式:是对每个页面录制形成一条语句,在该模式下,访问一个页面,首先会与服务器之间建立一个连接获取页面的内容,然后从页面中分解得到其他的元素(component),然后建立几个连接分别获取相应的元素。
URL-base方式:是将每条客户端发出的请求录制成一条语句,对在该模式下,一条语句只建立一个到服务器的连接,并将通讯过程中的很多隐藏的信息都录制出来(如session、cookie)。
4)运行时设置
该部分主要包括对脚本迭代过程、用户操作的思考时间、运行错误处理方式、虚拟用户以线程或进程来处理的选择、用户网络模拟、浏览器效仿、检查点等设置。
5)强大的函数库
该工具按支持的编程语言,以及应用分类封装了一些常用函数,包括通用函数和特定协议的函数。
通用函数包括:信息相关的函数,如输出、打印错误信息;事务函数,如插入事务;运行时函数,如思考时间设置;参数相关函数,如字符转换,获取变量等。
特定协议的函数跟录制的协议类型有关系。主要方便用户在该协议下使用提供的特定函数进行过程通信的模拟。
6)系统及浏览器的支持
Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628
Controller根据实际负载场景分析进行性能测试场景的模拟配置,并配置相应的性能计数器,然后以脚本为组分配到相应的压力生成器进行用户模拟完成负载测试。
该部分主要包括场景类型选择、场景设计、场景执行及场景监视。
1)场景类型选择
场景类型包括:手动测试场景和面向目标测试场景。
①手动测试场景
根据实际负载场景分析进行性能测试场景的模拟配置。
②面向目标测试场景
面向目标场景是一个闭环回馈关系,在这种场景模式下,首先定义要达到的目标,然后LoadRunner会自动基于这些目标创建场景,运行过程中,会不断的将结果与目标相比较,以决定下一步怎么走。
2)场景设计
①手动场景配置
场景配置可以按照场景计划和用户组计划。
Initialize:初始化脚本,即提前为虚拟用户分配好所需的资源,设置初始化脚本的方式包括:
Strart Vusers:设置虚拟用户加载数量和方式,方式包括:
Stop Vusers:停止虚拟用户及释放资源,停止虚拟用户使用方式包括:、
Strart Group:设置每个组的运行方式,包括:
②面向目标场景配置
在面向目标场景中,先定义测试达到的目标,然后再自动根据这些目标创建场景。
③配置View Script
在场景设计,脚本加载后,可以通过View Script窗口列表对脚本修改,修改后需要重新加载脚本,确保修改有效。
④配置Load Generator(负载生成器)
负载生成器在控制器发出指令时,负责和其它的负载机建立联系并强制负载机执行。在View Script窗口中,虚拟用户组(脚本)对应一个负载生成器。
3)场景执行
4)场景监视
①关于联机监控
Loadrunner提供了一些列监视器,用户只需要做简单的设置即可完成对服务器监控相关信息的监控和统计。
具体包括下列监视器:
②监控器与度量
在控制器(Controller)中,可以选择配置监视器,添加相应的性能因子(如CPU使用情况、内存使用情况)进行监控。并且支持对监控的时间频率(如每次/5s)进行设置。当场景运行后,Controller会把监控中的数据以MS Access方式保存,以便后面分析器进行处理。
根据控制器场景中的调度指令,然后根据脚本内容产生实际的负载,扮演“产生负载”的角色。即根据用户的设置,进行自我复制来生成多个客户端向服务器发送请求。每复制出来的一份就是一个进程或线程。一台压力测试机运行的虚拟用户数根据测试机的配置而定。多台测试机可以合作,来模拟更多的虚拟用户向服务器发请求。
场景运行后,可以根据保存的结果通过Analysis进行报告和图表方式呈现,以方便用户进行性能结构的分析。
1)测试结果信息
包括运行场景摘要信息、数据汇总、事务运行情况汇总及HTTP响应情况汇总信息。
2)监控器信息图分析
自动根据监控器信息的类型以扇形图、曲线图、直方图等方式进行绘图呈现,并配以相应的信息统计表。反应计数器随时间变化关系的用曲线图进行呈现(如响应时间、吞吐量),对分类统计的用扇形图呈现(如错误统计),对对比统计的用直方图呈现(如事务成功、失败次数统计)。
可以对图进行操作,包括:设置图中统计数据的粒度、合并多图分析、在图中增加注释、对生成图的数据进行筛选(如事务名、事务响应时间为特定范围)后重绘等。
可以对信息统计表进行操作,包括:对表字段展现信息进行筛选(包括比例、度量、最小值、最大值、平均值、标准偏差、数量等),字段呈现图形的颜色、指定呈现筛选字段的图形,结果数据复制和导出等。
3)整合分析报告并导出报表
工具提供一套以上的默认的报告模版,并可以对模版中的标题、logo、页眉、页脚、显示的内容进行设置和增删形成正式的报告模版(模版可以保存,以便下次再次使用),然后工具根据测试结果信息和监控器分析图表生成性能测试报告。最后报告可以以WORD文档、HTML页面、水晶报表的方式导出。
Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628
感谢每一个认真阅读我文章的人!!!
我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。