zoukankan      html  css  js  c++  java
  • LoadRunner(5)

    一、在线综合场景测试:号称能更真实模拟实际生产环境
        又称为:混合交易测试 (交易就是事务 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、先录制脚本:scriptday05目录下
        注意添加事务、检查点:
          核心业务通过事务表示,为不同事务起对应的事务名;
          后续场景运行后能够自动获取不同事务的平均事务响应时间、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:workscenarioday0510VU在线综合场景 *.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 esultday0510VU综合场景测试_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分钟。提示:脚本可以复用

  • 相关阅读:
    inode满处理
    power shell 脚本了解
    免密脚本带端口
    linux文件 特殊权限的使用
    linux批量配置ip
    编译安装常用包+阿里镜像源-常用资源-系统-下载-科莱软件下载-docker仓库包-安全圈-杏雨梨云-图形界面安装-docker私有双仓库-阿里源报错处理-centos7目录大小
    expect免互交 常用编辑文本
    vim 插件 -- taglist
    vim 插件 -- ctags
    vim 插件 -- omnicppcomplete
  • 原文地址:https://www.cnblogs.com/KalosOwen/p/8981942.html
Copyright © 2011-2022 走看看