LoadRunner基本简介

# LoadRunner  #

## 安装要求 ##
    作性能测试的时候,电脑要是一个干净的系统。
    尽可能是裸装电脑纯净版,不能安装太多的浏览器,支持的有IE、Firefox、chrome
    在win7系统搭建效果比较好。稳定的版本是LR11
    安装LoadRunner 须要破解,HP是卖服务的。

## 两种应用 ##
    BS/架构      网络应用,网站  
    CS/架构     win32应用,使用windows标准空间开发出来的客户端程序。

## 性能测试工具 ##
    LoadRunner  商业  C语言  Windows
    Jmeter        开源      Java  免费
![](https://i.imgur.com/9nCd1YG.png)
## 性能测试概念 ##

    从时间资源利用率方面,
    为了考验这两方面模拟真实生产环境去测试(测试系统的各项性能指标)

## 性能测试的目的 ##

    1. 评估系统的能力 
    2. 识别体系中的弱点 
    3. 系统调优 
    4. 验证稳定性和可靠性

## LoadRunner 的三大组件 ##

    虚拟用户脚本生成器    virtual user Generator
    压力调度控制台          Controller
    压力结果分析器          Analysis

    LoadRunner由四大组件组成:VuGen、控制器、负载发生器和分析器。


## LoadRunner测试流程 ##

    1.规划测试(计划、用例) 
             肯定测试要求,如并发用户数量、典型业务场景流程;测试计划;设计用例;……

    2.建立VU脚本
             使用Virtual User Generator录制、编辑和完善测试脚本

    3.定义场景
            使用LoadRunner Controller 设置测试场景。

    4.运行场景
            使用LoadRunner Controller 驱动、管理并监控场景的运行

    5.分析结果
            使用LoadRunner Analysis 生成报告和图表并评估性能

## LoadRunner经常使用的术语 ##

1. 并发
    
        狭义(绝对):全部的用户在统一时间作同一件事情
    
        广义(相对):多个用户在一段时间内作不一样的事情或者请求

2.  在线
    
        多用户在一段时间内对系统执行操做
3.  响应时间
    
        从客户端发出请求到获得响应的整个事件(客户端响应时间+网络+服务器响应时间)
4.  事务响应时间
    
        完成相应事务所用的时间
5.  点击率
    
        客户端向服务器提交的Http请求数
6.  吞吐量
    
        任意一秒处理客户端http请求的数据量,以字节(KB)为单位
7.  吞吐率
    
        服务器每秒处理的数据量
8.  TPS
    
        每秒钟处理的事务数
9.  资源利用率 

        对不一样系统资源的使用程度,(cpu、内存、硬盘、网络)
        
10. 场景
    
        测试场景在LoadRunner中能够设计执行用例的场景
11. 负载发生器
    
        用来产生压力的机器,模拟用户对服务器提交请求。    
12. 虚拟用户
    
        LoadRunner中模拟的用户即为虚拟用户对应于真实用户
13. 虚拟用户脚本
    
        经过Vuser Generator录制或开发的脚本。这些脚本用来模拟用户的行为。 

14. 事务
    
        一个或者多个的操做步骤定义为一个事务
15. 思考时间
    
        请求间的停顿时间

16. 集合点

        结合点是为了更好的模拟并发操做
    
        集合点是在同一个时间点,全部用户同时执行某一个操做
17. 负载测试
    
        找到系统处理能力的极限
18. 压力测试
    
        在饱和状态下系统可以处理的会话能力
19. 配置测试

        经过对被测系统软硬环境的调整,了解各类不一样环境对系统的影响程度,
        找出最优分配原则
20. 可靠性测试
        
        经过给系统加载必定的业务压力(例如资源在70%~90%的使用率)的状况下,
        让应用持续运行一段时间,测试系统在这种条件下是否可以稳定运行。
## 性能测试策略 ##
    
- 内存泄漏

        程序中已分配的内存因为某种缘由程序未释放或没法释放,
        形成系统内存的浪费,致使程序运行速度减慢甚至系统崩溃等严重后果。
- 基准测试

        单用户,单场景
- 并发测试

        多用户单场景
- 综合场景测试
- 疲劳强度测试
- 数据容量测试
- 极限测试
- 递增测试
    
#协议分析器:捕获获取协议类型, 网上下载协议分析器  问开发

## VUG录制操做过程 ##
    1. 启动服务,全部程序-LoadRunner-Samples-web-启动web服务器
    2. 启动VUG
    3. 新建脚本,弹出框设置,网络协议、测试对象URL,保存路径等。
    4.设置 web(http/html)  录制的地址  左下角选项 录制 基于html的脚本  高级默认
    5. 自动打开浏览器,用户进行操做。
            输入帐号密码,点击添加事务保存
            登陆成功,点击结束事务保存
            #注 事务保存点名字不能更改
    5. 点击录制工具条上的关闭按钮。

## 运行时设置 ##
    设置代码显示帐户密码。
    log-extended log -

## 检查点的做用 ##
    检验实际结果与预期结果是否一致,检查点要加在最近一个请求。
    Tree树策略  选中要检查的文本,右键添加文本检查点(AddaTextcheck)

## 脚本的组成 ##
    
    1. LoadRunner里面的变成语言是改进后的C语言。
    2. 每一个Action都放在一个单独的Action.c文件里
    3. 快速帮助文档,按F1

## 录制时怎么作到的呢? ##
    支持IE、Firefox录制
    IE 管理加载项:
        名称BHOManager Class发行者Mercury Interactive Corporation状态
        已启用 文件日期2009年1月15日,0:09版本9.1.0.0加载时间0.01s
    
## 参数化 ##

    双击选中要参数化的内容。
    方法一,右键---【Replace with a new parameter】  参数替换
    方法二,菜单【insert】----【new Parameter…】    新建参数
    Parameter Properties (参数属性对话框)----咱们的参数化设置就经过这个对话框完成
    输入要参数化的名字,能够是中文
      
## LoadRunner测试流程 ##

### 规划测试
      好的测试规划,可以指导整个测试过程,以更好的收集到测试目标要求的性能数据。
      规划能够包括测试的计划、用例的设计、场景的设计、性能计数器设置的设计等。
###规划注意事项:
        1.测试用例:测试用例通常根据须要测试的功能进行设计,
                  好比用例为:进入登陆页面-》填写用户名密码,登陆-》单击‘新增’按钮-》填写门店信息,保存。
        2.场景设计:
           通常状况会设计两种加压方式进行测试:
            瞬时加压(多人同时进行某项业务操做)与逐渐加压(多人前后进行某项业务操做,操做时间间隔根据计划设定)
        3.性能计数器方面:能够收集CPU时间、内存、硬盘、网络、数据库参数、IIS参数等   
###建立Vuser脚本
   2-1 使用Virtual User Generator录制、编辑和完善测试脚本。

   2-2  咱们能够根据被测应用是B/S结构仍是C/S结构来选择协议:
            A 若是是B/S结构,就要选择Web(HTTP/HTML)协议
            B 若是是C/S结构,则能够根据后端数据库的类型来选择
            C 对于没有数据库的WINDOWS应用,能够选择Windows Sockets协议。


      #  2-3 协议怎么知道: A 问开发 B 用协议分析器 C 网上有免费的协议分析工具 #

      # new single protocols  scrip 单协议 #
      # new multiple  protocols  scrip  多协议  #
      #  new recent protocols  scrip 最近用的协议 #



            1  熟悉 建立脚本工具栏
   2-4 application type : 
             internet application----------B/S架构
            win32 application -----C/S架构
   2-5 program to record ----默认IE,自带firefox浏览器
   2-6 URL address------指定起始URL
   2-7 working directory-----工做目录,通常默认
   2-8 Record into action ----选择要录制的部分

注意:
   VuGen的脚本分为三个部分:
   Vuser_init,Action,Vuser_end。
  # 其中Vuser_init和Vuser_end都只能存在一个,而Action可分红无数多个部分,能够经过点击旁边的 #


2-6 options选项:
             recording-----录制选项:
                1 基于浏览器的应用,推荐用HTML-based script方式录制
                2 不是基于浏览器的应用,推荐用URL-based方式录制
                3 基于浏览器的应用程序中使用了HTTPS安全协议,也要使用URL-based方式录制
                4 若是基于浏览器的应用程序中包含Javascript,
                  而且该脚本向服务器产生了请求,好比DataGrid分页按钮等,
                  就要使用URL-based方式录制
           
2-7 HTML-based script方式录制与URL-based script录制的区别:

    A --- HTML-based是根据浏览器的缓存文件生成的,每一个函数比较长,函数个数比较少。
           # 脚本比较容易维护。推荐使用。 #
          #  缺点:不能真实模拟出用户行为 #
    B---3.    URL-based Script是根据浏览器的请求顺序生成的,每一个函数比较短,可是个数比较多,
            # 此种方法更真实,缺点是脚本很长,难以维护。 #
    C----2.    前者录制的简单些,它只录制LR缓存中没有的记录,后者录制的复杂些,
             它不只录制LR缓存中没有的记录,
             # 缓存中有的记录也录制下来,因此录制的比较全面 #

2-8  编码问题--advance---AdvancedSupport charset中设置编码格式:UTF-8;


                      2 熟悉录制脚本工具栏

     从左到右分别是:
       开始录制
       结束录制
       暂停录制
       编译脚本
       脚本所属部分
       建立新的action
       插入事物起始点
       插入事物结束点
       插入集合点
       插入注释
       设置选项option
       插入test检查点

 #  录制过程 #


    1   # 若录制一个登录操做,输入用户名和密码后点击 开始事物,而后继续录制,
           # 点击Login按钮登录,登录成功后,必定要点击 结束事物 #          2  vuser_init:录制登陆的脚本,此处的脚本只有在初始化时才会被执行        Vuser_Action():有意义语句块,真正执行测试点操做的脚本主体部分,能够迭代        Vuser_end():录制退出的脚本,此处的脚本只有在释放用户时才被执行     # 注:其实相似于自动化里的setUp()和tearDown()两个函数 # 3 在一个录制好的脚本中:         web_url是浏览器地址栏的URL。 GET请求         web_link是点击在<a href= ...>和<a>之间的文本超连接。         web_image是点击HTML的<img href…。         web_submit_form 是在前面操做的上下文中的GET或PUT表单上点“提交”,         前面的操做被VuGen在基于HTML模式下录制下来了。         web_submit_data,POST    请求 4 打开Run-time Setting:         General中:         Run Logic:设置迭代次数         Pacing:设置迭代间隔时间         Log:设置运行时日志的类型         Think Time:设置录制时造成的Think Time时间比例,         事务内的Think Time要忽略! 5  插入集合点     造成脚本后,点击Insert,选择Rendezvous 6 事务定义:一般为了衡量服务器的性能,咱们须要定义事务。插入事务操做能够在录制过程当中进行,也能够在录制结束后进行。  6-1 事务的目的主要有两点:             统计事务的成功率。             统计事务的响应时间。               继续录制,录制事务动做结束后,必需要结束掉这个事务。          一样能够在insert菜单栏或工具栏结束这个事务。-----事物是成对出现的 7 文本检查点:        目的:为了验证明际结果与预期结果是否一致。   7-1 添加文本检查点有两种方式:在树结构中添加、在代码页面添加。      在树结构中添加检查点:            将脚本切换到树结构,在Server Response页面上找到你要check的文本内容,            并执行鼠标右键,选择Add a text check     添加成功后,切换到代码界面,找到登陆请求,会发现前面已经自动多出一行代码,           # 注意:在树结构中添加检查点必须在server response下作检查点。 # # 记忆:凡是带reg的函数都须要放在要操做请求的前面。注册后,查找速度更快,在内存中查找  # 插入检查点:     选择最近一个事务的请求,点击树视图,选择添加检查的文字,右击添加文本检查点。     函数:web_reg_save_find("search=Body",....LAST); 8 数据池策略(参数化)            为了使脚本更灵活,咱们能够对脚本进行参数化,以登陆时的用户名和密码为例,          在脚本中选中jojo,右键单击选择Replace with a parameter            对脚本参数化后,能够选择工具栏中的Param List,设置参数化策略 8-3 其中,Select next row为取下一个数据的方式,有四个选择:         Sequential:每一个VU按照顺序读取。每个虚拟用户都会按照相同的顺序读取。         Random:每一个VU随机读取一个。         Unique:每一个VU顺序取惟一的值。注意:使用该类型必须注意数据池中数据充足。         Same Line As 某个参数(好比Name):和前面定义的参数Name 取同行的记录。一般用在有关联性的数据上面。  8-4 Update value on为更新值方式,有三个选择         Once --在全部的迭代中都使用同一个值          each iteration ---每次迭代都要取新值          each occurrence ---只要发现该参数就要从新取值,也就是若是一个action中有多个该参数,每遇到一个就要从新取一个值 8-5 When out of values是当select next row选择unique时才能用到,是数据超出范围时的设置              Abort Vuser 停止脚本          Continue in a cyclic manner 继续循环取值          Continue with last value  继续取最后一个值 9  Run-time Setting 工具栏      9-1 Run Logic控制脚本迭代的次数      9-2  Pacing是设置两次迭代时的间隔。                  有3个设置:                        第一个意为第一次迭代结束后当即开始第二次迭代                       第二个意为两次迭代直接有一个随机的时间间隔                       第三个意为两次迭代之间有固定的间隔时间      9-3 Think Time有两个设置:Ignore think time和Replay think time             A  选择Ignore think time,那么VuGen在脚本回放过程当中将不执行lr_think_time()函数,这样将给服务器形成更大的压力。     B  选择Replay think time…,那么还有如下四种选择:              按照录制过程当中的think time值回访脚本             按照录制录制过程当中的think time值的整数倍回访脚本             指定一个最小值和最大值,按照二者之间的一个随机数的值来回访脚本             限制think time的最大值,这样VuGen在回放脚本过程当中将把脚本中think time大于该限制值的,用该限制值替代。   9-4 带宽---通常默认最大带宽  9-5 日志调试   开启/关闭 logging功能       标准日志       扩展日志      参数设置,Run-Time Setting设置信息      服务器返回的数据,响应头、响应体      高级跟踪,链接服务器、dns缓存、请求头、请求体等等   # 若是是真实环境选择 第一个选项---只当有错误时发送日志---若是不这样日志将把内存占满 3 定义场景      使用LoadRunner Controller 设置测试场景 # 作并发测试,首先把脚本调通,包括参数话,设置相关检查点,确保脚本能顺利跑起来,另外还有在脚本中插入集合点,设置集合点的目的主要是为了作并发测试,而后保存  # 脚本中的  thinktime 要注释掉,有影响 #      3-1定义场景步骤:              打开controller,选择manual scenario (手动选择场景)              在Browse 中选择要执行的脚本,而后点击OK            1    scenario  schedule设置:              进入场景设置页面后,shedule name ---名字能够本身定义              schedule by :能够选择scenario  或者  group by ----后者能够分组,分前后顺序               runmode:选择 real world schedule            2 global scenario 设置:                                 Initalize(ɪˈnɪʃəlaɪz)-----有三个选项--选择initalize each Vuser just before it runs                                  start vuser----先设置一个vuser 作基准测试,勾选simutaneously---同时的意思                                  duration([djuˈreɪʃn)----持续时间,能够设长点,由于可能不知道多长时间奔溃                                  stop user---中止全部用户,能够同时中止,不会形成对系统的压力          3 集合点设置---打开 工具栏 中scenario 下面的rendezvous(ˈrɒndɪvu)--点击policy(策略)进行设置---选择当全部用户到达再进行 release释放           4 runtime setting 设置:                                run log----迭代次数不须要设置,由于以前已经设置了时间                                 pacing(步速)----选择第三个,选择random(随机的)---intervals(间隔)--选择2到3s--使脚本    有个收尾的动做时间                                 log----选择send message only when  an error occues--而后后面勾选Extended log(日志扩展)--parameter  sustitution(参数替代)                                think time-----选择 ignore thinktime--作并发忽略思考时间---有这个思考时间其实是模拟人的思考                                 miscellaneous(ˌmɪsəˈleɪniəs)杂物的意思-----选择continue on error 和 run vuser as a thread                                 network下面的speed simulation (sɪmjuˈleɪʃn)(模仿)----选择最大带宽                                Browser下面的browser  emulation(emjʊ'leɪʃn)(模仿)----选择 simulation a new user on each interation (交互影响) # 设置完成------点击编译 #             5  点击 scenario start ----运行稳定后逐渐添加用户 5# 关联#          5-1.关联原理:有一种服务器比较聪明他会把一些写死的数据变成动态的Session Id 因此引入了关联          5-2.怎么去判断脚本有没有关联?a.脚本录制正确,回放失败,可能脚本有关联          5-3.进一步验证?录制两份相同业务的脚本进行对比tools - compare with script-打开wdiff找到脚本不一致的地方即关联处           5-4.找到关联后如何处理?                   a.自动关联:先让脚本回放一遍,按Ctrl+F8 选中须要关联的地方-按correlate                   b.手动关联:web_reg_save_param("id","LB=","RB=",LAST);找到关联处复制-在generation log通常日志里面找到服务器最早给你的响应 -            在找相应的请求 -把关联函数放在请求以前-在脚本里面出现关联的地方用变量{id}替换         函数:web_reg_save_param("ID","LB=","RB=",LAST); 6 登陆和注册要设置检查点    6-1 登陆要进行关联    6-2 注册要进行参数化    # 6-3 购买机票----Action 中的航班地点要参数化,航线要进行关联----航线有四条--ord=random number随机数---业务逻辑 ---性能测试要熟悉业务     6-4 检查点放在事物结束前的第一个请求,若是是该请求是图片,则向上一个请求     6-5  关联 ---先找到关联的相关请求--经过ID查找--再经过快照再脚本中查找该请求---关联放在该请求前面 4 运行场景        使用LoadRunner Controller 驱动、管理并监控场景的运行。 5 分析结果       使用LoadRunner Analysis 生成报告和图表并评估性能。 # 综合场景/压力调度控制台 # 打开controller(压力调度控制台) 选择手工场景 选择录制的脚本(多个脚本,多个添加) 场景设置 scenario          真实场景 初始化选型  运行前初始化全部的用户 运行设置(设置用户数量)选择第三个,每隔...多长时间加... 设置场景运行状况       每隔...时间执行... 打开运行时设置,run-time-setting 设置log日志为在出错是显示详细信息 think time 限制是靠时间为2-3秒 杂项里选择出错是运行,选用线程数(一个进程等于50个线程),没有代理,最大带宽。新用户没有缓存 ## 结果分析 ## 右键 merge graph 选择合并图片
html

相关文章
相关标签/搜索