版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、陈曦性能测试的概念& &基本流程性能测试的类型LoadRunnerLoadRunner运行机制LoadRunnerLoadRunner四大组件性能测试过程中需要关注的一些指标性能测试的常见误区性能测试关键过程LoadRunnerLoadRunner脚本结构事务检查点思考时间常用请求函数关联参数化集合点调试技术Analysis性能计数器拐点分析性能调优ControllerControllern 性能测试的基本流程什么是性能测试?性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。n 性能测试的基本流程性能测试的基本流程n 性能测试的关键
2、过程是将客户、系统使用者的真正需求弄清楚。性能测试的关键过程是什么?客户的要求 客户真正的需求很多客户对什么是性能测试并不了解,比如:1)对所有功能进行性能测试2)系统登录响应时间应小于3秒n 性能测试的关键过程答案:不可能原因:l 性能测试的周期较长,对所有功能都进行性能测试需要耗费时间太长l 很多功能是用户不经常使用的,做性能测试没意义l 正确的做法:由客户提出需求内容,由性能测试人员进行专业的分析后,提出相应的性能测试计划,与用户共同商量确认性能测试计划。性能测试的内容通常也是结合用户真实的应用场景,测试应用场景最多,使用最频繁的功能。对所有功能进行性能测试系统登录响应时间应小于3秒存在
3、问题:没有指明存在多少用户同时访问时需要达到该性能指标要求。n 确认性能标准的方法确认性能标准的常用方法有哪些?l 如果有老系统,根据老系统中的数据进行统计分析,确定性能指标l 根据二八原则进行计算n 性能测试的类型l负载测试l压力测试l配置测试l并发测试l容量测试l可靠性测试l失败测试l常规性能测试和非常规性能测试n 性能测试的类型负载测试和压力测试负载测试:通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统的性能指标的情况下,系统能够承受的最大负载量的测试。简而言之,负载测试时通过逐步加压的方式确定系统的处理能力、确定系统能够承受的各项阀值。例如,逐步加压,从而得到 “在*的压
4、力下,响应时间不超过10秒”、“服务器平均CPU利用率低于85%”等指标的阈值。压力测试:通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件 下系统性能处于失效状态,并来获得系统能提供的最大服务级别的测试。压力测试是逐步增 加负载,使系统某些资源达到饱和甚至失效。n 性能测试的类型常规性能测试和非常规性能测试目前市面上常用的性能测试工具如LoadRunner,对常规协议如http、https、socket等协议支持较好。进行性能测试时可以通过模拟多用户线程,从请求发送出去开始,经过网络上行传输+服务端逻辑处理耗时+网络下行传输,到客户端收到最终的响应报文结束(这一段时间,叫做响
5、应时间),来分析系统的事务处理能力。另外,也可以把每次版本发布前定期需要做的性能测试任务也称为常规性能测试。非常规性能测试与之相反,对一些非常规的协议,如dubbo、rmp等小众协议或者公司内部定义的一些协议,市面上常规的性能测试工具是完全不支持的。此类测试可称为非常规性能测试。n 性能测试需要关注的指标系统指标l 并发用户数l 在线用户数l 平均响应时间l 90%响应时间:跟此概念类似的还有响应时间中位数l 最大响应时间l 事务成功率l 超时错误率l TPS(HPS)*硬件指标:后面详细介绍n 性能测试需要关注的指标标准差:标准差指的是采样数据的差异程度,简单来讲获得的数据越稳定标准差就越小
6、标准差公式为 应用场景:如系统每一轮发布之前都需要做常规性能测试,那么除了平均响应时间、TPS这些指标外,还需要关注标准差。l 两轮之间如果标准差比较接近,那么系统稳定、满足性能要求l 如果标准差差别较大,即便其他性能指标符合要求,数据稳定性下降,这种情况也需要加以重视。n 性能测试常见的误区什么是并行?什么又是并发?并发数 OR TPS?n 性能测试常见的误区并发数 OR TPS?举一个例子:单核CPU和多核CPU,其根本原理就是并发和并行单核CPU是多个任务,通过时间片算法,切换着同时进行,这称为并发多核CPU可以做到真正意义上的同时进行多个任务,最大并行任务数量=CPU核数n 性能测试常
7、见的误区并发数 OR TPS?并发数就是衡量一个系统性能的标准?不够严谨,缺少一个严格的时间刻度TPS是指在一秒内处理完成的事务数,用TPS来衡量系统指标,相对于并发数来说,比较严谨。所以推荐用TPS衡量系统性能,而不是并发数。n 性能测试常见的误区测试大并发场景是不是就完全没有必要了呢?真实的现实场景中,大并发高TPS,真正的TPS和并发数的关系如下:最优并发数,就是系统的承载能力的体现n 性能测试常见的误区引申问题:为什么在达到最优并发数之后,TPS不是稳定下来反而下降了呢?n 性能测试常见的误区1虚拟用户=1实际用户?1000个虚拟用户,每个虚拟用户每10秒向服务器发送一个请求10个虚拟
8、用户,每个虚拟用户每秒向服务器发送10个请求哪种方案对服务器造成的压力比较大?结论:单纯的虚拟用户数不能作为衡量服务器压力的标准,也就不能用来跟实际用户数做衡量。如果某些情况下一定要用虚拟用户数体现某些数据,那么一定要加上请求频率和时间。n 性能测试常见的误区所有性能测试类型都要覆盖到?答案是否定的,绝大部分的系统,都是有侧重点的,主要看系统使用者更关注哪一方面。比如说一些内部网站,用户量不是很大,很少会出现所有用户同时访问的情况。这种情况就不用过多的关注系统容量。并且,性能测试的周期通常比功能测试要长,如果没有侧重点,单纯地讲大而全的话,很可能会影响到项目的发布周期。n LOADRUNNER
9、LOADRUNNER运行机制是一款商业的性能测试工具优点:界面友好、方便易用、支持协议众多、功能强大尤其图表分析功能,强于所有其他性能测试工具缺点:比较庞大、笨重。尤其脚本录制功能比较弱。需要破解。对Java 和.net的版本支持比较低。从用户关注的响应时间、吞吐量,并发用户和性能计数器等方面来衡量系统的性能表现,辅助用户进行系统性能的优化n LOADRUNNERLOADRUNNER运行机制l 采用一台或者几台计算机产生成千上万的虚拟用户,模拟用户的实际行为l 虚拟用户(Vuser)通过执行典型业务流程模拟实际用户的操作l 增加Vuser的数量可以增大系统上的负载l 并且通过实时监控系统、服务
10、器的性能指标的方式确认和查找问题n LOADRUNNERLOADRUNNER四大组件VuGen-虚拟用户脚本生成器(HP Virtual User Generator)l 录制用户在应用程序上执行的操作来生成测试脚本l 运行、调试脚本,完善并丰富脚本,或自行编写代码,支持多种语言Controller-控制器l 设计并运行场景,模拟真实用户操作场景,让多个Vuser同时操作,从而施加负载Analysis-结果分析器l 测试完成后,对测试过程中收集到的各种性能数据进行计算、汇总和处理,生成各种图表和报告l 为后续对系统的改进、提高其性能提供依据n LOADRUNNERLOADRUNNER四大组件L
11、oad Generator-负载发生器*无界面,后台进程,LoadRunner执行性能测试的核心l 由Controller唤起对应的后台进程(mmdrv.exe)l Controller中设置的每一个虚拟用户Vuser最终会被实例化成一个线程,Load Generator会根据Controller中设置的并发用户数,来启动相应的线程数量l 执行测试脚本中的方法模拟用户对服务器提交请求,模拟多用户并发访问被测试系统l 每增加50个虚拟用户,会新增一个mmdrv.exe进程n LOADRUNNERLOADRUNNER支持的协议l Web(http/html)l webservice(基于http协
12、议)l SOCKET(TCP/IP)l .NET vuser(.net framework 2.0)、Java vuser(jdk 1.5)n LRLR脚本结构Vuser_Init脚本运行期间只执行一次Action脚本运行期间执行一至多次Vuser_End脚本运行期间只执行一次http和webservice协议 脚本结构-可以存在多个actionn 集合点集合点可以同步虚拟用户以便恰好在同一时刻执行任务。也叫作同步点集合点是什么?集合点工作原理集合点插入到脚本中来指定汇合位置,在Vuser执行脚本并遇到集合点时,脚本将暂停执行,Vuser将等待Controller允许继续执行。Vuser被从集
13、合释放后,将执行脚本中的下一个任务例子:lr_rendezvous(集合点); do_transaction(); /* application dependent transaction */ n 集合点1当百分之多少的用户到达集合点时脚本继续。2当百分之多少的运行用户到达集合点时脚本继续。3多少个用户到达集合点时脚本继续。集合点设置策略集合点超时集合点和事务集合点应该放在事务外,如果事务内存在集合点,那么虚拟用户在集合点等待的过程也会被算入事务时间,导致早进入集合点的用户的响应时间有误n 事务一个事务应该具有原子性、一致性、隔离性和持久性事务的特点在LoadRunner里,我们定义事务主要
14、是为了度量服务器的性能。每个事务度量服务器响应制定的Vuser请求响应时间,这些请求可以是简单任务,也可以是复杂任务。一个完整的事务是由事务开始、事务结束以及一个或多个业务操作/任务构成。n 事务关于事务的一些说明1)事务必须是成对出现,即:一个事务有事务开始,必然要求也有事务结束。2)事务结束函数共包括两个参数,第一个参数是事务的名称,第二个参数是事务的状态。事务的状态可以为LR_PASS:返回“Succeed”代码:LR_FAIL:返回:“Fail”代码LR_STOP:返回“Stop”代码:LR_AUTO:自动返回检测到的状态。3)事务中间,如果放入思考时间(lr_think_time函数
15、)放在否在在回放思考时间设置被允许的情况下,思考时间将被算入事务的执行时间,从而影响事务正确的执行时间的分析与统计。建议不加思考时间,或者忽略思考时间n 检查点检查点的原理检查点就是自定义的判断事务成功、失败的方法常用方法:web_findweb_findweb_reg_findweb_reg_findweb_image_checkweb_image_check等等web_reg_findweb_reg_find与web_find:web_find:的区别:n 检查点l 必须满足是验证事务通过与否的充分必要条件。检查点通过,就能确定事务对应的操作/任务是一个正常状态。l 检查点可以是常量,也可
16、以是变量。l 检查点可以是文本、图像文件,也可以是数据库记录等。检查点设置说明n 思考时间用户在执行两个连续操作期间等待的时间称为“思考时间”。录制Vuser脚本时,记录相应的思考时间并将相应的lr_think_time语句插入到脚本中。Lr_think_time的参数单位是秒,比如lr_think_time(5)意味着LoadRunner执行到此条语句时,停留5秒,然后再继续执行后面的语句。忽略思考时间的方法另外一种用法:Runtime Setting 中的Pacing ,用在迭代与迭代之间n 常用请求函数web_url用于get请求web_custom_request用于get和post请
17、求,功能强大,可控性高web_submit_data用于post请求,功能强大,可控性高web_submit_form用于post请求,功能较弱,不推荐使用web_service_call用于webservice协议发请求n 关联所谓的关联就是把脚本中某些写死的数据转变成动态的数据例如:SCADA V5.0中告警模块从数据库内查询到,做成参数化文件(关于参数化,后面进行讲解)通过WEB服务动态获取GUID,然后返回给服务端。我们把这种动态获取数据的方式称谓关联,简单地说,每一次执行时都会有变动的值,就有可能需要做关联。n 关联自动关联手动关联自动关联n 关联利用web_reg_save_par
18、am函数手动关联关联的用途和意义1)简化和优化脚本代码2)动态产生数据3)支持唯一数据n 参数化LoadRunner的参数化功能是数据驱动测试思想的一个重要的实现。所谓数据驱动测试,就是把测试脚本和测试数据分离开来的一种思想,脚本体现测试流程,数据体现测试案例。数据不是写死在脚本里面,这样大大提高了脚本的可复用性。n 参数化适用场景n 参数化参数化方法n 参数化n 参数化数据分配方法分配方法描述Sequential(顺序)“顺序”方法顺序的向Vuser分配数据。当正在运行的Vuser访问数据表时,它将会提取下一个可用的数据行。如果再数据表中没有足够的值,则VuGen返回列表中的第一个值,循环继
19、续直到测试结束Random(随机) “随机”方法为每个Vuser分配一个数据表中的随机值。当运行一个场景、会话步骤或业务流程监控器配置文件时,可以指定随机顺序的种子数。每个种子值代表用于测试执行的一个随机值顺序。每当使用该种子值时,会将现共顺序的值分配给场景或会话步骤中的Vuser。如果在测试执行中发现问题,并且要使用相同的随机值顺序重复该测试,请启用该选项 Unique(唯一) “唯一”方法为每个Vuser的参数分配一个唯一顺序值。在这种情况下,必须确保表中的数据对所有的Vuser和他们的迭代来说是充足的。如果有20个Vuser,并且要运行5次迭代,则参数化列表中必须有100个唯一值n 参数
20、化数据更新方式更新方式描述Each occurrence(每次出现)“每次出现”方法指示Vuser在每次参数出现时使用新值。当使用同一个参数的几个语句不相关时,该方法非常有用。例如,对于随机数据,在该参数每次出现时都使用新值可能是非常有用的Each iteration(每次迭代)“每次迭代”方法指示Vuser在每次脚本迭代时使用新值。如果一个参数在脚本中出现了若干次,则Vuser为整个迭代中该参数的所有出现使用同一个值。当使用同一个参数的几个语句相关时,该方法非常有用Once(一次) “一次”方法指示Vuser在场景或会话步骤运行期间仅对参数值更新一次。Vuser为该参数的所有出现和所有迭代使
21、用同一个参数值。当使用日期和时间时,该类型可能会非常有用n 参数化更新方法数据分配方法Sequential(顺序)Random(随机)Unique(唯一)Each iteration(每次迭代)对于每次迭代,Vuser会从数据表中提取下一个值对于每次迭代,Vuser会从数据表中提取新的随机值对于每次迭代,Vuser会从数据表中提取下一个唯一值Each occurrence(每次出现)参数每次出现时,Vuser将从数据表中提取下一个值,即使在同一个迭代中参数每次出现时,Vuser将从数据表中提取新的随机值,即使在同一个迭代中参数每次出现时,Vuser将从数据表中提取新的唯一值,及时在同一个迭代中Once(一次)对于每一个Vuser,第一次迭代中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职(设施农业生产技术)温室大棚设计基础试题及答案
- 2025年高职机械制造与自动化(自动化生产线操作)试题及答案
- 2025年大学传播学(传播基础理论)试题及答案
- 2025年大学给排水科学与工程(管网设计)试题及答案
- 2025年高职(软件技术)软件测试试题及答案
- 2025年大学大二(中医学)中医诊断学试题及答案
- 2025年大学(药物制剂)工业药剂学期末试题及答案
- 2026年宁夏单招工业机器人专业高分突破密卷含答案
- 中职第三学年(汽车检测)发动机维修技术2026年阶段测试题及答案
- 2025年高职化学制药技术(化学药物合成)试题及答案
- 港区船坞工程施工组织设计
- 东北抗联英雄人物智慧树知到期末考试答案章节答案2024年牡丹江师范学院
- Turning Red《青春变形记(2022)》完整中英文对照剧本
- JT-T-1178.2-2019营运货车安全技术条件第2部分:牵引车辆与挂车
- 时尚流行文化解读智慧树知到期末考试答案章节答案2024年天津科技大学
- 齐鲁名家 谈方论药智慧树知到期末考试答案2024年
- 校园火灾发生时教师如何迅速报警并组织疏散
- 血尿病人的护理
- Python数据分析与应用-从数据获取到可视化(第2版)课件 第8章 文本数据分析
- 《数字经济学》教学大纲
- 气浮设计计算
评论
0/150
提交评论