LR11-01

                    性能测试  LoadRunner11
一、初步概念
    1、功能测试:测试产品的功能是否达到要求。
      如: ATM取款(在线取款) 是否成功
           或转账成功了,表示功能实现了
           (一个人)
    2、性能测试:测试产品的性能是否达到要求。
      包括:时间、多用户共同使用
      如:ATM取款(在线取款)---耗时30分钟
        十万人同时转账,系统崩溃了,都属于性能问题

    结论:性能的要求,高于功能的要求。

    工作需求:主要两个方面
     A.功能测试(手工、自动化)
     B.性能测试(只能通过工具)待遇高于功能自动化测试
       要求比功能高,比如需要查找产品慢的原因:
       涉及面广:网络、服务器、中间件、数据库等层面问题

二、性能测试的安排:
    1、性能测试的基本概念--性能测试概念 1天
        对性能要求高的行业:通讯、银行、金融、证券、保险、百度、谷歌等系统。
        对性能要求较低的:OA 办公自动化

    2、性能测试的工具部分 -- LoadRunner
         全球至少一半以上的性能测试,使用LoadRunner
        1)LoadRunner的初级部分--三大组件的简单运行
          a. 脚本生成器:调代码、脚本的地方
          b. 控制台:好比指挥部
          c. 结果分析器:比如,每隔3秒钟出一个结果,分析海量的结果,还可以继续分析。

        2)LoadRunner的高级部分--三大组件逐个深入掌握。

    3、性能测试的高级部分:性能测试过程中,遇到问题(瓶颈),如何查找、定性,进行性能调优。

    说明:主要关注1、2点
         针对第3点,比如IBM Websphere中间件,数据库DBA    

         LR   HP官网 4G 免费 
            问题:用户数有限  单用户等
                    多个用户,需要买Licence 需要注册
     LR基本测试流程:
         1)制定性能测试计划(部分)

         2)创建脚本
         3)编辑、编译、运行测试脚本
         4)创建场景
         5)运行、监控场景,收集数据
         6)生成测试报告,分析测试结果
        问题:流程中用了几大组件?分别用在何处?
             脚本生成器    2  3
             控制台         4  5
             结果分析器     6

     压力激增--瞬时压力:并发压力(性能测试)
     系统瘫痪--宕机 (down机了)

     浏览量:PV值,页面的访问量或点击量

三、性能测试的概念:
    1、性能测试:模拟真实的生产环境,以各种不同的压力(模拟大量用户)去测试被测系统、去"攻击"测试系统。同时记录下被测  系统中 各台 服务器的各种重要资源情况,包括cpu、内存、磁盘和网络等资源。

    2、注意:性能测试之前要做好系统备份。

    3、性能测试时首先看 性能需求,如果没有需求,这时要根据与客户交流、被测系统的相关资料、以及性能测试工程师的经验,去编写测试计划,进行性能测试。

    4、负载测试和压力测试的区别:
     (国内混用,国外有差别,笔试时需要注意)
        1)共同点都是在测试过程中逐步加压
        2)负载测试是在正常范围内测试   Load Testing
            (见好就收)
        3)压力测试可以在极端范围内测试  Stress Testing
            (使劲折腾)
        4)举例:一座大桥,桥上写最大载重量的车辆,不超过60吨
             但是在桥梁内部建筑资料,最大载重量,不超过70吨

    5、性能测试的背景课程:
        1)数据库(不夸张的说,60%-90%的性能问题都和数据库有关)
        2)操作系统(Linux/Unix)
        3)其它:网络协议、防火墙等知识...

    性能测试的实现方法:
    手动测试:(存在的问题)
     测试人员 ->   Web Server  ->  DB Server
     问题:
       是否有足够的测试资源?测试人员、客户机
       如何调度和同步测试用户?比如并发
       如何搜索和分析测试结果?
    结论:必须使用工具

    6、被测系统
     SUT (System Under Test)
     AUT (Application Under Test)
     EUT (Environment Under Test)
     就是Web Server和DataBase Server两部分的统称
    (Web应用程序 部署其中)   表等资源

    进程和线程的区别:
        进程包含线程,1个进程可对应多个线程,
            多线程可以让任务同时并发执行
            每个虚拟用户就是1个线程,线程比较省资源
四、LoadRunner工作原理:(录制--回放的工作方式)和QTP类似
    1、录制时,LoadRunner记录下 客户端和服务器 二者之间的对话。
    2、回放时,LoadRunner模拟 真实的客户端 向服务器发起请求,并按照脚本去验证服务器的应答。

    补充说明:有时脚本录不下来,自己写脚本,发现测试时通过了,但实际运行时服务器瘫了。
    原因:没有模拟真实的客户端效果,接收也出现问题,导致失败。
          所以自己写脚本时也要模拟真正的客户端。

    LoadRunner的三大组件:(三个火枪手) OALoad工具类似
    (触类旁通)
    1)虚拟用户脚本生成器(Virtual User Generator)VuGen  VUG
        功能:录制、编辑、调试测试脚本

    2)压力调度控制台 (Controller)
    功能:创建场景、运行场景、监控场景、收集测试数据
        (场景:就是一个大型的配置文件)

    3)压力结果分析器 (Analysis)
    功能:把收集到的测试数据以图表的形式展示出来;
           生成测试报告。

    熟悉AUT: LR自带一个B/S架构的系统 航空订票系统
    HP LoadRunner ->Samples ->Web ->
      Start Web Server先启动服务器

    HP LoadRunner ->Samples ->Web -> 
       HP Web Tours Application
    系统地址:http://127.0.0.1:1080/WebTours/

五、关注AUT,并进行脚本录制
    LR11修改字体:Tools -> General Options -> Environment
           -> Editor     Comic Sans MS  14 Bold 加粗
    测试时注意:
        1.设置IE(清除浏览器缓存):
            工具->Internet选项->常规->设置,选择“每次访问此页时检查”

        2.LR中修改参数
            Controller->Run->Time Setting->Internet Protocol->Proxy,选择No Proxy

    Web Tours 航班订票系统
        用户名:jojo
        密码:bean
    1、使用LR之前,浏览器修改:
        Internet选项 -> 设置 -> 选中"每次访问此页时检查"
         原因:当脚本更新时,会及时查看到

    2、拷贝AUT的网址,准备测试。
        注意:测试时关闭原先打开的被测网页。
        http://127.0.0.1:1080/WebTours/
        或
        http://localhost:1080/WebTours/

        系统功能说明:
            Flights     订票
            Itinerary  查看订票路线 看订单
            Home      主页
            Sign Off   退出

            细节:需要删除一些干扰文件(涉及Flights的功能)
            D:\oracle\product\10.1.0\db_1\perl\5.6.1\bin  
              MSWin32-x86 目录删除
            D:\oracle\product\10.1.0\db_1\perl\5.6.1\lib
              MSWin32-x86 目录删除

        案例:录制用户登录脚本
            使用LoadRunner的VUG
             HP LoadRunner -> Application -> HP Vurtual User Generator 
        录制脚本步骤:
         ->点击New图标 -> New Virtual User -> 默认协议
              -> Create 准备录制
         -> 填写基本信息:
           选择软件架构:Internet Applications (B/S)   默认
                            Win32 Applications (C/S)
           选择浏览器类型:默认IE
           URL Address: 被测系统的网址
                   http://127.0.0.1:1080/WebTours/
                 或http://localhost:1080/WebTours/
           Working directory: LR工作路径 默认  常用工具命令
           Record into Action: 录制脚本的位置 默认Action
               (vuser_init 初始化  Action    vuser_end 结束)
          -> OK  自动打开浏览器 AUT,开始录制
             关注小操作条 (录制控制  关注数字变化,数字稳定才继续)
          -> 输入jojo  bean
          -> 开始事务 名称login (插入事务) -> OK
          -> Login按钮 
          -> 结束事务 login  -> OK
          -> 改为vuser_end模式,点击Sign Off 退出
          -> 关闭浏览器 -> 点击蓝色按钮 Stop 结束录制


        建议新建目录:D:\work\    (目录名建议用英文名)
         新建3个子目录:
            script 脚本     
             ctrl 场景文件    
             result 结果分析文件
        另存为: D:\work\script\day01\login   

        关注左上角对应的独立的源文件:(脚本的文件组成)
            vuser_init    初始化脚本  (类C语言)
            Action        最关心的脚本
                lr_think_time(68); 表示该处有68秒时间没有对服务器提交请求,思考时间
                    lr_start_transaction("login");  开始login事务        
                lr_end_transaction("login",LR_AUTO);   结束login事务
                web_submit_form(...);  发送表单请求 
                web_url(..);   发送页面请求
            vuser_end    结束脚本
            globals.h     头文件 (包含LR函数声明)

    3、在使用LoadRunner录制之前,一定要手工执行待测的测试点。
        比如:登录系统、购买机票

       录制时:
        一般将登录的动作录制到vuser_init中;
        关心的测试点(如订购机票、查询路线)录制在Action中;
        而将退出的动作录制到vuser_end代码中。
        原因:Action比较强大,具备其它部分所没有的功能
               比如:参与迭代、设置并发

        录制时注意:创建新脚本,要从New开始
           如果只是录制登录脚本,则录在Action中即可
        录制时,Action的选择只能从前往后选:
          即 vuser_init ->  Action -> vuser_end
            否则,必须从New开始,重新录制。
        何时需要插入事务?
            关心那段操作,就将此过程作为一个事务。比如只关心订票,就可以不考虑登录。
            目的:LR后续会统计事务的响应时间。

       录制结束后,保存--回放(编译、运行)
         目标:确保脚本执行正常
          编译:检查语法错误。 Compile图标
         能检查语法错误,但不能检查逻辑错误
       回放:
        录制好、调试好脚本,开始运行 Run (VUG)
            注意:回放成功,代表脚本录制成功,不代表一定成功,还需要添加检查点
        想看到运行结果:
             Tools -> General Options -> Replay 回放 
             -> After Replay 选择 Visual test results 可视化测试结果
                再回放,会显示结果报告。
            注意:结果的对勾,不一定准确,还需要在脚本中添加一些内容(比如检查点),才完整。

        如果想看回放图形效果:(用处不大)
             Tools -> General Options -> Display 
               -> Show run-time viewer during re]  打钩 

        虚拟用户:Virtual User  简称VU
          在场景中,LoadRunner使用VUser代替实际用户。
          一个场景中,可以包含几十个、几百甚至几千个Vuser.
          使用Vuser给AUT施加压力。
            原理:每一个虚拟用户,对应一个进程或线程
                常用线程模式,消耗资源比进程少。一般PC机模拟2000个VU
            进程 和 线程的区别?
                1)进程比较消耗系统资源,进程间通信比较麻烦
                2)线程比较节约系统资源,线程间通信比较容易

            VUG: 只能产生一个用户的压力。

    4、如果实现 多用户的测试,则必须打开 控制台Controller。
        (控制台:是指挥部,可以模拟千军万马
         VUG只能模拟单用户)

        事务:Transaction   为了记录事务响应时间
        场景:Scenario   法语外译词
             通过控制台来创建场景,相关的场景设置
    
    5、打开控制台时,可以关闭掉VUG。因为脚本保存好后,就可供控制台使用。关闭不必要的软件让测试机的性能好些。

    6、练习:录制购票的脚本 buy  Flights功能 (VUG)
         New -> 选择vuser_init -> OK -> 首页面
         输入jojo bean -> 插入事务login -> Login -> 结束事务login
         切换为Action -> 点击Flights (等待页面加载完毕)
         选择城市 从Denver到Landon -> Continue -> Continue
         -> 插入事务buy  ->  点击Continue -> 结束事务buy
         切换为vuser_end -> 点击Sign Off
         -> 关闭浏览器 -> Stop
五、LR的工具组成(3+1)
    虚拟用户脚本生成器、压力调度控制台、压力结果分析器
    (三大组件/四大组件)
  1、Load Generator 负载生成器(压力生成器)
    就是一台物理机,负责运行大量的虚拟用户产生负载。相当于指挥台指挥下的作战部队。
        (比如:一个部队能够支持2000人,如果需要10000人,就需要多个作战部队)
    在控制台 Quantity的右边:Load Generators
        默认:localhost 本地主机,负载运行虚拟用户,就是一台负载机
    如何添加同事的主机,协同作战?(联机测试,先了解)
        在Scenario Groups中,另加一行:
         选择脚本buy   点击 -> Name
         输入对方的主机名:192.168.0.88  ->  OK
         相当于借助于同事机器的性能帮助进行测试。
  2、代理程序(Agent)
    部署在各个客户端,协调得到步调一致的虚拟用户
    比如:测试时,好比Controller统帅千军万马
    使用Load Generator产生不同的压力机:1,2,3...
                    ---(Agent)Load1
     Controller ---(Agent)Load2
                    ---(Agent)Load3
    代理程序Agent部署在不同的客户机,好比小的通讯兵
    在控制台启动时,会自动启动:
        右下方:一个小雷达图标 LoadRunner Agent Process
     如果不小心关闭,如何打开?
         所有程序 -> HP LoadRunner ->Advanced Settings  高级设置
             -> LoadRunner Agent Process
    结论:如果想让其它机器参与联机测试,需要其它机器也启动Agent,就能接收到总控制台的命令。

  3、监控系统(Monitor)
    监控主要的性能计数器,对被测服务器进行监控。(后续讲解)
    如何查看:
      打开控制台 -> Run界面 左下角 Available Graphs
      -> System Resourse Graphs  系统资源图
      -> Windows Resourse
      -> 图中右击 -> Add Measurements...  增加指标
       -> 打开一个窗口:
           Monitored Server Machines  监控服务器 机器
                Add按钮 -> Machine Information:   机器信息
                    Name: localhost   主机名
                    平台Platform:  WINXP   ->  OK
           Resources Measurements:
                  会自动加载许多资源指标。。开始监控 (后续会重新选择)

分析LR工具的组成图:(关注左半边)(四大组件)
  Capture & Record   捕捉 和 录制
  HTTP  Protocal  HTTP协议
  Monitoring 监控 针对被测系统的服务器进行监控
  Run Logs 运行日志
  Load Generators  负载生成器
           模拟 Client Emulation 被测系统真实的客户端
  控制台Start/Stop  得到分析结果,
  产生Report&Graphs 报告和图表:
    (Word、网页格式htm、Excel、Access、水晶报表 Crystal Reports、诊断Mercury Diagnostics)

  4、LoadRunner工具组成图:思路结合3+1大组件作为线索
    1)对于给定AUT,VuGen可以按照指定的协议(Http协议、Ajax等协议,软件用到相关技术协议),对于其客户端(IE、Java等客户端)进行捕捉和录制,生成脚本。
        考虑调试:事务点、检查点、集合点(并发点)、关联、参数化。
    2)可以在VuGen中,设置Run-time Setting,形成场景
    3)在控制台中,选择脚本(1或n个),对虚拟用户的加载进行部署,对被测系统的各台服务器进行监控,设置相应的Load Generator(负载生成器)。
    4)运行场景,生成Analysis(结果分析报告),进一步获取各种形式的图表。

提示:结合组成图理解并记忆。






简答题:(20*5=100)
1、何时需要性能测试?
    对性能要求比较高的行业的软件,
    多用户系统。
2、什么是性能测试?
    模拟真实的生产环境,以各种不同的压力(模拟大量用户)去测试被测系统、去"攻击"测试系统。
    同时记录下被测系统中各台 服务器的各种重要资源情况,包括cpu、内存、磁盘和网络等资源。
3、性能测试的工具
    --LoadRunner 11
4、LoadRunner的三大组件:
    1)虚拟用户脚本生成器 VUG
        作用:录制、编辑、调试脚本。 模拟1个Vuser
    2)压力调度控制台 Controller
        作用:模拟场景,使用脚本,可以模拟多用户
           总指挥部,调度Vuser执行脚本,攻击AUT
    3)压力结果分析器 Analysis
        作用:分析测试结果(大量图表)

5、负载测试和压力测试的区别?
    答:1)负载测试在正常范围内测试。都是逐步加压
         2)压力测试可以在极端范围内测试。
         3)举例:客车,最大载客数9人。内部资料:12人
                最大并发用户数 1000人; 1500人

6、LR的三大组件简介,中英文名称?(重要)
    答:1)Virtual User Generator 虚拟用户脚本生成器  VUG
            功能:录制、编辑、调试脚本  1VU 可迭代等
        2)Controller  压力调度控制台
            功能:创建、运行场景、监控场景、收集测试数据
            (场景:就是大型的配置文件)
        3)Analysis  压力结果分析器
            功能:把收集到的测试数据以图表的方式进行展示;
               生成测试报告。

7、LoadRunner的原理?(重要)
    0) 录制--回放的工作方式 和QTP类似
        1)录制时,LoadRunner记录下客户端和服务器二者之间的对话。
            (主要为请求)
        2)回放时,LoadRunner模拟真实的客户端向服务器发起请求,并按照脚本去验证服务器的应答。

    1)对于给定被测系统,
        VuGen(虚拟用户脚本生成器)可以按照相应HTTP协议,
            对于其客户端(IE客户端、Java客户端)进行捕捉和录制,生成脚本,调试脚本。(检查点、事务点、并发点等)
        在VuGen中针对脚本,
            可以设置Run-time Settings
                比如:迭代次数、Pacing值、Log配置、Think time
    3)在控制台中设置场景:
        选择好脚本,对虚拟用户的加载进行部署,
            对被测系统的各台服务器进行监控,
            设置相应的Load Generator(负载生成器)
    4)运行场景,
        生成Analysis(结果分析报告),生成各种图表。
           提供性能调优的数据依据。


8、什么是事务,为何要创建事务?
    答:事务分为事务的开始、结束和之间的业务操作,
        事务用于度量服务器性能的。(事务响应时间)
        我们可以对比较关心的某个或某些业务操作,设定为一个事务,LR会记录不同事务的响应时间。
    事务:Transcation

9、LoadRunner脚本的基本组成部分。
    三部分(vuser_init、Action、vuser_end)+头文件globals.h
      *.c  类C语言源代码 脚本
10、LR和QTP的区别?
    1)QTP: 功能测试工具  (自动化)
        LR: 性能测试工具    可以测多用户
    2)QTP关心的是界面(UI),关心的是对象(对象库的概念);
       LR只关心客户端和服务器之间的数据包(请求包、应答包),
        不关心对象,更不需要比对对象的属性值,只关心抓包(捕捉数据包)。
       如果用户界面变了,但是业务逻辑不变:
           QTP脚本需要变化,LR脚本不需改变。
    3)LR关心的是客户端和服务器之间的对话,
        前提是选择正确的网络协议(相当于网络的语言)。
    4)LR不能补录。录制失败,从头再来。
        注意:录制过程中出现失误,该次录制作废,从New开始重新录制;
            录制时要慢,等待页面资源下载完毕后再进行下一步操作。
1、什么是性能测试?
  性能测试是测试的一种方法,在给定的负载条件下,测试被测系统的各项指标是否符合预期要求。
  比如:给定内存、CPU、磁盘、事务响应时间等指标
       如果发现与需求不一致,就发现性能瓶颈。

2、性能测试的目的?
  识别系统中的弱点、评估系统能力、进行系统调优,提高系统的可靠性、稳定性。

3、什么时候需要进行性能测试?
  对系统性能比较高的行业:通信、银行、金融、证券、医疗、保险、搜索引擎(百度、谷歌)等多用户的系统。

4、性能测试的工具--LoadRunner11 的组成部分?
(重点掌握3大组件,有时+1 Load Generator)
    1)虚拟用户脚本生成器(Virtual User Generator)
     捕获用户的业务流程和创建自动性能测试脚本,模拟单用户
    2)压力调度控制台(Controller)
     根据场景的设置,配置虚拟用户,运行场景,收集测试数据
    3)压力结果分析器(Analysis)
     分析测试结果
    4)负载生成器(Load Generator)压力生成器
     通过运行虚拟用户产生实际的负载
    5)代理程序(Agent)
     部署在各个客户端(负载机),协调得到步调一致的虚拟用户
    6)监控程序(Monitor)
     监控主要的性能计数器

5、如何进行性能测试?
  思路:围绕LoadRunner 性能测试工具
    三大组件:1、VuGen  2、Controller  3、Analysis +4.Load Generator
  LR测试流程:
    使用VuGen录制脚本 -> 录制后需要调试脚本
        (1、参数化;2、检查点;3、事务点; 4、集合点;5、关联;6、流程控制、函数调用等)
  脚本分为:init 、 Action、 end
  添加事务的目的:控制台运行后,会收集到事务的响应时间。
  对事务进行并发测试:在事务之前,加入集合点
      注意:集合点只能加在Action中
  检查点函数:web_reg_find();
      带有reg的函数,注册性函数,放在相应请求之前。
  不同文件的格式和后缀:
      脚本文件      *.usr 
      控制台文件    *.lrs   场景文件
      结果分析文件  *.lra  分析文件
      控制台结果文件 *.lrr     Results -> Results Settings...
  将调试好的脚本 -> 控制台中
     可以选择:手工设置(Manual Scenario)
        或 基于目标的设置 (Goal-Oriented Scenario)
    一般选择手工方式,可以进一步选择是否以百分比方式划分VU
    选择场景的类型:
       场景中虚拟用户数
       对虚拟用户的设置:
        (初始化、开始运行、持续时间、何时停止)
    可以监控系统资源:
       可以监控某台服务器 192.168.0.68  AUT的多台服务器
       或本地主机 localhost  (学习时)
    Run-time Settings (场景的优先级高)
       迭代次数:  针对Action迭代
       Pacing:  每次迭代之间的时间间隔
       Log:  日志控制
       Think time: 思考时间,每次请求之间的时间间隔
    运行场景 ->
   结果分析器: 查看结果是否符合性能需求
     概要:事务平均响应时间、吞吐率、场景运行人数...
     平均事务响应时间
     吞吐率
     点击率
     资源图
     ...
提示:结合LR原理图分析

你可能感兴趣的:(LR11-01)