一、性能测试的基本概念

  1、并发和在线的区别:并发的压力是一种瞬时压力,一般针对同一类型业务;在线的压力是一段时间的压力,没有并发那么集中。
    规律:一般20用户并发产生的压力相当于200用户在线的压力(近似1:10的比例)
    制定性能测试计划,作为参考,比如设计的在线用户数最多10000个,建议最多测试1000~2000用户的并发。
    (并发测试)
    对比:两种常用性能测试策略(面试题)
    并发测试:严格的并发、瞬时压力 1000~2000人并发
    在线综合场景测试:日常在线的压力 10000人在线

  2、请求响应时间 = 客户端时间 + 网络时间 + 服务器时间
    被测系统 SUT
    __________________________________
    Client --网络-- Web Server --网络-- DB Server
    请求Request ---1--> 处理 ---2---> 增删查改 SQL
          响应Response <--4--- <---3----
    常用方法:排除法
    Internet: 互联网/广域网
    Intranet: 内联网/局域网 一般速度更快
    建议1:可以通过内网测试规避掉网络的问题,客户端一般不会成为性能瓶颈(客户端性能问题一般出现在JavaScript程序--Web前端动态技术,比如客户端验证等),所以大部分情况下,如果请求响应时间长,性能瓶颈出现在服务器端;
    建议2:Web服务器和数据库服务器最好分开部署(分布式),既可以让负载(压力)更加均衡,又可以便于LR对系统资源的监控。

  3、事务响应时间:用户完成某个具体操作(动作)所需的时间。 Transaction Response Time
    事务也称为交易
    比如:登录、订票、转账、抢红包 都可以是一个事务
    一个事务范围内很可能包含多个请求,包含了若干个请求响应时间的综合效果。

  4、点击率:Hits Per Second 越大,对服务器压力越大
    含义:每秒钟用户向Web服务器提交的HTTP请求数。
    不是指鼠标点击的次数,比如:点击一个超级链接,服务器返回一个页面,页面中包含了5个图片,则当前发起的点击数(请求数):1+5 = 6个 Http请求
    因为:<img src="图片的资源路径名"/>
    自动向服务器发起请求,获取图片的响应

    目前录制脚本使用:Web[HTTP/HTML] 协议
    Web: 就是使用浏览器访问服务器的一种方式、技术 B/S
    采用HTTP协议通信、在响应返回结果中带有HTML源代码

    HTTP: 超文本传输协议
    HTML: 超文本标记语言 网页语言、浏览器解释的语言
    形式:*.html 或 *.htm 文本文件
    编辑文本、标签(标记)等表示页面的元素
    <html> 根标记 头
      <head> 头
      <title>浏览器标题</title>
      </head>
      <body> 主体 浏览器正文部分
        文本、其它标签表示不同页面元素
      </body>
    </html> 根标记 尾

  5、吞吐量:Throughput
    含义:用户在任意给定一秒从服务器获取的全部数据量,单位是字节Byte,累计时间的全部数据量。
    吞吐率:吞吐量 / 测试时间 单位:Byte/sec 体现效率
    每秒字节数
    TPS: Transaction Per Second 每秒事务数
    比如:一般系统TPS达到50个、100个 不错了
    好的系统天猫双十一 峰值TPS:
    2016: 12万
    2017: 25万

  6、请求和响应:都遵循Http协议
    Http Request: 客户端向服务器发请求
    Http Response: 服务器向客户端返回响应(应答)

  7、系统资源利用率:一般指系统中CPU、Memory内存、Disk磁盘、Network网络等主要资源的使用情况。
    CPU中:%Processor Time CPU忙的时间的百分比
    CPU使用率 70~80%
    (yu4)阈值:超过该值容易出现性能瓶颈

二、熟悉三大组件基本协作关系
  需求:测试用户登录在8个用户访问时的性能情况
  关注性能指标:平均事务响应时间、TPS、点击率...
  <3秒
  其它:脚本:login 账户:jojo和bean
  VU数:8个
  用户加载方式:每隔2秒加载1个VU
  运行持续时间:所有VU运行完脚本

  1、使用VuGen录制login
    对脚本进行增强:添加事务 login
    录制、调试、回放通过才能使用
    D:\work\script\day02\login
    注意:如果脚本修改过了,一定要保存并编译,才是最新版本!

  2、使用Controller 设置场景 Scenario
    开始 -> 所有程序 -> HP LoadRunner -> Applications-> Controller
    默认使用场景类型:手工场景 Manual Scenario
    将Use the Percentage Mode to... 去除打钩
    目的:VU数量的分配目前不用百分比方式,采用具体人数
    -> Browse按钮 选择脚本 day02\login -> OK
    -> 场景设置界面:
    -> 设置8个VU: Run Mode中选择Basic Schedule
      将Quantity 改为8 VU数量
    -> 设置VU的行为:
      1)Initialize: VU初始化,默认运行前初始化
        好比:运动员的热身活动
      2)Start Vusers: VU的加载方式,何时启动VU
        Start all Vuser simultaneously 同时
        默认同时加载8个VU
    需求:每隔2秒加载1个VU 递增效果
    双击 -> 改为:1 Vusers every 00:00:02(HH:MM:SS)-> OK
    关注Schedule Graphics 计划预览图
    横坐标:Time 测试时间 纵坐标:Vuser 虚拟用户数
    锯齿状:每隔2秒加载1个VU
    虚线:运行时间 不确定
      3)Duration: 运行持续时间
        <1> Run until completion 运行直到结束(脚本结束)选择
        <2> Run for __ days and __(HH:MM:SS) 具体运行多久
        <3> Run indefinitely 无限运行,直到手工停止
          建议及时保存场景文件: ctrl+s
          C:\work\scenario\day02\8VU_login *.lrs Scenario

        说明:目前暂时忽略Windows Resources 系统资源监控
          后续统一添加

    设置好场景,可以运行场景:Start Scenario 按钮
    -> 从Desion视图 切换到 Run视图
    设计 运行

    如果运行场景出错,要查看错误信息 Details 详细描述:
      脚本 12行 错误 连接服务器失败
      Action.c(12): Error -27796: Failed to connect to server "localhost:1080": [10061] Connection refused 连接被拒绝
    原因:服务器未开启 或 服务器停止运行

  3、点击控制台Run视图中,倒数第3个按钮
    打开Analysis 结果分析器
    Report 报告
    Summary Report 总体报告
    重点分析事务:
      Transaction Name Minimum Average Maximum
      Std. Deviation 90 Percent Pass Fail Stop
      事务名 最小 平均 最大 标准方差 90%时间 通过 失败
      login 0.409 0.512 0.811 0.142 0.811 8 0 0
      重点关注平均事务响应时间:0.512s
      如果性能需求中规定时间不能超过3s,目前符合需求
      最小、最大值作为参考
      Std. Deviation 标准方差:0.142 查看稳定性的依据
      规律:越接近于0,说明不同结果值越接近,说明系统运行越稳定。
      90%时间:绝大部分VU在该时间内完成,辅助分析
      通过率:100% 功能不能模拟实现,性能结果无法生效
      事务错误率一般控制在0.3%以内:
      1000个事务,如果出错了3以内,可以接受

      HTTP响应状态码:(面试题:列举出常见的)
      Response Status Code
      不同响应码表示不同的响应状态
      2xx 成功
      3xx 重定向(正常)
      4xx 客户端错误
      5xx 服务器端错误

      200 OK 表示服务器成功返回响应
      302 重定向响应(是一种正常的技术手段)
      404 客户端问题:资源找不到 比如访问地址不对
      500 服务器问题:服务器端程序有错误、异常
      Error 错误
      Exception 异常 XxxException
      ArrayIndexOutOfBoundsException
      数组下标越界异常
      int[] arr = {1,2,3,4,5}
      0 1 2 3 4
      arr[-1] arr[5] 正常下标 0~4

      Graphs 图表
      Running Vusers 正在运行的虚拟用户数
      Hits per Second 点击率
      Throughput 吞吐量
      Transaction Summary 事务摘要
      Average Transaction Response Time 平均事务响应时间

      技巧:合并图比较 右击A图 -> Merge Graph -> 选择B图
      练习:将点击率 和 吞吐量 合并
      规律:趋势相当,点击率是起因,吞吐量时结果,点击率提高了,在正常范围内吞吐量也会提高,如果达到了性能瓶颈,就难以提高。使用拐点分析法找到性能的瓶颈,比如达到多少点击率时,吞吐量无法继续上升。

      如何获取TPS? 添加新选项-> 新的图
      右击Graphs -> Add New Item -> Add New Graph
      -> 事务中 -> Trnasaction per Second 0.121

      建议将结果文件保存:ctrl + s
      D:\work\result\day02\8VU_login_r1 *.lra analysis
      后续可以打开分析

    练习题:熟悉LR三大组件的基本运行
    测试计划:针对9个VU各完成一次购票操作
    效果:9个VU为jojo账号一共订到9张票
      1)使用VuGen录制buy脚本:关键有login、buy事务、录制完成了
      2)使用Controller加载buy脚本
    设置脚本组:组名默认、脚本路径、VU数 9个
    VU行为:默认运行前初始化
    每隔1s加载1个VU
    运行直到结束
    使用Run视图运行并监控,获取结果报告
      3)使用Analysis关注几个重要性能指标:
    平均事务响应时间、TPS、点击率

归纳:
  1、脚本基本组成、读懂脚本和业务流程的对应关系
  2、熟悉常见的概念:
    事务、点击率、吞吐量、TPS...
  3、熟悉LoadRunner三大组件基本协作关系
    VuGen -> Controller -> Analysis
    脚本 场景 结果

LoadRunner(2)的更多相关文章

  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(1)

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

  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. 【极简版】OpenGL 超级宝典(第五版)环境配置 VS2010

    事先声明:该教程仅适用于VS2010环境下超级宝典第五版的配置 第一步:下载示例代码和环境包: 链接:https://pan.baidu.com/s/1llRRQ8ymBgMGuXp5M50pJw 提 ...

  2. Ubuntu14.04LTS 下配置Tomcat Hadoop eclipse环境

    下在相关软件: (genju yingjian xuanze xitong weishu,根据系统是32位还是64位选择软件的版本:jdk和eclipse) HADOOP:http://mirrors ...

  3. matplotlib画图总结--多子图布局

    1.subplot布局 subplot(nrows, ncols, index, **kwargs) subplot(pos, **kwargs) subplot(ax) x=[1,2,3] valu ...

  4. elasticsearch 安装head

    git clone https://github.com/mobz/elasticsearch-head.git yum install nodejs npm install 修改Elasticsea ...

  5. kafka 名词解释及原理解析过程(三)

    为什么要了解这些名词的解释呢?因为在学一个新的知识或者领域的时候,我们需要知道它所定义的概念和名词意思,因为只有这样我们才能理解和掌握这个新的知识点,才能更加系统的掌握这个技术. 一.名词解释 1.b ...

  6. [转帖CCIX]

    业界七巨头联手,数据中心通过PCIe实现25Gbps数据通信! 2017-06-07 17:31 CCIX(Cache Coherent Interconnect for Accelerators,针 ...

  7. opencv实现人脸识别(五) 运用tkinter进行GUI绘制 整合人脸识别模块

    因为之前学习过tkinter库,所以在学习了人脸识别模块的编写后, 打算绘制一个简单的GUI来应用人脸识别功能. 主界面如下所示: 签到打开在点开后直接进行人脸识别,如果成功则自动关闭视频窗口. 录入 ...

  8. Django-djangorestframework-请求模块-获取请求参数

    目录 请求模块 源码分析 正式使用 总结 请求模块 主要是分析 drf 二次封装后的 request 对象 以及怎么拿到请求传递过来的数据(url 拼接的数据,数据包传过来的数据) 源码分析 源码查看 ...

  9. ingress之tls和path使用

    ingress tls 上节课给大家展示了 traefik 的安装使用以及简单的 ingress 的配置方法,这节课我们来学习一下 ingress tls 以及 path 路径在 ingress 对象 ...

  10. webpack打包时删除console.log,和debugger

    开发过程中我们不可避免的需要console.log调试,然而在上线时如果不删除这些console.log可能会造成内存泄漏,因为console.log出来的变量是不会被GC的,webpack给我们提供 ...