版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LoadRunner性能测试培训质量管理部窦志刚性能测试基础知识性能测试常用术语LoadRunner组件-VirtualUserGeneratorLoadRunner组件-ControllerLoadRunner组件-Analysis基本调优目标什么是性能测试通过狭义的性能测试模拟生产运行的业务压力或者用户使用场景来测试系统的性能是否满足生产性能的要求。广义的性能测试指压力测试、负载测试、强度测试、并发测试、大数据量测试、可靠性测试等和性能相关的测试统称。性能测试基础知识压力测试对系统不断施加压力的测试,是通过确定一个系统的瓶颈或不能接收用户请求的性能点,来获得系统提供的最大服务级别的测试。目的:是发现在什么条件下系统的性能变得不可接受,并通过对应用程序施加越来越多的负载,直到发现应用程序性能下降的拐点。负载测试对系统不断增加压力或增加一定压力下的持续时间,直到系统的一些性能指标达到极限,例如响应时间超过预定目标或某种资源以及达到饱和。区别压力测试侧重压力大小,负载测试往往强调压力持续的时间。性能测试基础知识强度测试强度测试主要是检查程序对异常情况的抵抗能力,如运行最大存储空间,进行可能导致系统崩溃、磁盘数据抖动、网卡满负荷等。主要是异常条件下验证系统是否稳定以及性能方面是否容易扩展。疲劳强度测试疲劳强度测试是一类特殊的强度测试,主要测试系统长时间运行后的性能表现,如一般常见的7X24小时的压力测试。性能测试基础知识并发测试主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题,几乎所有的性能测试都会涉及并发测试。通用说明:持续挂载一定数量用户不断开。LoadRunner进行并发测试相对较少,一般使用测试仪很普遍。大数据量测试一般是针对某些系统存储、传输、统计查询等业务进行大数据量的测试。如CA系统上千万条的数据测试。性能测试基础知识可靠性测试在给系统加载一定业务压力的情况下,使系统运行一段时间,检测系统是否稳定。如施加压力让CPU资源保持在90%以上的使用率,连续对系统加压24个小时,分析系统是否稳定。性能测试基础知识性能指标并发严格意义上的并发:即所有的用户在同一时刻做同一件事情或者操作,一般是同一类型的业务广义的并发:即所有的用户对系统发出了请求或进行了操作,这些请求或者操作可以是相同的,也可以是不同的。LoadRunner压测并发的弱点:
一个IP只能支持65535个连接(理论上),因此需要压测百万级别的并发,必须很多IP地址支持才能实现。性能测试基础知识性能测试基础知识防火墙并发测试标准:ConcurrentconnectionsHost和DUT之间同时连接的总数,并假设所有连接上都有数据传输。即同时可以挂载的用户数量。请求响应时间请求响应时间是指从客户端发出请求到得到响应的整个过程的时间。从客户端发送一个请求开始计时,到客户端接到从服务器端返回的响应接口计时结束。另外一些工具中,会被称为“TTLB”,“Timetolastbyte”。从发送一个请求开始,到客户端收到最好一个字节的响应为止所耗费的时间。事务响应时间(TransactionResponseTime)事务可能是一系列的请求组成,事务的响应时间主要是针对用户而言,是为了向用户说明业务响应时间而提出的。性能测试基础知识CPS(ConnectionPerSecond)新建测试的主要目的是测试被测设备的处理能力。单位时间内能够建立的连接数越多,说明被测试设备的处理器能力越强。一般只关心建立TCP连接的速率,因此使用RST方式关闭连接。吞吐率(Throughput)单位时间内网络上传输的数据量,是衡量网络性能的重要指标。Loadrunner记录的Throughput是接收到服务器返回的所有字节数之和,与本地发出的字节数无关!和网络带宽的关系:TPS*返回数据包的大小=Throughput<带宽吞吐量网络上传输的数量量的总和。吞吐量/传输时间,即吞吐率。性能测试基础知识TPS(TransactionPerSecond)每秒钟系统能够处理的交易或者事务的数量。是衡量系统处理能力的重要指标。一般而言,评价系统性能均以每秒完成的技术交易的数量来衡量系统整体处理能力取决于处理能力最低模块的TPS值HPS点击率每秒钟用户向Web服务器提交的HTTP请求数。是Web应用特有的一个指标:Web应用是“请求-响应”模式,用户发出一次申请,服务器就处理一次。HPS一般与TPS成正比关系,是B/S系统中非常重要的性能指标之一性能测试基础知识资源利用率监控不同系统资源的使用程度,如服务器的CPU、磁盘利用率、内存、网络等。是测试和分析瓶颈的主要参数。性能测试基础知识场景(Scenario)在LoadRunner中主要表现为Controller中设计与执行测试用例中的用户场景。如在controller中选择虚拟用户脚本,设置虚拟用户数量,配置虚拟用户运行时的行为,选择负载发生器,设置执行时间等。负载发生器(LoadGenerator)用于产生压力的真实机器,受controller控制,可以使用户脚本在不同的机器上执行。性能测试中,通常由一个controller控制多个LoadGenerator对测试系统进行加压。虚拟用户(Vuser)模拟现实中的真实用户,通过虚拟用户脚本模拟真实用户的行为。LoadRunner常用术语虚拟用户脚本VuserScript通过VuserGenerator录制或者开发的脚本,用来模拟用户的行为。事务(Transaction)业务上通常是用户的一个或者一系列操作,代表一定的功能;测试人员可以将一个或者多个操作步骤定义为一个事务,来衡量这部分的用户并发响应时间。思考时间(ThinkTime)用户思考时间,为了模拟更接近用户的真实行为而引进的概念。LoadRunner常用术语集合点(Rendezvous)LoadRunner通过集合点实现真正意义上的并发。添加在比较重要的操作动作之前;LoadRunner常用术语LoadRunner工作原理录制启动应用程序并将业务流程录制到脚本中。VuGen为录制的每个操作创建一个步骤。完成录制后,VuGen生成脚本序列,从而形成Vuser脚本。验证将脚本作为单独的测试运行,以此验证其功能并找出潜在的问题。增强向脚本中添加增强功能,使它能够更准确的模拟业务流程,并使能够获得重要数据。添加事务,内容检查和参数。准备进行负载测试LoadRunner-VuserGenerator常用协议(Infosec常用协议)Web(HTTP/HTML)JavaVuserWebServicesWindowssocketsWeb协议(NSAE/CA/NetSign/NetPass/Bisafe)JavaVuser(NetSign/NetPass/CA)WebServices(RA)Windowssockets(NetSign/NSAESM2算法)VuserGenerator-录制Web协议录制HTML-basedscript
基于浏览器的应用程序和VBScriptURL-basedscript
不是基于浏览器的应用程序
基于浏览器的应用程序包含了javascript,并且该脚本向服务器发送了请求,如DataGrid分页按钮
基于浏览器的应用程序使用了HTTPS安全协议如果使用HTML-basedscript模式录制完成后,回放失败。建议修改为URL-basedscript模式来录制。VuserGenerator-录制Web协议HTML-basedscript和URL-basedscript区别HTML-basedscript产生的脚本描述和用户的操作一致,能够非常直观的看到用户的操作流程。直接创建的URL(web_url),表单提交(web_submit_form),链接(web_link)和图像(web_image)等函数URL-basedscript产生的脚本,所有的链接、图像请求和URL操作都被录制为web_url函数中,表单提交被录制为web_submit_data函数。VuserGenerator-录制Web协议VuserGenerator-录制Web协议脚本录制的基本原则充分考虑脚本的执行效率性能测试脚本关注的是如何模拟用户的真实行为,应该接近用户的真正操作。录制完成后尽量不要增加过多的内容,如检查点、循环等操作录制重要的用户业务建议录制常用的、使用频率较高的业务进行录制选择需要的进行录制如果一些操作对用户关注的业务没有影响,可以不进行录制。VuserGenerator-录制Web协议Infosec脚本录制应用测试:完全模拟用户的各个重要的操作进行系统测试;Infosec产品测试:避开用户的各种繁琐操作,假设用户没有思考时间,所有操作都是连续性的,这样才能对被测服务器产生最大的性能压力。如证书下载流程:产品测试的脚本尽可能融合到一个页面中,避免频繁录入提交的操作;如证书下载流程:用户注册-申请证书-下载证书内部测试中,建议将所有的流程放在一个JSP页面中进行处理,这样会对被测设备产生最大压力,能够最大化的发现产品存在的问题。VuserGenerator-录制Web协议JavaVuser根据测试流程,直接进行Java接口的调用,编写测试脚本LoadRunner对Java版本的支持,需要根据实际情况进行确认。如果版本不正确,编译过程会体现相关的错误信息。可以指定JVM堆栈大小从目前的使用情况来看,不是很适合进行稳定性测试。适用产品:NetSign、NetPass、NetCert;有JavaAPI的都可以支持。VuserGenerator-录制Java协议JavaVuser调用问题可以和脚本放在同一个目录;但只有当前的虚拟用户脚本可以调用;放在LR调用的JDKlib目录下,所有用户脚本都可以调用;多台agent同时调用javavuser时建议使用这种方式多台计算机联机测试,所有运行测试脚本的客户机必须安装JDK环境并正确设置路径。VuserGenerator-录制Java协议VuserGenerator-录制Java协议VuserGenerator-录制Java协议Java脚本转换web脚本使用Java协议脚本可以轻松转变为web协议脚本,将java脚本中的内容按照Java语法变成JSP页面,并部署在WAS中即可。VuserGenerator-录制Java协议WebServices基于WSDL文件的录制(宏远证券项目测试)VuserGenerator-录制WebServicesWindows
Sockets(直接发送数据)对于windowssocket协议进行通信的C/S结构的应用程序,可以使用windowssockets类型的Vuser来录制之间的通信。Windowssockets是非常底层的协议,适用于录制一些低级通信会话。
lrs_create_socket(“socket1”,“TCP”,“RemoteHost=46:10001”,LrsLastArg);//建立连接lrs_send(“socket1”,“buf0”,LrsLastArg);//发送数据lrs_receive(“socket1”,“buf1”,LrsLastArg);//接收数据lrs_close_socket(“socket1”);//关闭连接;WSRData21
sendbuf010
"00100312303456"
recvbuf1128
VuserGenerator-录制windowsSocketWindowsSocket(调用DLL)适用范围:一类是不适合录制其功能点的业务系统的性能测试;另外一类是基于C++语言开发的业务系统的性能测试。特点是调用动态库容易,难点是DLL中的动作开发实现。VuserGenerator-录制windowsSocketVuserGenerator-录制windowsSocket脚本编写Vuser_init:
初始化调用部分,一般为创建连接,加载DLL库等;如: lrs_create_socket(“socke<socket>”,“TCP”,“RemoteHost=97:9000”,LrsLastArg);//建立连接 lr_load_dll("C:\\cert\\sm2v11\\dll\\libeay32.dll");//LoadDLL lr_load_dll("C:\\cert\\sm2v11\\dll\\ssleay32.dll");Action:发送接收数据,对数据进行判断等;调用DLL中的动作函数,进行操作; lrs_send("socke<socket>","buf0",LrsLastArg); lrs_receive("socke<socket>","buf1",LrsLastArg); num=runconnect_doublecert(0,0,150000);//函数调用Vuser_end:关闭连接,是否DLL等VuserGenerator-录制windowsSocketVuserGenerator-脚本模式WebVuserGenerator-脚本模式Java协议VuserGenerator-脚本模式Socket参数化参数化是LR的一大特色,通过参数化功能实现了用户行为的差异化。参数化实际是用参数替换一些常量。当脚本运行时,Vuser将使用指定数据源中的值来替换参数。参数的数据源可以是一个文件,也可以是内部生成的变量,可以是数据库中的查询结果。优点:减少脚本的大小和数量虚拟用户脚本更接近真实的用户行为VuserGenerator-脚本增强-参数化参数类型Date/Time:时间类型的参数GroupName:使用虚拟用户所在的组名称代替参数LoadGeneratorName:使用虚拟用户所在的LoadGenerator机器名来替换IterationNumber:使用该测试脚本当前循环的次数来生成参数。RandomNumber:随机数。可以设置产生随机数的范围。UniqueNumber:唯一的数。在属性中可以设置第一个数以及递增的数的大小。递增含义:假如起始数为1,递增为5,那么第一个用户第一次循环取值为1,第二次循环取值为2;第二个用户第一次循环取值为6,第二次为7;VuserGenerator-脚本增强-参数化参数类型VuserID:使用虚拟用户的ID来代替参数值,该ID是由Controller来控制的。Vuser中,VuserID为1。File:可以从属性文件中设置编辑文件,添加内容,也可以从数据库中提取数据。UserDefinedFunction:从开发的dll中获取数据。VuserGenerator-脚本增强-参数化File类型VuserGenerator-脚本增强-参数化File类型-如何获取每行数据Sequential:按照顺序一行行的读取,每次当Vuser访问数据表时都返回到下一个可用的数据行。如果表中没有足够的值,返回到表的第一个值,一直循环到测试结束。强调虚拟用户的一致性,每个虚拟用户运行到该点时取值一致。Random:每次Vuser访问数据表时都分配一个随机值。Unique:唯一的值。为每个Vuser的参数分配一个唯一的值;Unique强调用户的差异性,即每个用户取到的参数值不一致。Samelineasxxxx:如果一个脚本中定义了多个参数,其中某些参数应该是对应的,如Seed和SN;用户名和密码等;VuserGenerator-脚本增强-参数化File类型-何时访问数据表更新参数Updatevalueon定义了何时访问数据表更新参数值。VuserGenerator-脚本增强-参数化File类型-何时访问数据表更新参数Eachiteration:每次迭代时访问数据表获得下一个值。在一次迭代中一个参数可能会出现多次。如用户名、密码出现两次,如果希望这两次的参数取一样的值,就选择此项。用户名和密码两个参数只在不同的迭代之间进行参数的更新,在同一次迭代中取同一个值。Eachoccurrence:该参数的每次出现都需要更新值。即一次迭代中参数如果多次出现将会取不同的值。Once:在一个Vuser中同一个参数取同一个值。VuserGenerator-脚本增强-参数化集合点(Rendezvous)集合点可以控制各个vuser以便在同一时刻执行任务。借助集合点,可以在LoadRunner中实现真正意义上的完全一样的并发。使用集合点,可以在系统上模拟较重的用户负载。当某个Vuser达到该集合点时,Controller会将其保留,直到参与该集合的全部Vuser都到达。当满足条件时,Controller将释放Vuser,这样可以产生非常密集的同一类用户操作或请求。如下,在验证口令时增加集合点,提供最密集的同时验证操作。VuserGenerator-脚本增强-集合点检查点检查Web服务器返回的网页结果是否正确。VuGen支持在脚本中插入Text/Imag检查点。Web_find:主要针对HTML页面显示的内容进行搜索。有时候在页面显示正确的情况下也无法搜索到判断信息。(属于丢弃的方法)Web_reg_find
针对HTML源文件进行搜索。VuserGenerator-脚本增强-检查点Web_reg_find用法web_reg_find("Text=ABC","SaveCount=abc_count",LAST);web_url("Step","URL=...",LAST);if(strcmp(lr_eval_string("{abc_count}"),"0")==0)ActionAelseActionB特点:该函数必须写在要查找的内容请求之前,一般情况下都会写在如下六个函数之前:Web_custom_request(),web_image(),web_link(),web_submit_data(),web_submit_form(),web_url().VuserGenerator-脚本增强-检查点web_find()和web_reg_find()的区别:这两个函数函数类型不同,web_find()是普通函数,web_reg_find()是注册函数;2.VUruntime设置中的“enableimageandtextcheck”对web_find有效,而对web_reg_find无效。
3.web_find()只能只用在基于HTML模式录制的脚本中,而web_reg_find()没有此限制;4.web_find()是在返回的页面中进行内容查找,web_reg_find()是在缓存中进行查找、web_find()在执行效率上不如web_reg_find(),web_reg_find先注册的优势是脚本能够一边接收Server的数据缓冲,一边进行查找,提高了查找的效率5.web_reg_find的参数与web_find并不完全一样,其中有个参数叫做SaveCount,它能够记录查找匹配的次数。而web_find的机制是一旦查找匹配成功,就立即返回,并不继续查找和记录匹配次数。
6.用web_reg_find的优先级要远远高于web_find(),所以web_find()已经属于向后兼容的功能,不再推荐使用;Web_find和Web_reg_find区别关联将一条语句的结果当作另一条语句的输入来链接语句;把脚本中某些写死的数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。通常使用web_reg_save_para函数进行关联,也是从页面源文件查找需要的字符串。VuserGenerator-脚本增强-关联如页面源码部分:<trbgcolor=#66cccc><th>Flight<th>Departuretime<th>Cost<trbgcolor=#66CCff><tdalign=center><inputtype=radioname=outboundFlightvalue=230;378;11/20/2003checked>BlueSkyAir230<tdalign=center>8am<tdalign=center>$378<trbgcolor=#eeeeee><tdalign=center><inputtype=radioname=outboundFlightvalue=231;337;11/20/2003>BlueSkyAir231<tdalign=center>1pm<tdalign=center>$337VuserGenerator-脚本增强-关联VuserGenerator-脚本增强-关联/*Thisweb_reg_save_paramcallappliestothefollowingactionfunction:web_submit_form.*/
web_reg_save_param("outFlightVal",
"LB=outboundFlightvalue=","RB=checked>",LAST);
web_submit_form("reservations.pl",
"Snapshot=t4.inf",
ITEMDATA,
…….
LAST);//NowusethesavedoutFlightVal
web_submit_form("reservations.pl_2",
"Snapshot=t5.inf",
ITEMDATA,
"Name=outboundFlight","Value={outFlightVal}",ENDITEM,
"Name=reserveFlights.x","Value=92",ENDITEM,
"Name=reserveFlights.y","Value=10",ENDITEM,
LAST);ParameterSubstitution:parameter"outFlightVal"="230;378;11/20/2003"*/Lr_save_string
将非空的字符串保存到指定的参数中。如将字符串“777”保存到emp_id变量中。VuserGenerator-常用函数lr_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《知识产权培训》课件
- 《种酿酒白葡萄》课件
- 《诊断原则》课件
- 单位管理制度集合大全【人员管理】
- 单位管理制度合并选集员工管理篇
- 单位管理制度分享合集【员工管理篇】十篇
- 单位管理制度分享大合集【员工管理篇】
- 单位管理制度范例汇编【员工管理】十篇
- 七年级英语SpringFestival课件
- 单位管理制度呈现大全【员工管理篇】
- 指挥中心 施工方案
- 金融模拟交易实验报告
- 国家开放大学电大本科《古代小说戏曲专题》2023期末试题及答案(试卷号:1340)
- 加德纳多元智能理论教学课件
- 北师大版数学八年级上册全册教案
- 现代文阅读之散文
- 从业人员在安全生产方面的权利和义务
- 新开模具清单
- 抗菌药物临床应用指导原则(2023年版)
- 2023年军政知识综合题库
- 2023-2024学年福建省福州市小学语文 2023-2024学年六年级语文期末试卷期末评估试卷
评论
0/150
提交评论