性能测试: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:\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目录
    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:\work\script\day01\login

      修改字体: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 `\0243'

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

        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

LoadRunner(1)的更多相关文章

  1. 老李分享:性能测试你不应该只知道loadrunner(1)

    老李分享:性能测试你不应该只知道loadrunner(1)   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试 ...

  2. LoadRunner(三)——LR相关概念&组成部分

    参考学习感谢:<精通软件性能测试与LoadRunner实战> 一.运行机制和主要组成部分 1.LoadRunner主要由VuGen.Controller和Analysis三部分构成: 2. ...

  3. LoadRunner(一)——性能测试基础及性能指标概述

    参考学习感谢:<精通软件性能测试与LoadRunner实战> 一.典型的性能测试场景 某个产品要发布了,需要对全市的用户做集中培训.通常在进行培训的时候,老师讲解完成一个业务以后,被培训用 ...

  4. LoadRunner(8)

    一.脚本关联技术  引入: 打开WebTours首页,点击administration连接: 具有大量管理项,LR为了模拟一些特效设置的选项,实际项目中不存在. -> 选择第三项: Set LO ...

  5. LoadRunner(4)

    一.LoadRunner工具的组成 1.VuGen 虚拟用户脚本生成器 脚本好比:武器 VuGen好比:兵工厂 VU好比:士兵 2.Controller 压力调度控制台 好比:总指挥部 3.Analy ...

  6. LoadRunner(2)

    一.性能测试的基本概念 1.并发和在线的区别:并发的压力是一种瞬时压力,一般针对同一类型业务:在线的压力是一段时间的压力,没有并发那么集中. 规律:一般20用户并发产生的压力相当于200用户在线的压力 ...

  7. LoadRunner(7)

    一.参数化策略 1.Select next row(How? 如何取?)取值方式 选择下一行 1)Sequential:顺序的 每个VU都从第一行开始,顺序依次向下取值: 数据取完可以从头循环重复使用 ...

  8. LoadRunner(6)

    一.脚本录制技术细节 1.选择合适的协议: 1)B/S架构:常用Web[HTTP/HTML]协议,如果项目中使用了其它技术,比如Ajax.JDBC.FTP等,就需要选择多协议: 2)C/S架构:常用W ...

  9. LoadRunner(5)

    一.在线综合场景测试:号称能更真实模拟实际生产环境 又称为:混合交易测试 (交易就是事务 Transaction) 1.三要素: 1)多用户:根据需求指定VU数 压力的来源 2)多任务:根据需求结合多 ...

随机推荐

  1. Dell 12V/18A电源适配器接口改造

    手头有几个航模用的充电器,原来一直用实验室电源,不方便移动,为了便携省地方,就想配个合适的电源.在网上找了下,航模专用的适配器价格太高,国产的杂牌适配器功率虚标严重并且可靠性是个问题,工业用的电源基本 ...

  2. 20190722 - Windows 下使用 move 命令和通配符移动多个文件

    这是个标题党,实际上 move 命令无法移动通配符匹配的多个文件 比如,我有四个文件: c:\a\a1.txt c:\a\a2.txt c:\a\b1.txt c:\a\b2.txt 想移动后两个文件 ...

  3. 用myeclipse连接MySQL8.0时没有配置jar包

    先上测试代码 package testJdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql. ...

  4. Cassandra的架构

    第5章 Cassandra 的架构 5.1 system keyspace Cassandra有一个称为system的内部keyspace,用于存储关于集群的元数据.包括:节点令牌,集群名,用于支持动 ...

  5. golang struct 转map 及 map[string]*Struct 初始化和遍历

    package main import ( "encoding/json" "errors" "fmt" "reflect&quo ...

  6. [Nowcoder113E]弹球弹弹弹_线段树

    弹球弹弹弹 题目大意:有n个位置,标号为1到n的整数,m次操作,第i次操作放置一个弹球在b[i] xor c[i-1]处,并询问b[i] xor c[i-1]处弹球个数c[i]每次操作后,在x处的弹球 ...

  7. 【转帖】Ubuntu : apt-get 命令

    Ubuntu : apt-get 命令 https://www.cnblogs.com/sparkdev/p/11339231.html ubuntu的 我一直不熟 感谢作者 总结的这么好 在学习一下 ...

  8. SQLite基础-7.子句(一)

    目录 SQLite子句(一) 1. WHERE子句 2. LIKE子句 3. GLOB 子句 4. Oreder By 子句 SQLite子句(一) 1. WHERE子句 WHERE 子句后面跟着条件 ...

  9. ASP.NET Core中使用Dapper

    ⒈添加 NuGet 包 Install-Package Dapper ⒉封装数据库类型 using System; using System.Collections.Generic; using Sy ...

  10. PAT A1027 Colors in Mars (20)

    AC代码 #include <cstdio> const int max_n = 1000; int ans[max_n]; char result[max_n]; char radix[ ...