性能测试设计混合场景,一般有几种方式,分别是每个场景设置一个线程组,使用if控制器,使用吞吐量控制器。不同的方式实现机制不一样,哪种方式相比而言更好呢?下面做一比较。

下面以混合访问百度首页和必应首页作为测试场景,访问预设为1:3。

一、多个线程组

操作步骤:

1、Jmeter上创建一个测试计划;

2、计划下添加3个线程组,分别是对业务场景A、业务场景B、业务场景C;

3、假设3个场景混合并发的比例为4:4:2,则可以在3个线程组分别设置4、4、2,或者设置为40、40、20总并发量为100,只要按并发比例设置并发用户数即可

4、运行整个测试计划(计划下哪个线程不跑的时候可以先禁用),则所有接口会混合跑,实现接口混合并发压测;

结论:如果这两个事务的响应时间不一样,最终完成的业务数比例也会不一样。当前线程数是在假定两个业务的响应时间一样的情况下,所以这完全是理想状况。所以,这种方式控制并不完美

二、使用if控制器

添加一个线程组,在线程组添加两个if控制器,分别加入两个HTTP请求(百度首页和必应首页),通过调节if的条件实现按一定比例并发的需求。

首先在线程组加一个配置元件随机变量,取值范围为1-100,变量名设为num。

百度首页的if条件设置为${num}<=25,必应首页的if控制器条件设为${num}>25.

线程组的并发设为目标并发30个,并发时间3分钟,分两步并发。测试结果如下,并发请求数大致为1:3,符合需求:

三、吞吐量控制器

实现方式与if控制器大体一致,只是把if控制器换为吞吐量控制器,分别设置两个控制器的吞吐量百分比为25%和75%,也即1:3的并发比例。

注意:吞吐量控制器字段有两种:Total Executions:执行数量percent Executions:执行百分比(1-100)

测试结果可看出吞吐量控制器与if控制器的请求并发总数也基本一样,请求比例也符合1:3的原始设置

四、结论

纵观以上的测试结果,可看出使用if控制器和吞吐量控制器均能实现我们的预期目标,即合理的并发请求比例,而采用多个线程组的方式与我们目标有一定差距,原因在于各线程组的请求响应时间相差大,虽然同时并发,但实际并发比例难以控制。

若混合场景下各请求的响应时间差不多,多线程组的方式理论上也是能按预设比例并发的,只是实际测试的情况下,无法保证请求响应时间的大小,所以测试混合场景的时候,使用if控制器或者吞吐量控制器显然是更好的选择。

jmeter混合场景的多种实现方式比较的更多相关文章

  1. 性能测试之Jmeter中场景设置与启动方式

    Jmeter场景设置与启动方式 性能测试场景是用来模拟模拟真实用户操作的工作单元,所以场景设计一定要切合用户的操作逻辑,jmeter主要是通过线程组配合其他组件来一起完成场景的设置. 线程组设置 Jm ...

  2. Jmeter混合场景压力测试

    性能测试设计混合场景,一般有几种方式 分别是:1:每个场景设置一个线程组:2:使用if控制器:3:使用吞吐量控制器. 不同的方式实现机制不一样,个人觉得"使用吞吐量控制器"比较方便 ...

  3. Jmeter多业务混合场景如何设置各业务所占并发比例

    在进行多业务混合场景测试中,需要分配每个场景占比. 具体有两种方式: 1.多线程组方式: 2.逻辑控制器控制: 第一种: jmeter一个测试计划可以添加多个线程组,我们把不同的业务放在不同的线程组中 ...

  4. C#开发微信门户及应用(11)--微信菜单的多种表现方式介绍

    在前面一系列文章中,我们可以看到微信自定义菜单的重要性,可以说微信公众号账号中,菜单是用户的第一印象,我们要规划好这些菜单的内容,布局等信息.根据微信菜单的定义,我们可以看到,一般菜单主要分为两种,一 ...

  5. spring 文件模板下载多种实现方式

    针对于文件的下载,我们有很多种实现方式.业务场景是这样子的,要实现Excel文件的导入和导出功能,问题对于java的POI操作没有问题,所以实现文件的下载就相对简单,只需要从数据库取出相关的数据,针对 ...

  6. SVN服务的模式和多种访问方式 多种访问原理图解与优缺点

    SVN企业应用场景 SVN任是当前企业的主流.git正在发展,未来会成为主流.如果大家精力足够,建议同时掌握. 1.4运维人员掌握版本管理 对于版本管理系统,运维人员需要掌握的技术点: 1.安装.部署 ...

  7. JMeter常用的4种参数化方式-操作解析

    目录结构 一.JMeter参数化简介 1.JMeter参数化的概念 2.JMeter参数化方式之使用场景对比 二.JMeter参数化的4种主要方式-操作演练 1.User Parameters(用户参 ...

  8. 【NS2】有线和无线混合场景 (转载)

    1. 创建简单的有线-无线混合场景 上一节建立的无线仿真可以支持多跳adhoc网络或wirelesslan.但是,我们可能需要对经过有线网络连接的多个无线网络进行仿真,或者说我们需要对有线-无线混合网 ...

  9. C#高性能TCP服务的多种实现方式

    哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...

随机推荐

  1. JS动画三剑客——setTimeout、setInterval、requestAnimationFrame

    一.前言 前端实现动画效果主要有以下几种方法:CSS3中的transition 和 animation ,Javascript 中可以通过定时器 setTimeout.setinterval,HTML ...

  2. CentOS 的命令链接符“;”

    ";" 用于在一行中输入多个命令,执行顺序=输入顺序. For instance: $ ls -a;cd Music

  3. AspNetCore&Coding持续集成

    对于现有很多持续集成工具来讲,功能越来越高级,使用了 Coding 有大半年时间,越发觉好用,特别是没钱续费服务器时,找到了新的羊毛. 一.众多持续集成工具 现在可用的持续集成工具繁多,各大云服务商都 ...

  4. 使用flex实现5种常用布局

    Sticky Footer 经典的上-中-下布局. 当页面内容高度小于可视区域高度时,footer 吸附在底部:当页面内容高度大于可视区域高度时,footer 被撑开排在 content 下方 dem ...

  5. SimpleImputer 中fit和transform方法的简介

    sklearn.impute.SimpleImputer 中fit和transform方法的简介 SimpleImputer 简介 通过SimpleImputer ,可以将现实数据中缺失的值通过同一列 ...

  6. TB6560电机驱动器参数设置

    TB6560电机驱动器参数设置 最近接触了一些步进电机的开发,整理了一些参数设置的经验,希望能帮助到有需要的人儿~ 步进电机主要按一定的给电规律,给对应的绕组响应的电信号,电机将按一定的方向运行,而且 ...

  7. flask 源码专题(九):flask扩展点

    1. 信号(源码) 信号,是在flask框架中为我们预留的钩子,让我们可以进行一些自定义操作. pip3 install blinker 2. 根据flask项目的请求流程来进行设置扩展点 中间件 # ...

  8. 理解js中的原型,原型对象,原型链

    目录 理解原型 理解原型对象 实例属性与原型属性的关系 更简单的原型语法 原型的动态性 原型链 理解原型 我们创建的每一个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象, ...

  9. static关键字有何魔法?竟让Spring Boot搞出那么多静态内部类

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  10. 基于python的自动化测试框架搭建

    滴~ 今日打卡!   好多天没来打卡了.博主最近一直在把碎片化知识转化为知识体系的过程中挣扎.Python语言.selenium.unittest框架.HTMLTestRunner框架都有所了解,也写 ...