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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在第三方测试机构做测试多年,后来进入做产品的公司负责测试工作,才发现在第三方测试机构做测试是多么幸福的事。简要来说,产品形公司开发和测试往往在同一个部门,没有部门间沟通时的仪式感,往往比较随意。由此,测试会面临如下困局:1.需求飘忽不定;2.版本界限模糊3.留给测试的实际时间与计划时间往往差别巨大已上任意一方面事件的发生,会使得测试焦头烂额,何况往往是已上几点的叠加。常见的场景是:在软件临近发布的时候,部门领导整天对你瞪眼,嫌你拖慢了进度,嫌你测试不够充分,殊不知,开发给你交付软件比项目计划晚了好长时间,严重压缩了你的测试时间。经过实践,提出以下几方面的措施供大家参考:第一.明确需求。这个需求...
            0 1 2359
            分享
          •   科技媒体 techradar 昨日(7 月 22 日)发布博文,报道称索尼将放弃 5.5TB 的墨盒存储解决方案。  5.5TB 的墨盒存储解决方案简介  索尼公司于 2020 年发布第三代墨盒存储解决方案,单盒容量达到了 5.5TB,采用双面光盘,每面三层,可一次性写入记录,数据能保存 100 年不坏。  该墨盒存储解决方案的全称是光学档案盒(Optical Disc Archive Cartridges),其目标是长期保存重要数据,索尼承诺的时间是能够确保 100 年不变,稳定性非常好,对温度、湿度、水、电气、灰色及电磁环境等都不敏感。  简要附上三代墨盒存储解决方案信息如下:  · ...
            0 0 384
            分享
          • 一、测试组的任务职责和测试的基本概念:在软件系统开发完成后,必须进行测试和评价,以确定软件质量是否达到预定目标,这样才能保证软件系统安全可靠地运行。通过软件测试可以尽可能地和尽可能多地找出各种隐藏的错误和缺陷,及时进行修改和弥补。软件测试将直接影响到软件产品的最终质量。测试组的任务是用尽可能高的精度测试所开发的软件产品与规定需求的差距及其应用时的适用性。如果发现缺陷,则软件产品不能通过验收和使用,并退回给开发组。测试组的另一个任务是制定软件应用计划,负责计划在生产领域如何正确地使用程序及数据库。测试组的职责是确定测试过程、测试计划和组织测试过程及执行测试,但是不负责被测试系统的质量。测试组能够...
            12 13 2078
            分享
          •   Locust介绍  Locust是一款使用Python开发的开源性能测试工具,支持分布式,可在多台主机上对系统持续发送请求,与Jmeter、LoadRunner的等压测工具使用线程的方式模拟用户请求不同,Locust是使用协程的方式模拟用户请求,协程的上下文切换是由自己控制,当一个协程执行完成后会主动让出,让另一个协程开始执行,切换是在用户态完成的,而线程切换是受系统控制,是在用户态与内核态之间切换,所以协程上下文切换的代价远比线程切换的代价小的多,因此Locust可以达到更高数量级的并发。  Locust安装  需要先安装python3.6以上版本,然后再安装Locust。  pip&n...
            0 0 1550
            分享
          • 有部分数据直接插入数据库是不可以的,需要加密处理,例如密码都指定为加密后的数据字符串。今天我们来学习一下如何利用JMeter生成加密数据并写入MySQL数据库中。如何JMeter如何连接数据库,可以看我之前写的随笔,JMeter接口测试-JDBC测试。一:添加线程组,再添加JDBC Connection Configuration(右键测试计划-->配置元件-->JDBC Connection Configuration),并配置数据库连接信息二:导入mysql驱动包,下载好mysql的驱动包(mysql-connector-java-5.1.22-bin.jar),放到jmete...
            0 0 904
            分享
      • 51testing软件测试圈微信