LoadRunner性能测试入门教程1

转载:https://blog.csdn.net/tjjingpan/article/details/77368066

第一章:性能测试基础
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脚本验证流程







猜你喜欢

转载自blog.csdn.net/FlyPigYe/article/details/89917712