一、在线综合场景测试:号称能更真实模拟实际生产环境
    又称为:混合交易测试 (交易就是事务 Transaction)

  1、三要素:
    1)多用户:根据需求指定VU数 压力的来源
    2)多任务:根据需求结合多个任务混合执行 3个以上
      通过多个脚本体现
    3)在线持续运行一段时间:一般1h左右

  2、录制脚本时建议进行必要的设置:
    1)让页面的标题变为自动的文本检查点。
      (<title>标题文本</title>)
      建议:开发方在设计网页时,给不同的页面使用不同的标题,用于辅助的检查。比如成功页面和错误页面的标题不同。
      操作:VuGen -> Edit Recording Options 编辑录制选项
        选择Advanced高级 ->
        选择Generate web_reg_find functions for page title.
        为页面标题生成检查点函数。

    2)为VuGen录制时指定合适的字符编码集:
      原因:为了避免录制后脚本中文乱码问题
      原理:char c1 = 'A'; 65 打印出 c1 + 1 66
        每个字符都对应一个数字 -- 字符编码
      常见的字符编码表:
        美国 AscII 编码表 1Byte中7bit 0~127 128种字符
          字符 十进制数 编码
          '0' --- 48
          '1' --- 49
          'A' --- 65
          'a' --- 97
        西欧 Latin-1/ISO8859-1 1Byte中8bit 256种字符
        任何字符集都和AscII向下兼容
      结论:英文和数字不会出现乱码问题
      中国:GBK/GB2312 2Byte 表示更多整数 -- 字符
      国际通用:UTF-8 可变长 英文1Byte/中文3Byte
        支持多种国家的字符集,项目中常用
        中文乱码的原理:编解码方式的不统一
        编码 解码
        '你' '好' GBK 1122 3344 GBK '你' '好'
        Latin-1 ?? 不存在
        UTF-8 '鍦' '嚎'
      操作:建议将字符集改为适合当前项目的编码表
        比如常用UTF-8
        Support charset -> UTF-8
        能够避免录制后脚本中的中文出现乱码。

  3、需求:针对WebTours项目核心测试点进行一次综合场景测试,针对购票、查看航班、浏览线路操作进行10用户在线综合场景,持续运行1小时(压缩为20分钟)。

  4、先录制脚本:script\day05目录下
    注意添加事务、检查点:
      核心业务通过事务表示,为不同事务起对应的事务名;
      后续场景运行后能够自动获取不同事务的平均事务响应时间、TPS等指标。(混合交易、事务)
    1)购票 buy
      事务:login buy
      检查点:登录成功、订票成功
        自动页面标题检查点

    2)查询航班 search
      New -> vuser_init -> 输入jojo和bean
      -> 开始事务login -> 点击Login -> 结束事务login
      -> 改为Action -> 点击Flights
      -> 选择城市从Denver到Paris -> 开始事务search
      -> 点击Continue -> 检查点“Denver to Paris”
      -> 结束事务search
      -> 改为vuser_end -> Sign Off -> 关闭浏览器 -> Stop

    3)浏览线路 scan
      New -> vuser_init -> 输入jojo和bean
      -> 开始事务login -> 点击Login -> 结束事务login
      -> 改为Action -> 开始事务scan -> 点击Itinerary按钮
      -> 结束事务scan
      -> 改为vuser_end -> Sign Off -> 关闭浏览器 -> Stop

  5、脚本注意事项:
    1)合理添加事务:后续场景中针对不同事务自动统计平均事务响应时间、TPS等结果;
    2)适合添加检查点:不添加导致结果无法核实,如果添加过多会影响工具性能。建议手工添加1~2个,结合自动页面标题检查点即可。
    3)问题:是否启用Think time? 思考时间/等待时间
      分析:为了保证业务的真实性,需要思考时间,模拟用户步骤之间的等待;如果事务内含有思考时间,会累加到平均事务响应时间中,对结果产生影响。
      结论:建议启用思考时间,并将事务内的lr_think_time();转移到事务开始之前。
      操作:对三个脚本的不同部分进行检查,尤其是事务内
        buy search scan init 和 Action
      注意:及时编译 -> 回放 确保最新版本
    4)在线综合场景的脚本中不需要设置集合点,只有并发测试才需要。因为虽然多用户可能存在并发,但无需像并发测试那样形成瞬时压力。如果有集合点,建议注释掉:
      //lr_rendezvous("集合点名");
    5)参数化:根据业务需要进行,目前暂时忽略。
    6)场景设置的前提:确保脚本录制、调试、回放成功。

  6、打开控制台Controller,设置10VU综合场景
    使用手工场景、不使用百分比方式分配VU
    (1)设置场景模式、脚本组:
      New Scenario -> Browse 依次载入day05\三个脚本
      buy、search、scan 配置脚本组:
      -> Basic Schedule
      Group Name Quantity
      buy.3 2
      search 4
      scan 4
      一共10个VU,根据用户习惯设置合适的比例,模拟真实的访问效果。
    (2)场景方式:
      Schedule by:
        1) Scenario: 默认按照场景方式(选择)
          特点:所有脚本组共享同一个场景
        2) Group: 按照组方式,分组设置场景
          特点:不脚本组可以单独设置场景
          用途:适合多个组之间有协作关系时使用,比如reg注册30个账户给buy业务使用,reg组要先于buy组执行,使用组方式。
    (3)设置VU的行为:
      将三个组都选中(出现黑框),一起设置:
      1)初始化:默认运行之前初始化
      2)加载方式Start Vusers:设置小递增,每隔1s加载1个VU
        双击 -> 单选第2项: 1 00:00:01(HH:MM:SS)
        -> OK 效果图:锯齿状
      3)持续时间Duration: 指定20分钟(项目中一般1h左右)
        -> 单选第2项 Run for 0 days and 00:20:00(HH:MM:SS)
        说明:所有VU在20分钟内,循环执行各自Action脚本,时间将至,自动结束退出。
        第1项:运行直到结束,适合明确迭代次数时使用;
          比如固定注册30个账户
        第2项:适合明确持续时间时使用;
        第3项:一直运行,直到手工停止。
      4)退出方式:可以采用递减退出,避免突然的压力对测试结果产生影响,比如设置为每隔1s减少1个VU.

        及时保存场景文件:
        D:\work\scenario\day05\10VU在线综合场景 *.lrs

    (4)设置Run-time Settings
      选中三个脚本组 -> Run-time Settings -> 弹出窗口:
      选中多运行模式 RTS:
      Sharded RTS 共享 / Individual RTS 独立
      所有组统一设置一遍 每个组依次设置一遍
        1)迭代次数:1 此处不起作用,由Duration决定 20分钟
        2)Pacing: 改为第2项,随机4.000~6.000s
          Action迭代的间隔时间
        3)Log: 启用 Enable logging (选择)
          Log options: 日志选项
          Send message only when an error eccurs (选择)
          出错时才发消息
          Always send message 总是发消息,会写日志文件
          Log message at the detail level of: 日志消息级别
          Standard Log 标准日志(选择)
          Extended Log 扩展日志
        4)Think time: 启用,使用随机百分比50%~150%
          Use random percentage of recorded think time.
          Min: 50% Max: 150%
        5)Additional attributes: 附加选项/特殊参数值 不设置
        6)Miscellaneous: 杂项/其它
          <1> Error Handling 错误处理
            -> Continue on error 打钩 错误时继续
            原因:长时间测试过程中会执行大量的事务,不用因为个别错误而停止场景的运行。出现大量的错误,需要手工停止并及时纠正。-- 瑕不掩瑜
              水至清则无鱼,人至察则无徒
            错误率:0.3%以内 1000个事务,错误3个以内可以接受
          <2> Multithreading: 多线程 Thread线程 模拟 VU
            Run Vuser as a process 以进程方式模拟 相对稳定
            Run Vuser as a thread 以线程方式模拟(选择)省资源
          <3> 自动定义事务:都不选择
            原因:事务由自己定义,如果自动事务过多(每个Action、每个步骤),会导致结果数据多而杂,影响判断。
            自己添加的事务:login buy search scan 4种

        7)Network网络:Speed Simulation 网速模拟
          选择:Use maximum bandwidth 使用最大的带宽
          原因:准备充足的带宽,将最大的压力尽快呈现给服务器

          带宽:是网速的说法
            网速的单位 bps bit per second
            比特/秒
            比如网速 100Mbps 1Byte 字节 =8bit 位
            相当于 100/8 = 12.5MB/s

          衡量程序性能的两个角度:
            时间复杂度:时间越快越好
            空间复杂度:对内存空间的消耗越小越好

        8)Browser Emulation: 浏览器模拟
          Simulate browser cache 模拟浏览器的缓存 Cache
          缓存的原理:拿空间换时间!-- 提高系统性能的重要思想
          使用更多的内存空间 赢得 更快的访问时间
          结论:目前测试不使用缓存,为了让每次访问都公平对待
          如果使用缓存,让客户端更省力,降低后台压力
          后续都选中:每次都当做新用户看待 -- 公平
          下载非HTML资源、每次迭代模拟新用户、每次迭代清缓存
        9)Internet Protocol: 互联网协议
          Proxy: 选中No Proxy 不要代理
          Preferences: 后续疲劳强度测试也够用
          -> Options 选项 -> 将三个120都改为600 (秒)
          都是超时时间,保证充分的时间,促进成功率。
          连接
            包括:Http-request connect timeout(sec) -> 600
          接收
            Http-request reveive timeout(sec) -> 600
            Step download time(sec) -> 600
            -> OK 同样是在其它组

    (5)配置Windows resources 系统资源监控
      (后续查看平均结果作为参考)
      配置好Run-time settings后,继续配置Windows resources
      (Run视图 右下角窗口)
        右击窗口-> Add Measurements... ->
        Monitered Server Machines: 选机器 点击Add.按钮 ->
        Machine Information:
          Name: localhost 指定监控服务器的IP地址,主机名
            目前就是本地主机
          Platform: WINXP 系统平台
            -> OK
          Resource Measurements on: localhost 清空里面所有选项
            自己完成选项的添加(固定13项+1)
            -> 点击Add按钮 -> 选择以下内容:
              <1>Processor中有2项:(处理器 CPU)
                %Processor Time -> Total -> Add Total表示总和
                %User Time -> Total -> Add
              <2>Memory中有4+1项:(内存)
                Available MBytes -> Add
                %Committed Bytes in Use -> Add
                Page Faults/sec -> Add
                Pages/sec -> Add
                Page Reads/sec -> Add 页面读取率
              <3>Network Interface中有2项: (网络)
                Bytes Total/sec
                -> MS TCP Loopback inter...回环-> Add
                本地主机才选回环
                Packets/sec
                -> MS TCP Loopback inter...回环-> Add
                本地主机自己和自己通信,用回环
              <4>PhysicalDisk中有4项(2个队列):(磁盘)选Total
                Avg.Disk Queue Length -> Total -> Add
                Current Disk Queue Length -> Total -> Add
                Disk Read Bytes/sec -> Total -> Add
                Disk Write Bytes/sec -> Total -> Add
                磁盘读写率
                Disk I/O 磁盘输入/输出 Input/Output
                读 写
              <5>System中有1项: (系统)
                Processor Queue Length -> Add
                -> OK
                以上一共14项,先了解名字,后续再强化。
                -> 运行场景 Start Scenario

    (6)注意:
      1)当场景中Duration到达指定时间时,LR会向所有VU发出退出系统指令,所有VU运行完当前Action之后,退出系统;
        如果无法正常退出,和信号丢失有关,建议手工停止。
      2)运行出错,进行分类,依次解决:
        <1> 哪些错误不用关心?
          少量的非事务错误,可以忽略;
          负值分母计数器,和系统资源监控有关,可忽略;
          少量事务错误(0.3%以内),也可忽略。
        <2> 哪些需要关心?
          大量的错误,比如服务器崩溃了,大量无法连接;
          大量事务错误,和脚本有关,比如逻辑结构、代码语法、参数化数据等; reg脚本重复使用数据注册会报错
          事务有开始,没有结束也会在场景中报错
          场景设置出现偏差,会导致一定错误。
        <3> 如何解决?
          提前结束场景,根据错误信息,点击Details 详细描述,查看错误的位置、原因、解决方法建议;

          vuser_end.c(9): Continuing after Error -26366: "Text=Flight Selections" not found for web_reg_find
          和页面标题的检查点有关,找不到

          针对此次结果打开Analysis:
            将结果文件保存:
              D:\work\result\day05\10VU综合场景测试_r1*.lra 结果分析文件 analysis
            性能分析和结果报告:
              Duration: 20 minutes and 52 seconds. 场景运行时间
              1、最大在线用户数:10个
              2、总吞吐量:7,106,544 Byte
              3、平均吞吐率:5,672 Byte/sec
              4、总请求数:3,015 个
              5、平均点击率:2.406 个/秒 Hits per second
                平均每秒客户端向服务器发送2.406个请求
              6、总错误数:1 经过分析,影响不大
              7、重点关注事务特性
                Transaction Name Minimum Average Maximum
                Std. Deviation 90 Percent Pass Fail Stop
                事务名 最小 平均 最大 标准方差 90%时间 成功 失败
                buy 0.205 0.247 0.486 0.058 0.254 35 0 0
                login 0.452 0.538 0.791 0.095 0.574 10 0 0
                scan 0.444 0.62 0.975 0.102 0.777 157 0 0
                search 0.208 0.275 0.629 0.096 0.435 93 0 0
                初步分析:不同事务的平均事务响应时间<2s
                  最大时间<2s 时间效率较高
                标准方差:0.058等,说明结果比较稳定
                事务成功率:100%

  8、Http响应状态码 Http Response Status Code
    Http协议通过不同响应码来识别不同响应:成功、失败的信息。使用3位整数 第1位表示类别
    请列举常见的Http响应状态码
      分类:
        1xx: 中间环节
        2xx: 成功(正常) 比如 200 OK 成功响应
        3xx: 重定向(正常) 比如 302 重定向响应
        4xx: 客户端错误(问题)比如 404 资源找不到
        5xx: 服务器错误(问题)
          比如 500 服务器端程序有异常、错误
      Exception 异常
        ArrayIndexOutOfBoundsException
      数组下标越界异常
        Error 错误

    W3CSchool全套Web开发手册.chm
    HTML -> 参考手册 HTTP消息

  9、如何查看TPS? 每秒事务数 系统效率的体现
    右击Graphs -> 新的选项 新的图
    事务名: TSP 平均值
    buy 0.028
    search 0.074
    scan 0.125
    分析:TPS值不高,是因为给的压力不大,请求不密集。

  10、如何查看系统资源使用率? 资源监控 计数器
    右击Graphs -> 新的选项 新的图
    System Resources 系统资源
    Windows Resources Windows系统资源
    技巧:常看平均值,最大值作为参考
    1)CPU使用率:
      % Processor Time (Processor _Total):localhost
      最小 平均 最大 标准方差
      0% 13.304% 85.938% 10.948
      初步分析:平均值13.304% 符合要求 < 70%
      最大值85.938% 超过阈值 70%
    2)Memory的剩余情况:
      Available MBytes (Memory):localhost
      最小 平均 最大 标准方差
      1529 1548.352 1595 9.504
      初步分析:平均值 1548.352 MB
      阈值:可用物理内存不少于10%即可
        比如物理内存2G,目前可用1.512G,没有问题
    3)Disk 磁盘读写率

      核心硬件:
        CPU ----- Memory ----- Disk
        中央处理器 内存 磁盘
      用途:执行指令 进程、临时数据 文件、程序 calc.exe
      大小:最小 较大 最大 海量存储
      速度:最快 较快 最慢 5400转/分 7200 15000
        读 输入Input <-----
        写 输出Output <-----
          Disk I/O: 表示磁盘的输入/输出
        读 写
          Read Write
            查询 增加、删除、修改
      结论:由于磁盘读写速度远远慢于内存,如果处理一个事务需要频繁访问Disk,会严重影响速度、性能。
      建议需要监控Disk的读写率,如果过高,表明磁盘存在性能瓶颈,要么更换更快的磁盘,要么需要增加磁盘数量,要么需要优化程序算法。
      阈值:不超过 几MB/sec

        Disk Read Bytes/sec (PhysicalDisk _Total):localhost
        最小 平均 最大 标准方差
        0 4902.783 961513.686 58710.736
        大约4KB/sec
        Disk Write Bytes/sec (PhysicalDisk _Total):localhost
        最小 平均 最大 标准方差 1194.905 43067.941 988807.375 82801.825
      初步分析:磁盘目前不存在读写率过高,没有瓶颈。

      综上所述:当前测试各项指标都符合性能需求,测试通过。

      重要的测试策略:并发测试、在线综合场景测试

      练习:20VU在线综合场景
        5VU购票 10VU查询航班 5VU查看订票结果
        持续执行10分钟。提示:脚本可以复用

LoadRunner(5)的更多相关文章

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

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

  8. LoadRunner(7)

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

  9. LoadRunner(6)

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

随机推荐

  1. How To Use Rocketbots As A Dialogflow CRM

    Ever wished you had a CRM for Dialogflow? We did too, so we built one. This is a best practices arti ...

  2. LeetCode刷题1——只出现一次的数字

    一.题目要求 二.题目背景 位运算:或,异或,与,移位 三.解题思路 (1)要求算法时间复杂度是线性的,O(n),想到的是先将列表排序,排序后相同的数值两两之间前后相邻,进行偶数次循环,判断两两数值是 ...

  3. OpenCV_CS.测试

    1.在C#中使用OpenCV(使用OpenCVSharp) - jsxyhelu - 博客园.html(https://www.cnblogs.com/jsxyhelu/p/9669583.html) ...

  4. shell 入门学习

    目录 shell 入门学习 注释 执行与启动 变量 语法 调试 title: shell 入门学习 date: 2019/7/16 15:47:49 toc: true --- shell 入门学习 ...

  5. CREATE TABLE——数据定义语言 (Data Definition Language, DDL)

    Sql语句分为三大类: 数据定义语言,负责创建,修改,删除表,索引和视图等对象: 数据操作语言,负责数据库中数据的插入,查询,删除等操作: 数据控制语言,用来授予和撤销用户权限. 数据定义语言 (Da ...

  6. 小米Python后端面试题

    电话面 时长:30m 说一下对浏览器缓存的理解: 说一下MySQL优化: 说一下redis: 说一下从输入url到返回都发生了什么: 域名怎么解析的: 一面 1h 编程实现翻转单链表: MySQL中v ...

  7. java源码--Vector和Stack

    一.Vector简介 1.1.Vector概述 通过API中可以知道: 1)Vector是一个可变化长度的数组 2)Vector增加长度通过的是capacity和capacityIncrement这两 ...

  8. 散列查找的C实现

    概念 散列查找,类似与查英文字典的过程.如果我们要查找"zoo"(key)对应的释义(value),我们不会从第一页开始逐页查找(顺序查找),而是直接根据大致的推算(Hash函数) ...

  9. 第10章:深入浅出Ansible

    1.Ansible介绍 1).Ansible的优点 Ansible是一个简单的自动化引擎,可完成配置管理.引用部署.服务编排以及其他各种IT需求 Ansible是Python开发并实现的开源软件,其依 ...

  10. 移动端测试之APP安全测试

    现在APP测试已经是测试行业的一个重要分支,对APP测试技能和经验的要求也越来越高,看到一篇关于APP安全测试的总结,分享给需要的朋友.1.软件权限1)扣费风险:包括发送短信.拨打电话.连接网络等2) ...