• LoadRunner(1)


    性能测试:HP LoadRunner11


    一、初步概念:
      1、功能测试:测试产品的功能是否满足功能需求。
        如:ATM取款(在线取款)是否成功或转账操作是否成功
        -- 一个用户


      2、性能测试:测试产品的性能是否满足性能需求。
        包括指标:时间、多用户共同使用
        如:ATM取款(在线取款)耗时30分钟
        十万人同时转账,系统崩溃了,都属于性能问题。

        结论:性能测试基于功能,其要求高于功能
        测试基本流程:功能测试、安全测试、性能测试

        招聘的需求:
          A. 功能测试(手工、自动化) 代码要求高
          B. 性能测试(只能自动化) 协议和业务的理解、脚本的增强、硬件、操作系统、网络、服务器、数据库、软件结构、算法
          C. 手机测试(手工、自动化)

    二、性能测试的课程安排
      1、性能测试的基本概念
        如何掌握一门技术?3W1H法
        What? 是什么? 核心概念
          数组:用来保存一组相同类型数据的载体、容器、数据结构
        Why? 为什么? 优势 好管理
        Where? 在哪儿用? 应用场合 面试的问题有针对性
        How? 如何使用? 使用步骤、注意事项 -- 结合项目描述

        哪些行业、软件需要进行性能测试?
          1)对性能要求较高的:通讯、银行、金融、证券、保险、互联网应用(电商、社交软件、搜索引擎...)
          2)对性能要求较低的:单机软件、少量用户的系统
          比如:计算器、用户量少的员工管理系统

      2、性能测试工具:HP LoadRunner11 份额:60%,其它工具:JMeter 20%
        1)LoadRunner的初级部分:三大组件的基本运行
          a. 脚本生成器:录制、调试、增强性能测试脚本
          b. 控制台:好比总指挥部
          c. 结果分析器:分析性能测试结果数据,获取性能测试报告
        2)LoadRunner高级部分:三大组件深入掌握

      3、性能测试的高级部分:制定性能测试计划(难点),遇到性能问题(瓶颈),如何定位、定性、进行性能调优。

        需求 测试计划制定 执行 性能分析和优化

        并行:多任务占据各自资源一起运行
        并发:多任务抢占少量资源“一起运行”

        奥运门票系统分析: 需求预估不足,导致测试通过,但不能满足实际的压力。
        压力激增--瞬时压力:并发压力(并发测试)
        系统瘫痪-- 宕机(down机) dang4

        C S
        客户端 服务器
        北京------> 上海 网络平均延迟:0.2秒
        上海------>

    三、性能测试的概念
      1、性能测试: 比喻成“攻坚战” 测试机 攻打 被测系统
        严阵以待、想方设法、放马过去、方知厉害
        模拟真实的生产环境,制定性能测试计划,模拟不同用户使用不同压力去访问被测系统,根据计划中的性能指标分析系统是否满足性能需求。
        常见性能指标:
          <1> 平均事务响应时间 比如<3秒
          <2> 最大并发用户数 比如达到1000
          <3> TPS 每秒事务数 比如达到100 系统效率体现
          <4> 系统资源特性:CPU使用率... 比如:70%
          ...

        功能的问题:缺陷 bug
        性能的问题:瓶颈 影响性能的原因、位置

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


      3、性能测试首先看性能需求,如果没有需求,要和客户交流,根据被测系统相关资料,结合测试经验,编写性能测试计划(设计),测试计划是后续展开性能测试的重要依据。

      4、负载测试和压力测试的区别?(面试题)
        1)共同点:都是在测试过程中逐步加压(递增测试)
        2)负载测试 Load Testing
          是在正常范围内测试,满足性能需求、正常运行;
          -- 见好就收
        3)压力测试 Stress Testing
          可以在极端范围内测试,测试系统的性能极值;
          -- 使劲折腾
        4)举例:性能需求中要求系统支持100用户并发
          负载测试:20 40 60 80 100 比如分为5个节点
          压力测试:100 200 300 ...

      5、影响性能的因素:
        1)数据库:60%以上的性能问题和数据库有关
        2)硬件配置:好的系统可伸缩 增加、去除设备改变性能
        3)操作系统:Linux/Unix 一般和系统配置有关
        4)其它:网络、网络协议、客户端等

        网络协议: Protocol 网络通信的语言、规范、规则、标准
        比如:HTTP TCP UDP FTP
        结论:分析协议是性能测试的关键。

        TCP/IP协议有几层? (TCP/IP协议簇 cu4)
          从上到下有四层: 使用的协议:
          应用层 HTTP FTP DNS Telnet SSH ...
          传输层 TCP UDP
          网络层 IP
          物理层 底层比特流 bit 二进制 0 1

        TCP和UDP的区别? HTTP基于哪种?TCP
          TCP: 传输控制协议 可靠的协议,效率偏低
          原理:传输数据时需要进行确认
          建立连接时需要三次“握手”,断开连接时需要四次“握手”
          --- 相见时难别亦难
          适用于:文件传输、网页传输等可靠获取信息
          UDP: 用户数据报协议 不可靠的协议,效率偏高
          只管发,不管确认
          适合于:视频点播、流媒体
          A 我特别能吃苦! --> B

        HTTP协议:超文本传输协议
        是互联网中最基本、最重要的协议
        http://www.baidu.com
        特点:简单的(格式)、无状态(不保存用户状态)的协议
        Http Request: 客户端向服务器发送Http请求
        Http Response: 服务器向客户端返回Http响应(应答)
        一次请求,一次响应就是一次交互

        常见的系统架构:C/S B/S
        Client --网络-- Server
        客户端 服务器
        Browser
        浏览器 是一种特殊客户端
        客户端浏览器

      6、被测系统 SUT
        SUT (System Under Test) 系统
        AUT (Application Under Test) 应用
        EUT (Environment Under Test)环境
        就是:Web服务器、数据库服务器、网络的统称
        Web应用典型三层架构: 常用B/S架构
        被测系统 SUT
        ___________________________________
        Client --网络-- Web Server --网络-- DB Server
        客户端浏览器 Web服务器 数据库服务器
        部署Web应用 管理表和数据
        1.请求 Request --> 2. 接收并处理 --> 3.查询 select
        6.响应 Response <-- 5.继续处理 <-- 4. 结果

        业务流程:用户登录
          Username: Tom
          Password: 123
          Login

    四、LoadRunner的工作原理:录制-回放的工作方式
      1、录制时:LoadRunner根据相关网络协议,记录下客户端和服务器二者之间的对话(请求包、应答包);脚本是自动化执行的依据,先模拟功能的实现,再测性能(增强);
        -- 使用真实的客户端浏览器


      2、回放时:LoadRunner根据相关协议模拟真实的客户端向服务器发起请求,并按照增强后的脚本去验证服务器的应答(检查点)。
        补充说明:有时脚本录不下来,需要自己写脚本,发现测试时通过了,但是实际运行时服务器瘫痪了。
        原因:没有模拟真实的客户端效果,接收也出现问题,导致失败;
        结论:即便是自己写脚本也要模拟真实的客户端效果。

        项目安排?分工

      3、LoadRunner的三大组件:各司其职、各尽所能
        1)虚拟用户脚本生成器: VuGen 或 VUG 好比:兵工厂(Virtual User Generator)
          功能:录制、编辑、调试性能测试脚本 脚本好比武器
        2)压力调度控制台(Controller) 好比:总指挥部
          功能:创建场景、运行场景、监控场景,收集测试结果数据
          场景:Scenario 就是一个大型的配置文件
          保存场景界面设置的细节,表示整个测试计划
        3)压力结果分析器(Analysis)
          功能:把收集到的测试数据以各种图表形式展示;便于分析性能情况,得出测试结果报告。

    五、关注SUT,并进行脚本的录制和回放。
      1、熟悉SUT:LR自带的B/S架构的系统 WebTours
        航空订票系统
        先启动Web服务器:Xitami 小型服务器软件
        打开浏览器,访问:URL 地址 统一资源定位
        回环地址
          http://127.0.0.1:1080/WebTours/
        本地主机 IP
          http://localhost:1080/WebTours/
        协议名 主机名 端口号 应用名
        常见默认端口号:
          Tomcat默认8080 Oracle: 1521 Mysql: 3306
          HTTP:80

        用户名:jojo
        密码:bean
        系统功能介绍:
          1)Login: 用户登录 只有用户登录成功了,才称为在线
            此时用户具有访问系统的某种权限
          2)Sign Off: 退出登录 用户离线,放弃权限
          3)Flights: 订票
          4)Itinerary: 查看订票记录
          5)Home: 主页
          6)其它:注册等

      2、LR使用前的注意事项:
        1)使用LR之前,修改浏览器配置(默认IE)
          <1> 工具 -> Internet选项 -> 常规 -> 设置-> 每次访问此页时检查
            原因:当脚本更新时,能够及时适应
          <2> 工具 -> Internet选项 -> 程序 -> 重置Web设置
            原因:恢复录制时自动打开的浏览器为IE
          <3> 工具 -> Internet选项 -> 高级-> 去除 启用第三方浏览器扩展
            原因:避免录制时的干扰


        2)由于当前环境,导致LR三大组件运行缓慢
          解决方法:禁用本地连接
          右击 网上邻居 -> 属性 -> 右击 本地连接 -> 停用
          说明:在真实测试项目中不能禁用!
          因为需要用本机作为测试机 联网 访问其它服务器主机;而目前测试机、被测系统主机 都在本机 localhost访问。

        3)如果WebTours中Flights功能无法显示:
          原因:和Oracle中Perl服务资源冲突
          解决方法:删除以下两个目录 前提:先关闭perl.exe进程
          D:oracleproduct10.1.0db_1perl5.6.1in
          删除 MSWin32-x86目录
          D:oracleproduct10.1.0db_1perl5.6.1lib
          删除 MSWin32-x86目录
        4)要求打开LoadRunner任何一个组件,都从开始 -> 所有程序中打开,不能使用快捷方式。
        5)当录制时,如果被测系统网页无法自动打开(浏览器),因为系统某些服务产生的影响,比如:java.exe,建议关闭所有无关的、有影响的服务:
          java.exe、杀毒进程、ApacheXxx、oracle、mysql、sqlserver、TNSLSNR、TomcatXxx、perl、电脑管家...
          技巧:先对进程列表按照进程名称排序,便于合并查找

      3、案例:录制并回放用户登录脚本
        使用:VuGen
          开始 -> 所有程序 -> HP LoadRunner -> Applications-> Virtual User Generator
          点击New 新建脚本 -> 选择录制的协议:
          使用默认的 Web[HTTP/HTML]-> Create 创建
          填写的信息:
          1)软件架构类型: Internet Applications (B/S) 默认Win32 Applications (C/S)
          2)选择浏览器类型:默认IE
          3)URL Address: 被测系统首页的网址
            http://localhost:1080/WebTours/
            或
            http://127.0.0.1:1080/WebTours/
          4)Working Directory: LR工作路径 默认
          5)Record into Action: 录制脚本的位置 默认Action(vuser_init 初始化 Action 核心动作 vuser_end 结束)
            -> OK 自动打开浏览器 SUT首页,开始录制
              关注小操作条(录制控制,关注数字的变化 Event 记录事件的步骤,等待数字稳定后才继续操作,避免录制不完整)
            -> 输入jojo和bean
            -> 开始事务(插入事务)名称:login -> OK
            -> 点击Login按钮
            -> 结束事务login -> OK
            -> 切换到vuser_end模式,点击Sign Off 退出
            -> 关闭浏览器 -> 点击Stop 结束录制

          建议新建工作目录:C:work (目录名使用英文、数字)
          新建三个子目录:
            1)script 存放脚本文件
            2)scenario 存放控制台的场景文件
            3)result 存放结果分析文件
          ctrl+s 将脚本保存在:C:workscriptday01login

          修改字体:Tools -> General Options -> Environment-> Editor Comic Sans MS 14 Bold 加粗

          Java编程的基本步骤:
            1. 编辑: Hello.java
            2. 编译: javac Hello.java --> Hello.class 字节码
            3. 运行: java Hello 启动JVM,加载并执行Hello程序

          录制脚本后:
            1)编译:Compile 修改完脚本后一定要编译!
              帮助检查语法错误,并能够保存脚本并生成最新的版本。
              脚本 23行附近 语法 错误 少个;
              Action.c (23): syntax error; found `lr_think_time' expecting `;'
              非法的 字符 中文 的;
              Action.c (23): illegal character `243'

              技巧:如何快速提高调试技巧?
              -- 可以将正确的代码故意改错,观察出错的提示
              大部分提示都非常相似,日积月累,积累调试经验

            2)回放:Run
              VuGen模拟1个虚拟用户,执行脚本中的步骤,向被测系统发请求。(没有打开浏览器,工具在模拟协议的发送)

              设置运行后自动出现测试结果: Test Results
              Tools -> General Options -> Replay 回放-> After Replay 选择 Virtual test result 虚拟测试结果

              运行错误提示:
                Action.c(4): Error -27796: 第4行 错误
                失败 连接 服务器
                Failed to connect to server "localhost:1080": [10061] Connection refused
                连接 被拒绝
              原因:服务器已经down机、关闭
              如何解决:重新启动服务器

              学习重要思路:业务 + 技术
              业务:不同行业操作流程,比如银行、物流、保险、电商、电信...
              技术:是通用的,能够解决各行各业的业务问题。

              回放脚步执行顺序:VuGen负责调用
              初始化 核心 结束
              vuser_init 1次 -> Action 默认1次 -> vuser_end 1次
                      可循环多次

              每段脚本中都有类似结构:C语言的函数的定义
              vuser_init() //默认返回int 可以不写
              {
                return 0; // 返回0表示正常结束 -1 错误退出
              }

              函数function/ 方法method:对一段代码的封装
              定义函数:代码的封装
              调用函数:代码的复用(重复使用)
              函数声明 三要素:
              返回值类型 函数名(参数表, ...)
              比如:
                形式参数
                int add(int a, int b)
                { //函数体 对函数的步骤实现
                  return a+b;
                }
                调用函数: 实际参数
                int n1 = add(1, 2);
                int n2 = add(3, 5);


    归纳:
      1、性能测试常见的概念
      2、性能测试工具LoadRunner基本原理:录制-回放
      3、LoadRunner三大组件:VuGen、Controller、Analysis
      4、录制和回放脚本基本步骤、技巧
      5、调试好测试环境:测试机LR 被测系统 WebTours

  • 相关阅读:
    得到一个文件夹中所有文件的名称的几个方法(命令指示符, C++, python)
    C++ 使用命名规范
    【前端】直击源头的让你3秒理解并且会用Jsonp!!!
    React Native新手入门
    【方法】纯jQuery实现星巴克官网导航栏效果
    【方法】jQuery无插件实现 鼠标拖动切换图片/内容 功能
    【总结】前端框架:react还是vue?
    【总结】2017年当下最值得你关注的前端开发框架,不知道你就OUT了!
    【疑点】<p></p>标签为什么不能包含块级标签?还有哪些特殊的HTML标签?
    【总结】最常用的正则表达式大全,你要找的这里都有!
  • 原文地址:https://www.cnblogs.com/KalosOwen/p/8977162.html
Copyright © 2020-2023  润新知