zoukankan      html  css  js  c++  java
  • 性能测试基础---LR场景设置

    ·场景设置。
    性能测试场景依托于性能测试脚本,但是又独立于脚本。
    所谓场景(scenario),就是用来模拟多用户运行性能测试脚本的情形,是来源于我们对于业务场景的分析的。

    性能测试对于业务场景的分析,一般来说我们采取的策略是悲观的策略,多考虑一些相对极端的情况。
    然后对于业务场景的模拟,一般我们都会采用等价、幂等的思想。

    一般来说,性能测试场景分为两类:单一场景和混合场景。
    ·单一场景:在一个场景中,只跑一个脚本(一类业务)。
    多用于负载测试、压力测试、容量测试、并发测试、基准测试等。


    ·混合场景:在一个场景中,运行多个脚本(多类业务)。
    多用于负载测试、压力测试(主要)、容量测试、配置测试、并发测试(主要)等。


    ·在LR中,是通过Controller组件来实现场景的设计、运行等功能的。
    LR的Controller组件提供了两种类型的场景创建方式:
    ·目标场景:goal scenario:以特定的性能测试目标为驱动来实现的场景,该类场景中,我们只能设置性能目标,不能控制每一个虚拟用户的具体的行为(启动、持续和结束)。
    该类场景中,只提供了以下五种性能测试目标的驱动:
    ·Vusers:虚拟用户数。
    ·Transactions per second:简称TPS,每秒事务数。
    ·Hits per second:简称HPS,每秒点击数,在很多互联网公司,有一个指标叫QPS,其实本质上就是HPS。所谓的query和hit一般都是指协议级别的请求(包含资源请求)。
    ·Transaction response time:事务响应时间。
    ·Pages per Minute:每分钟的页面数。仅在HTML模式下才会生效。

    PS:一般来说,目标场景在实际工作中多用于验收测试。

    ·手工场景:mannual scenario、是以虚拟用户为驱动来实现的一种场景。也就意味着,我们可以控制每一个虚拟用户的数量、启动、持续和结束等行为。
    一般来说,因为性能测试需求本身的多样化,我们在实际工作中会更多的使用手工场景。
    手工场景,又分为用户组模式(Group mode)和百分比模式(PercentAge mode)。对于场景的实现的影响并不大。


    ·场景相关设置:
    ·Details:详情中主要有一个功能要关注,就是刷新功能。
    两种情况下,要通过刷新来实现脚本的刷新。
    ·script:即脚本本身的内容发生变更,在Vugen中保存之后,要在当前场景中起效,则要刷新脚本。
    ·运行时设置:如果Vugen中的运行时设置发生变更,希望在当前场景中保持一致,则需要刷新运行时设置。

    ·Service Level Agreement:简称SLA,服务级别评价。该功能最重要的是其所用到的分析思想。
    SLA选项可以在场景执行之前添加(Controller),也可以在场景运行之后添加(Analysis)。
    SLA是采取的分析思想是:因素+目标。

    ·Start Time:调度器。调度器一定是在点击启动场景之后才会生效。


    ·Schedule by:场景计划的模式,有两种:
    ·Scenario:场景计划,即全局计划,即场景中只有一个计划,所有虚拟用户都遵从一个计划。
    ·Group:组计划,即场景中的每一个用户组都有独立的计划,相互之间不影响。通过该模式可以实现更复杂的一些场景。

    PS:在Jmeter中,只有组计划模式。


    ·Run Mode:运行模式,有两种:
    ·real world:真实世界计划、允许我们模拟用户数的多个峰值变化情况。
    ·basic:基础计划、只允许我们模拟用户数的一个峰值变化情况。

    实际工作中,就算使用真实世界计划模式,我们也只会模拟用户数的一个峰值变化情况。
    通常采取的是悲观策略:即选择用户数的最大值,选择用户增长速度的最大值去设计一个场景。


    ·Schedule的构成:
    场景计划通常是由四个基本action构成:
    ·Initialize:初始化模块。
    ·Start Vusers:启动虚拟用户。
    ·Duration:持续时间。
    ·Stop Vusers:停止虚拟用户。

    LR是通过控制、调整虚拟用户的状态来实现控制虚拟用户。

    虚拟用户的状态有:
    ·Down:未启动
    ·Pending:准备中,是指LR开始向负载生成器发送脚本。
    ·Init:初始化,是指LR开始初始化虚拟用户、初始化脚本、并且运行脚本的运行时设置-Run
    Logic中的Init部分的脚本。
    ·Ready:就绪,即虚拟用户的初始化完成,即Init部分的脚本执行完毕。
    ·Run:运行,又叫迭代状态,表示虚拟用户在迭代执行Run Logic中的Run部分的脚本。
    ·Rendez:Rendezous,集合状态,表示虚拟用户正在集合点等待其它虚拟用户。
    PS:该状态和Run状态会自动切换,也属于运行状态。
    ·Passed:表示虚拟用户运行脚本完毕,并且最终的状态是成功的。
    ·Failed:表示虚拟用户运行脚本完毕,并且最终的状态是失败的。
    ·Error:表示虚拟用户的生命周期中,发生了错误。
    PS:绝大多数情况下都是成功或者错误。

    ·Gradual Exiting:准备退出,是指虚拟用户接收到停止信号之后,还没有开始执行End部分的脚本。
    这是因为在LR中,提供了三种退出机制:
    ·A:立即退出:虚拟用户接收到停止信号之后,马上停止当前工作,直接跳转执行end部分的脚本。

    ·B:当前action:虚拟用户接收到停止信号,会将当前正在运行的action(脚本中)执行完毕,再跳转执行End部分。

    ·C:当前迭代:是默认方式。虚拟用户接收到停止信号,会将当前正在运行的迭代执行完毕,再跳转执行End部分。

    ·Exiting:退出中,是指虚拟用户正在执行End部分的脚本。

    ·Stopped:停止,表示虚拟用户运行脚本完毕,并且最终的状态是成功的。
    和Passed状态是等价的。


    ·Schedule和Vuser status的对应关系如下:
    ·Initialize:初始化模块。
    Down-Pending-Init-Ready

    ·Start Vusers:启动虚拟用户。
    Ready-Run(Rendezvous)

    ·Duration:持续时间。
    根据选项的不同,走向不一样。
    ·Run until completion:表示虚拟用户按照运行时设置中的迭代次数进行迭代,迭代完毕之后自动结束。
    Run-exiting-Passed

    ·Run for:该选项是用来设置持续时间的。表示虚拟用户按照持续时间执行迭代,时间到达之后,退出。
    Run-Gradual Exiting-Exiting-Stopped

    PS:持续时间or迭代次数的设置,最终的目的都是为了得到一个稳定的测试数据(无关好坏)。

    ·Stop Vusers:停止虚拟用户。

  • 相关阅读:
    iframe
    # ? & 号在url中的的作用
    面向对象和面向过程
    dom
    DOM对象与jquery对象有什么不同
    绑定js
    leetcode — search-for-a-range
    leetcode — search-for-a-range
    leetcode — search-in-rotated-sorted-array
    leetcode — longest-valid-parentheses
  • 原文地址:https://www.cnblogs.com/wendy-0901/p/11724724.html
Copyright © 2011-2022 走看看