zoukankan      html  css  js  c++  java
  • Loadrunner原理及基准测试

    性能测试基本概念

    1、并发和在线的区别:并发的压力是一个瞬时压力,一般针对同一类型的业务。在线的压力是一段时间内的压力情况。

    2、20用户并发的压力相当于200用户在线的压力。(1:10的比例)

    写测试计划时,可以参考,比如2000用户在线,一般是200个用户并发。(并发登录、并发查询、并发删除等)

    3、请求响应时间=客户端时间+网络时间+服务器时间

    4、可以通过内网测试规避掉网络的问题,客户端一般不会成为性能的瓶颈,所以大部分情况下,如果请求响应时间长,性能瓶颈出现在服务器端。

    建议:Web服务器和数据库服务器最好分开部署,可以分别监控

    事务响应时间:前提是在录制脚本时,插入事务点

    点击率:每秒钟用户向Web服务器提交的Http请求数。

    5、点击率:不是指鼠标点击的次数,比如:点击一个按钮,服务器返回一个页面,

    页面中包括了3个图片,则当前发起的点击数:

     1+3 = 4个Http请求。

     *.html  带有<img src="" />  每个图片都是一个资源

         都会重新发请求

    吞吐量:Throuthput 是总量,是累计时间的全部数据量

    吞吐率:在单位时间内的吞吐量

              吞吐量/测试时间  每秒

    TPS: Transaction Per Second   每秒事务数

    6、请求和响应:客户端向服务器发起请求(Request),服务器向客户端返回应答(响应 Response)。

    7、资源利用率:一般指系统中CPU、内存、磁盘、网络等主要资源的使用情况。(了解,有难度)

    案例:测试登录模块在8个用户的情况下系统的性能情况

    要求:用户数:8人   VU

          用户加载方式:每2秒加载1个VU

          运行时间:所有用户运行完脚本

          登录用户名:jojo

          密码:bean

    操作:

     打开Controller ->  默认手工场景模式 ->

       将Use the Percentage Mode to... 去掉打钩

       目的:用户数不使用百分比模式

     -> Browse按钮 选择脚本 login -> OK

      提示:如果脚本选错了,可以在后续主界面中修改

     -> 设置8个VU:  Run Mode: 选择Basic schedule

            将Quantity 改为 8

     -> 每2秒钟加载一个VU:  左下角窗口 Global Schedule

     -> Start vusers:  Start all Vusers simultaneously

                默认是 同时加载8个虚拟用户,需要更改

        双击Start vusers -> Edit Action

     -> 选择第2个单选钮,改为 1 Vusers every 00:00:02

                                               (HH:MM:SS)

     -> OK

     -> Schedule Graphics   计划预览图

       横坐标:Time 测试时间    纵坐标:Vusers 虚拟用户个数

       每隔2秒钟加载一个虚拟用户

       虚线表示 不确定

     -> 设置运行时间: -> Duration中

       Run until completion 运行直到结束 (脚本结束)  选择

       Run for __ days and ___ (HH:MM:SS)  固定时间多久

       Run indefinitely  不限定  无限制运行,测试者点击结束才结束

     -> 从Design 切换 到Run

           设计场景      运行场景

       正常情况,还需要设置Windows Resources  监控的系统资源

       (暂时不配置)

     -> 设置好场景,可以运行场景

     -> Start Scenario 按钮

    点击Vusers按钮,进一步查看VU运行状态:

      Done. Passed 1 iteration(s) attemped: 1successed.

      结束      经过 1次迭代尝试1次成功了

     观察场景运行结果图:

       Running Vusers  正在运行的虚拟用户

       Hit per Second  点击率

       Throughput      吞吐量

    点击正上方,右边倒数第3个图标按钮:

      查看 Hp LoadRunner Analysis 结果分析报告

       Reports  报告

       Graphs  图片

           Running Vusers     虚拟用户运行情况

           Hit per Second     点击率

           Throughput          吞吐量

           Transaction Summary   事务概要

           Average Transaction Response Time  平均事务响应时间

    二、性能测试策略

    1、基准测试:就是单用户测试  (今天的重点)

    注意:还是需要使用控制台,运行场景,自动搜集数据,通过Analysis进行结果分析。

    2、递增测试:每隔一定的时间(1s,5s,10s)逐步加载虚拟用户,逐步加压。

    用途:登录测试时,可以递增测试

    3、并发测试:多用户并发执行某一操作(同一时刻,LR精确到毫秒级别)。

    注意:并发测试是一种严格的测试,主要考察系统对瞬时较大压力的承受能力。

    4、综合场景测试:号称“能够最真实的模拟 实际生产环境”。

    5、综合场景的几个要素:多用户、多个脚本(至少3个)、在线执行一段时间(1个小时、50分钟等)

    注意:一般不需要设置并发点。 

          多用户一起运行,一定会有并发。

    6、综合场景测试过程中,所有用户 循环 执行相应的操作。

    7、比如:100用户在线综合场景

     100用户 共同对被测系统执行操作,其中30用户执行浏览首页操作,50用户执行查询订单操作,20用户执行提交订单操作。

     (要真实模拟人数比例)

    问题:为什么不模拟大量的登录操作?

       因为用户不可能一直在登录,模拟真实情况。

    以上操作,用户在循环执行。

    8、响应时间:业内一般有“358原则”,系统响应时间在3秒以内,则用户能够接受;响应时间在5秒以内,用户能够忍受;响应时间超过8秒,用户不能忍受。

    比如:一般需求指标,不超过3秒

    9、疲劳强度测试:在一定的强度(压力)下,对系统进行长时间的性能测试,一般为7*24小时、或24小时、12小时等。

    比如:银行系统,7*24*365 全天候不间断运行

    10、考察疲劳强度测试时,要考察其平均响应时间,以及各台服务器的各项资源情况。

    比如:集群  负载均衡、降低成本

    以上是比较常见的测试类型,经常出现在测试计划中。

    11、内存泄露检查:通过正常的性能测试,如果被测系统的内存曲线走势不正常,则关注其相应的各项重要的内存指标,通过对应走势来确定是否发生内存泄露。

    12、数据容量测试:使用大容量的数据添加到数据库中,观察被测系统是否能够正常运行。

    比如:向数据库中添加200G的数据量,再进行测试。甚至几个T

          大数据 Big Data  一般是T级、P级的数据量

     1024Byte = 1KB

     1024K = 1M

     1024M = 1G

     1024G = 1T

     1024T = 1P

     E  Z  Y

    三、基准测试:单用户测试

    1、测试脚本要加检查点。原因:LR报告中的验证只是针对网络层面上,服务器收到客户端发送的数据包,之后将应答包发回给客户端,但是LR不会验证应答包中数据是否正确。

    案例1:对下订单操作进行基准测试。先录制脚本,插入检查点。

     先打开AUT,熟悉整个业务流程;

     打开VuGen -> 新建 输入URL -> 先录制登录

     -> vuser_init -> 输入jojo和bean -> 开始事务 login

     -> 点击Login  ->  欢迎页面:

      添加检查点:

      选中“Welcome, jojo”  点击Insert text check 插入文本检查点

     -> 结束事务login

     -> Action模式 -> 点击Flights

     -> 选择城市:从Denver 到 London

     -> Continue -> Continue

     -> 开始事务buy  ->  Continue  -> 订单结果页面

      添加检查点:

      选中“Denver for London”  插入文本检查点

     -> 结束事务buy

     -> vuser_end模式 -> Sign Off -> 关闭浏览器 -> Stop

    脚本保存:day02uy  再回放

    web_reg_find("Text=Welcome, <b>jojo</b>,",

                    LAST);

    web_reg_find("Text=Denver  for London",

                    LAST);

      检查点函数:web_reg_find()     web_或lr_开头

      reg字样的函数:注册性函数

    web_submit_form()  提交表单的请求

    2、对于B/S系统,LR脚本中的LR函数都是以lr_或web_开头。

    (另外,还有C语言函数 strcmp)

    3、web_reg_find函数,带有reg字样的函数称为:注册性函数

    该类函数的特殊:必须写在相应请求之前。

    4、加过检查点的脚本如果运行(回放)正确,则说明该脚本正确。

    (学会调试脚本)

    需求:循环订3张票

     VuGen中的Run-time Settings按钮 (运行时设置)

       Run Logic 运行逻辑

         Iteration Count 迭代次数  默认1  改为3

    注意:循环的只是Action. 次数登录仅一次

           init和end脚本仅执行一次。

    四、注意:

    1、控制台中和VuGen中设置Run-time Settings当前区别和联系:

    1)如果从控制台直接打开脚本,则脚本中Run-time Settings设置会自动显示在控制台的Run-time Settings中。(带过来)

    2)如果控制台和脚本中同时设置了Run-time Settings,并且值不同,控制台的优先级高。

    2、Pacing值:每次迭代之间的时间间隔。

      迭代:脚本Action从第一行到最后一行。迭代一次

      Pacing值越大,对AUT的压力越小。

    3、Think time: 脚本中步骤之间的时间间隔。

                    (请求之间的间隔)

    案例:针对buy脚本,进行基准测试 (方法1:单用户循环5次)

    1)调试好脚本(在VuGen中运行成功)

    2)打开控制台,加载buy脚本

      首先设置人数: Run Mode  单选Basic schedule模式

                  Quantity改为1   单用户模式

    3)打开控制台Run-time Settings设置

      Run Logic 迭代次数 5  (优先使用)

    4)Pacing值 -- Start new Iteration    建议设置随机2~3秒

       As soon as the previous interation ends 只要前一次迭代结束

       关注第3项:

       At fixed intervals, every 60.000 sec

           random          every  2.000  to  3.000 sec

        fixed: 固定的    intervals 间隔

        random: 随机的

    5)Think time:

        Ignore think time  忽略思考时间    选择 为了简单化

        Replay think time 具体设置思考时间策略

     -> 点击OK

    继续其它设置:

     Start Vusers: Start all Vusers simulaneously 

                    就一个VU 默认

     Duration: Run until completion  运行直到结束  默认

     -> 切换到Run

    开始运行场景: Start Scenario

    归纳基准测试:

    方法1:单用户循环5次

    1)调试好脚本(加检查点,在VuGen中运行成功)

    2)打开控制台,设置Run-time Settings

    3)迭代次数:5

    4)Pacing值:随机2~3  (每次迭代之间的时间间隔)

    5)Think time: 忽略   (请求之间的时间间隔)

     忽略的原因:单用户对系统压力较小,忽略与否对结果影响不大。

    方法2:单用户持续运行1分钟

    1)调试好脚本(加检查点,在VuGen中运行成功)

    2)打开控制台,设置Run-time Settings

    3)Pacing值:随机2~3 

    4)Think time: 忽略

    5)Duration: 1分钟

    提示:配置好后,观察图表状态,有所变动,才修改成功。

    4、当Run-time Settings中迭代和VU部署设置(Duration)有冲突时,Duration的优先级较高。

    比如:Duration选择第二项,就以此为准

             Run for __ days and __ (HH:MM:SS)

          如果选择第一项:Run until completion 还是听Duration

          只是它放权了。

    Duration是一把手,让二把手看着办,此时Run-time Settings说的算。

    5、测试报告中的结果,应该测试三次,取中间值。

    (如:0.1秒  0.3秒  0.4秒  结果取0.3秒)

    以上就是基准测试。

  • 相关阅读:
    python加载csv数据
    Android项目依赖库管理方式简介
    Android PhotoView基本功能实现
    Android ListView的header footer设置visibility gone不起作用
    [干货][EMIT]千行代码实现代理式AOP+属性的自动装配
    Emit实现DataRow转化成强类型的T
    有关docker新版的icc、iptables的一个巨坑
    Mac神器Iterm2的Shell Integration的用法和注意事项
    生成ssl证书文件
    python3 module中__init__.py的需要注意的地方
  • 原文地址:https://www.cnblogs.com/Jackbk/p/12693918.html
Copyright © 2011-2022 走看看