LoadRunner性能测试入门教程1

第一章:性能测试基础
1-1. 大话性能测试
性能测试
使用自动化测试工具对产品按一定的性能指标进行测试,解决性能瓶颈,给用户最好的体验。
性能测试的时代背景,作用
BAT
网站(baidu),软件(T),游戏......
金融( 银行,证券系统),教育(教务系统),交通(12306)
性能测试基本流程

性能测试需求分析--->性能测试计划--->  性能测试准备

1、性能测试需求分析
  • 项目经理
  • 业务/架构专家
  • 产品经理
  • 高级性能测试工程师
  • 开发经理
2、性能测试计划
高级性能测试工程师
  • 项目经理
  • 架构师
  • 产品经理
3、性能测试准备
  • 性能测试工程师
  • 外部支持(网络工程师,系统管理员)
开发脚本/执行测试<--->测试结果分析<------->系统调优<-----> 编写测试报告


1、开发脚本/执行测试
  • 高级性能测试工程师
  • 性能测试工程师

2、测试结果分析
  • 高级性能测试工程师
  • 外部支持 (系统管理员、DBA)

3、系统调优
  • 架构师
  • 产品经理
  • 高级性能测试工程师
  • 外部支持(DBA)
二、web性能测试常用指标
1、响应时间
相应时间:2-5-8原则
2、吞吐量(Throughput)
3、资源使用率(Resource utilization)
CPU,内存,磁盘I/O,网络I/O
4、每秒点击数(Hits per second)
5、并发用户数(Concurrent users)
三、LoadRunner软件
性能测试利器,LoadRunner.
http://127.0.0.1:1080/WebTours/
用户名:jojo
密码:bean

测试需求:登录webTours订票网站,预定一张机票后退出。
录制脚本
1、启动web服务器
2、打开Virtual User Generator界面
3、选择脚本协议
4、进行页面操作
5、回放脚本(Replay)
回放是验证脚本是否能够正常运行。
验证脚本
回放脚本

设置关联
许多应用程序都使用动态值,每次使用应用程序时这些值都会变化。例如,有些服务器会为每个新会话分配一个唯一的会话ID.回放录制的会话时,应用程序创建的新会话ID与录制的会话ID不同>LoadRunner通过关联解决了这种问题。关联动态值(在本例中为会话ID)保存到参数中。运行模拟场景时,Vuser并不使用录制的值,而是使用服务器分配的新会话ID.
->设置webtours网站,录制脚本使用用户登录时会产生会话ID,从而导致回放失败。
-->找到关联参数,进行手动关联,现次回放。

html模式与url模式
在默认情况下,选择"HTML-based script",说明脚本采用HTML页面的形式来表示,这种方式的脚本容易维护,容易理解,推荐以这种方式录制。
"URL-based script0"   说明
脚本中的表示采用基于URL的方式,所有的HTTP请求都会被录制下来,单独生成函数。
所以URL模式生成的脚本会显得有些杂乱。URL录制的脚本中web_concurrent_start函数是并发组开始的标记,web_comcurrent_end是并发组的结束标记。在并发组中的函数不是立即执行的。在并发组开始时,所有的函数首先被记录下来,当并发组结束时,所有的函数并发执行。
选择HTML还是URL录制,有以下参考原则:
(1)基于浏览器的应用程序推荐使用HTML-based script.
(2)不是基于浏览器的应用程序推荐使用URL-based script.
(3)如果基于浏览器应用程序中包含了JavaScript并且该脚本向服务器器产生了请求,使用URL-based script方式录制。
(4)基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-based script方式录制。

添加事务
1、事务 (Transaction)是这样一个点,我们为了衡量某个操作的性能,需要在操作的开始和结束位置插入这样一个范围,这就定义了一个transaction.
2、原因
从性能测试的角度出发,我们需要知道不同操作所花费的时间,这样我们就可以衡量不同的操作对被测系统所造成的影响,那么我们如何 知道不同的操作所花费的时间,这就用到了事务,我们在操作这前插入一个事务开始标识,在操作完成后插入一个事务结束表示,这样我们就知道了这个操作所花费的时间。
3、事务的作用:LoadRunner运行该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束,这个事务的运行时间在LoadRunner的运行结果中会有反映。通谷的讲LoadRunner中的事务就是一个计时标识,LoadRunner在运行过程中一旦发现事务标识,就开始计时,一旦发现事务的结束表示,则计时结束,这个过程中得到的赶时间即为一个事务时间。通常事务时间所反映的是一个操作过程的响应时间。
4、函数构造
事务开始函数共包括一个参数,就是事务的名称,事务结束函数共包括两个参数,第一个参数是事务的名称,第二个参数是事务的状态。事务的状态可以为LR_PASS:返回"Pass"返回代码:LR_FAIL;返回"Fail", 返回代码:LR_STOP;返回"Stop";返回代码:LR_AUTO,自动返回检测到的状态。
Duration表示事务的完成响应时间,wasted time包括事务中函数自身执行所消耗的时间。

脚本参数化

LoadRunner性能测试入门教程1
LoadRunner性能测试入门教程1


录制日志
在录制和回放的时候,VU会分别把发生的事件记录成日志文件,这些日志文件有利于我们跟踪VU和服务器的交互过程。
1.回放日志(Relay Log)
脚本回放运行时的输出都记在这个Log里。
“输出”窗口的“回放日志”显示的消息用于描述Vuser运行时执行的操作。该信息可说明在方案中执行脚本时,该脚本的运行方式。脚本执行完成后,可以检查“回放日志”中的消息,以查看脚本在运行时是否发生错误。
“回放日志” 中使用了不同颜色的文本
黑色:标准输出消息
红色:标准错误消息
绿色:用引号括起来的文字字符串(例如URL)
蓝色:事务信息(开始、结束、状态和持续时间)
橙色:迭代次数信息
如果双击操作名开始的行,光标将会跳到生成的脚本中的相应的步骤上。

2、录制日志
当录制脚本时,Vugen会捕获Client端(浏览器)与Server端(服务器)之间的对话,
并且通通记录下来,产生脚本。在Vugen的Recording Log中,我们可以找到浏览器与服务器之间所有的对话,
包含通信内容、日期、时间、浏览器的请求、服务器的响应内容等。
3、产生日志
产生日志记录了脚本录制的设置、网络事件到脚本函数的转化过程。

移动APP脚本录制
安装LR_03103_patch_4
Mobile App(HTTP/HTML)
Java Vuser虚拟用户
Java vuser 是自定义虚拟脚本,脚本中可以使用标准的java语言
环境配置
1、安装jdk,注意:lr11最高支持1.6
2、配置环境变量
3、在lr选择java Vuser协议
脚本结构
一般在init中编写初始化脚本,在action中编写业务流程,在end编写释放资源的内容。
适用范围
1、不太适合录制的业务功能性能测试,如视频播放,http文件下载
2、利用java语言开发的应用系统。
错误处理函数
 VuGen提供了错误处理函数lr_continue_on_error,用来在脚本中实时修改Vuser的出错设置.
lr_contine_on_error函数语法结构如下:
void lr_continue_on_error(int value);
value是脚本运行出错设置的取值,具体取值及相应值的含义如表所示。在使用表中的参数时,即可以
使用常量名称作为参数,也可直接使用对应常量值作为参数。
LoadRunner性能测试入门教程1

脚本编写最佳实践
有过开发经验的朋友者知道,程序的开发大多不是一蹴而就的,通常要以过代码评审‘编码和测试等流程后,
才会趋于稳定。而VU脚本本身虽不算复杂,但VU脚本运行往往涉及多个因素,也会经常出问题。提早发现和解决脚本中的问题,不仅从技术上下工夫,在流程上也要做文章。通常验证一个脚本的比较好的过程是这样的:
1、Generate:录制或开发脚本。
2、SUSI(Single User Singel Iteration,单用户单循环):运行录制生成的脚本,解决可能存在的关联问题。
3、SUMI(Single User Multi Iterations,单用户多循环):参数化脚本,在Run-time中设置Iteration,再次运行,验证参数化问题。
4、MUSI(Multi User Single Iteratins,多用单循环):Controller里多用运行脚本,验证脚本中可能的多线程同步问题。
5、MUMI(Multi User Multi Iteration,多用户多循环):即性能测试开始。
其中1~3是在VU中进行的,而4~5是在Controller是进行的。

LR常见报错处理方法
Virsual User Generator小结
1、脚本脚本,App脚本,java脚本
2、回放验证
关联设置,日志分析
3、脚本增强
添加事务,参数化,内容检查,错误处理
4、负载准备
SUSI,SUMI,MUSI,MUMI脚本验证流程







LoadRunner性能测试工具实战视频教程【全套26集】 随机函数 在软件测试工具中如何巧用LoadRunner的随机函数。 LoadRunner有自带的随机函数,如果巧妙的加以采用,能解决一些看似很困难的实际问题。 一个项目的性能测试。与数据库直连,根据外部传入的SQL ID和SQL参数,从指定数据库中读取SQL模版,拼装成真实的SQL语句、执行,并将得到的结果放入缓存中。目的是减少数据库的压力。 该系统将支撑大量的SQL操作,性能自然成为备受关注的焦点之一。 由于它跟SQL语句相关,在真实环境下,同一时间可能执行着不同类型的SQL,即便是同一类型,其参数也各式各样。那么,怎样才能模拟出最符合实际情况的性能测试场景呢? 首先设计场景,即,在LoadRunner中按照比例随机取到某一类型的SQL,再随机传入参数给它,让最终的每条SQL都是随机生成,各不相同。 从场景中,可以看到,此处涉及双重随机。只采用loadruner的参数设置是无法实现的。此时需要想办法先按设定好的比例随机取到SQL,然后在每条SQL上随机取参数列表中的参数。 于是想到了loadrunner的随机函数。先实现随机取SQL ID,之后再在特定的SQL中随机取参数列表中的参数。 LoadRunner中,随机函数是rand(),它用来产生0到rand_max之间的随机整数。函数原型是 int rand (void); 然而调用rand之前,必须给随机数产生一个随机种子。这个种子由srand()函数产生。其原型是 int srand (seedTime); 2 分析占用率 1. 平均事务响应时间 Average Transaction Response Time 优秀:10s 2. 每秒点击率 Hits per Second LoadRunner分析页面 LoadRunner分析页面 当增大系统的压力(或增加并发用户数)时,吞吐率和TPS的变化曲线呈大体一致,则系统基本稳定。若压力增大时,吞吐率的曲线增加到一定程度后出现变化缓慢,甚至平坦,很可能是网络出现带宽瓶颈,同理若点击率/TPS曲线出现变化缓慢或者平坦,很可能是服务器响应时间增加,观察服务器资源使用情况,确定是否是服务器问题。 3. 请求响应时间 Time to Last Byte 4. 每秒系统处理事务数 Transaction per second 5. 吞吐量 Throughout 6. CPU利用率 Processor / %Processor Time 好:70% 坏:85% 很差:90%+ 7. 数据库操作消耗的CPU时间 Processor / %User Time 如果该值较大,可以考虑是否能通过友好算法等方法降低这个值。如果该服务器是数据库服务器, Processor\%User Time 值大的原因很可能是数据库的排序或是函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。 8. 核心态CPU平均利用率 Processor /%Privileged Time 如果该参数值和"Physical Disk"参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统 9. 处理队列中的线程数 Processor / Processor Queue Length 如果该值保持不变(>=2)个并且%Processor Time 超过90%,那么可能存在处理器瓶颈。如果发现超过2,而处理器的利用率却一直很低,那么或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈。 10. 文件系统缓存 Memory / Cache Bytes 50%的可用物理内存 11. 剩余的可用内存 Memory / Avaiable Mbytes 至少要有10% 的物理内存值 12. 每秒下载页数 Memory / pages/sec 好:无页交换 坏:CPU每秒10个页交换 很差:更多的页交换 13. 页面读取操作速率 Memory / page read/sec 如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。 14. 物理磁盘利用率 Physical Disk / %Disk Time 好:<30% 坏:<40% 很差:<50%+ 15. 物理磁盘平均磁盘I/O队列长度 Physical Disk / Avg.Disk Queue Length 该值应不超过磁盘数的1.5~2 倍。要提高性能,可增加磁盘 16. 网络吞吐量 Network Interface / Byt
Loadrunner工具概述 4 工具简介 4 下载 4 安装 5 在windows下安装loadrunner 5 在liunx下安装Load Generator组件 6 LoadRunner主要组件 7 工作原理 7 LR自带实例 8 负载流程 9 Loadrunner引导界面 9 VuGen--组件概述 10 VuGen--脚本创建 10 脚步创建流程 10 VuGen起始页 11 协议支持选择 11 协议种类 12 协议选择方法 14 协议选择注意要点 16 开始录制(Start Recording)及选项(Recording Option) 16 Internet 应用程序录制选项 20 Win32应用程序录制选项 21 常规选项—脚本(General--Script) 21 常规选项—协议(General—Protocols) 22 常规选项—录制(General—Recording) 22 网络—端口映射(NetWork—Port Mapping) 28 HTTP属性—高级(HTTP Properties--Advanced) 29 HTTP属性—关联(HTTP Properties--Correlation) 31 VuGen--脚本录制 32 录制步骤 32 脚本查看 33 脚本Action介绍 34 VuGen--脚本回放 35 Web(HTTP/HTML)常规选项 35 参数化(Parameterization) 35 回放(Replay) 35 环境(Environment) 36 显示(Display) 37 关联(Correlation) 37 Web(HTTP/HTML)运行设置 37 运行逻辑(Run Logic) 38 步(Pacing) 39 日志(Log) 39 思考时间(Think Time) 40 其他(Miscellances) 41 VuGen--增强功能 42 事务 42 参数化 43 内容检查 49 关联 50 集合点 53 Controller组件概述 55 设计场景思想 55 新建场景方式 56 场景类型 56 场景运行 59 执行步骤 60 场景运行期间增加负载 61 系统监控 62 监控负载下的客户端程序 62 实时观察Vuser运行情况 62 Load Generator组件概述 64 Generator连接 64 IP虚拟 64 添加IP地址 65 使用虚拟IP 65 IP虚拟使用误区 66 Analysis组件概述 66 服务水平协议 68 定义SLA 69 常用性能指标介绍 71 事务(Transation) 71 Web资源分析(Web Resources) 72 网页元素细分(Web Page Breakdown) 74 其他指标 76 性能测试资源占用率分析方法 76 附录:LoadRunner常用函数 77
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tjjingpan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值