• 0
  • 0
分享
  • 最详细的Jmeter并发测试介绍(下)——软件测试圈
  • 橙子 2024-08-29 11:37:20 字数 3066 阅读 374 收藏 0

  Jmeter逻辑控制器

  可以控制samplers(采样器)的执行顺序。控制器需和采样器一起使用,否则没有意义。在控制器下的所有采样器都会被当成一个整体,执行时也会一起被执行。Jmeter逻辑控制器可对元件的执行逻辑进行控制,除一次控制器外,还可以嵌套其他种类的逻辑控制器。

15-1.png

  分类:

  ·控制测试计划执行过程中节点的逻辑执行顺序,如Loop Controller(循环控制器)、If Controller(IF 控制器)

  · 对测试计划中的脚本进行分组,如Simple Controller(简单控制器)、事务控制器

  · 控制该控制器下元件的执行次数,如 Throughput Controller(吞吐量控制器)

15-2.png

  · Runtime(second):默认1,不填则默认0,当为0时表示不执行其节点下的元件

  · Runtime控制器用来控制执行时间长度,不控制运行次数

  · 性能测试中,当某特定业务需要执行特定时长时,可用Runtime控制器。单位是秒。

15-3.png

  · 在不同num时选择控制器下的对应数字位不同sampler

  · 一般用在模拟多线程同时操作不同请求的测试场景。

15-4.png

  · 事务控制器下的操作要么全部成功,要么失败。

15-5.png

  · Total Executions:按吞吐量值指定执行次数。吞吐量值的单位是”次“

  · Percent Executions:按百分比来指定执行次数。吞吐量单位是”%”

  · 吞吐量:可以是任意整数,若小于等于0,则一次也不执行

  · Per User:勾选则按虚拟用户数(线程数)来计算执行次数,若不勾选则按所有的虚拟用户数来计算。

  · Percent Executions执行次数=线程数*循环次数*吞吐量%,循环次数=线程组循环次数*循环控制器循环次数。

  线程组

  有关完整的JMeter用户线程组,请参见图4.2。

15-6.png

JMeter用户线程组

  中文模式下显示可能更直观,如图:

15-7.png

  运行结果,执行5次,每次间隔1秒,循环次数为1。

15-8.png

  HTTP请求默认值有何用?它用于新建http请求时“已经在HTTP Request Defaults元素中指定了此值,因此不必设置Server Name字段”。如下图:

15-9.png

  添加聚合报告,如图:

15-10.png

  聚合报告中,Average指的是平均响应时间,单位是毫秒,

  Throughput是指我们常说的吞吐量。

  登录接口实例

  新建“测试计划”,名称默认为“测试计划”。

15-11.png

  添加“线程组”,名称默认为“线程组”。

15-12.png

  添加“取样器”——“HTTP请求”。

15-13.png

  线程组名称填写“登录”,填写“协议”:http,填写“服务器名称或IP”:47.92.127.***,填写端口号“8180”,HTTP请求的方法选择“POST”,路径为IP接口名,如果是根目录,则直接填写“/”,如果不是则填写具体路径,比如“/api/doc/login2”,在参数中参考下图表格中添加参数。

15-14.png

15-15.png

  为线程组添加“监听器”——“查看结果树”。

15-16.png

  执行“启动”按钮后,可以查看取样器结果、请求和响应数据。

15-17.png

  线程组添加“监听器”——“用表格查看结果”,可以看到连接时间最大值1.065秒,均在3秒范围内(用户体验最佳)。

  将返回的响应数据比对接口文档,基本一致。

15-18.png

  {"code":200,
  "api":"/doc/login2",
  "data":
  {"api_os_code":"",
  "api_os_model":"",
  "api_version_code":null,
  "api_login_time":1606706241,
  "api_client_ip":"60.28.***.18",
  "oauth_token_secret":"520cb280f8ec2551343794ed9b1ba603",
  "validtime":1607311041,
  "oauth_token":"ff3390cec2ef56c012774276f916a0d0",
  "uid":"1008",
  "uuid":"ODT5698b49b09d03",
  "oid":"OF120105",
  "name":"zhangsan",
  "sex":1,
  "type":2,
  "mobile":"",
  "email":"zhangsan@test.com",
  "is_verified":"2",
  "avatar":"/data/upload/2020/0416/13/5e97ee6be07cd.jpg",
  "im_username":"oim0000001008",
  "im_nickname":"zhangsan",
  "status":1,
  "department":["\u90d1\u6d4b\u8bd5\u673a\u6784"],
  "comment":"\u5218\u533b\u751f\uff0c\u533b\u5b66\u535a\u58eb\uff0c10\u5e74\u7ecf\u9a8c","grade":"\u4e3b\u4efb\u533b\u5e08",
  "worktime":"\u5de5\u4f5c\u65f6\u95f4",
  "speciality":"\u4e13\u4e1a\u64c5\u957f\u547c\u5438",
  "careerList":[],
  "addressList":[{
  "title":"\u8054\u7cfb\u5730\u5740","content":"\u5730\u5740"}],
  "contactList":[{"title":"\u8054\u7cfb\u65b9\u5f0f","content":"\u8054\u7cfb\u4fe1\u606f"}],"certificationList":["\u8bc1\u4e66\u4fe1\u606f"],"prizeList":["\u83b7\u5956\u4fe1\u606f"],"statistics":[],"account":{"basic":null,"cards":false},"im_password":"3376718bd94336e4d3a01de0d6cdf79d","ftpconfig":{"ip":"47.92.127.107","port":"3224","user":"ftpuser","pass":"12345_abc&"}},
  "message":"Success"}

  创建用户接口

15-19.png

  但是响应请求返回401,判断应该是token问题。

  解决的办法:

  查看oauth_token和oauth_token_secret获取得不对,

  用正则表达式

  "oauth_token":"(.+?)"

  此外检查到api_type没有添加,

  解决的办法:

  api_type 取1

15-20.png

  从查看结果树中查看结果返回了绿色成功200。

  以上实现了1个用户的测试场景,下面5个用户同时:

  设置线程数=用户数,有两处需要设置:HTTP请求的线程组和HTTP请求默认值的线程组。

15-21.png

  添加到5,都可以成功。

15-22.png

  查看结果树:

15-23.png

   聚合报告:

15-24.png

  汇总报告:

15-25.png


作者:枫叶    

来源:http://www.51testing.com/html/54/n-7802254.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   及时同步信息  在工作中,出现问题时应及时跟进并向关键人员同步进展。但实际工作中,比较常见的是问题出现后,你跟进得可能很及时,但问题产生的原因、影响、进展情况等信息的同步往往比较滞后,通常是主管或项目干系人询问你,你才反馈出来。如果你存在这样的情况,那么本文就是为你准备的。  一个问题的生命周期大体包含问题出现、问题发现、问题分析,问题定位,问题解决或改进几个环节,发现问题时就应该同步,而不是问题解决或改进了再同步。对于QA来说,日常工作的信息同步有两大类场景,一类是线上问题的同步,一来是项目进展的同步。  关于线上问题的同步  发现线上问题时,应第一时间反馈给你的主管。大体上包含如下几块...
            0 0 284
            分享
          • 一、游戏测试游戏测试作为软件测试的一部分,它具备了软件测试所有的一切共同的特性:所以游戏测试则主要分为两部分组成一是传统的软件测试二游戏本身的测试(游戏可玩性测试)1、 游戏情节的测试,主要指游戏世界中的任务系统的组成2、 游戏世界的平衡测试,主要表现在经济平衡,能力平衡(包含技能,属性等等),3、 游戏文化的测试,比如整个游戏世界的风格,是中国文化主导,还是日韩风格等等4、 游戏世界的搭建,包含聊天功能,交易系统,组队等可以让玩家在游戏世界交互的平台。二、游戏测试方法测试的定义测试工作是,解决玩家所遇非正常问题的预测工作,同时也是不断调试平衡的一个长期观察任务。无论在什么时间段,功能实现、内...
            0 0 1541
            分享
          • 随着互联网技术的日益发展,测试开发工程师要达到“保障质量、提升效率”目标,提升效率更体现在方方面面。作为测试开发工程师,需要掌握基本开发技能,对代码能力也有一定的要求,这也是对项目多一道强有力的保障。在功能测试遇到BUG时,测试开发工程师需在编译器中调试代码,一边追根溯源,一边监测代码质量。而“追根溯源”这一步最重要的依据就是系统输出日志,日志也是开发人员定位问题的第一检查场所。因此,为提升这部分工作效率,小编想通过ELK搭建一套日志收集、存储、展示的工具,来解决目前存在的日志查看效率低下、缺少可视化界面等问题。1.什么是ELKELK由Elasticsearch、Logstash和Kibana...
            2 2 1370
            分享
          •   微软游戏部门宣布大规模裁员,共计 1900 人受到波及,其中主要来自微软于去年 10 月以 687 亿美元收购的动视暴雪。虽然有部分 ZeniMax 和 Xbox 部门的员工也受到影响,但裁员主要集中在暴雪内部。  微软 Xbox 游戏工作室负责人 Matt Booty 在给员工的备忘录中表示:“今天的裁员影响了暴雪内部多个团队,包括开发团队、共享服务部门和公司职能部门。作为战略调整的一部分,暴雪将终止其正在开发的生存游戏项目,并将部分参与该项目的员工转移到正在早期开发的几个具有前景的新项目中。”  虽然从未公布过具体名称,但这款 2022 年宣布的未命名的生存游戏仍颇受关注。一方面,它是...
            0 0 818
            分享
          • 2017年8月开始接手做持续集成平台的工作,该平台包含打包发布,每日构建,稳定测试  首先收集现状,源码管理混乱,底层打包空间共用,apk打包在本地,没有稳定性测试,专项测试。需求整理,需要做源码管理,分离底层共用的空间,打包统一使用服务器打包,增加自动化测试 下面说下我们的每日构建跟稳定性测试:1.客户端每日构建  1.1、单元测试  单元测试主要是由开发负责编写的,主要是因为开发对产品更加的了解,同时测试开发团队人太少了,要做的事情好多,优先做其他的。关于框架选择,最初想要使用的方案是robolectric + junit4 + mockito + dagger2,然后被项目经理及总监否定...
            2 2 2946
            分享
      • 51testing软件测试圈微信