• 0
  • 0
分享

  这个问题其实困扰了我很久,不是很理解很多团队选择JMeter进行接口测试。在最近的面试过程中,发现不论是中级岗,还是高级测试,90%的团队用的都是JMeter。它明明是个性能测试工具呀。不是说JMeter不能用来做接口测试,但是它的局限性明显了。这就好比汤匙明明是用来喝汤的,但是你就是要用来吃面,还美其名曰:可以同时搞定面和汤,不好吗?反正笔者是没想明白。

  作为一个当下普及性相当广的测试工具,JMeter有它自身的优势,总结下大约有以下几点:

  · 易用性:JMeter上手简单,大部分操作都有对应的元件帮你完成,并且是开源的,社区接受度高。有多少用JMeter的人逛过JMeter社区?

  · 灵活性:JMeter提供了BeanShell脚本能力,可以让使用者更好地编写个性化的脚本,满足不同场景需求;同时提供了比较高级的扩展能力,允许自己定义和扩展新的协议支持,比如扩展支持阿里提供的Dubbo协议的JMeter插件等

  · 支持多种协议:除了支持常见的HTTP协议之外,还可以直接通过JDBC Sampler连接数据库,把期望的测试结果存入数据库中,直接对测试结果进行验证。在编写测试脚本过程中,可以将不同的协议调用使用同一个脚本进行组合调用,写出比较复杂的测试用例。

  · 接口性能复用:这个是笔者最无法接受,但是被使用最广的理由。“写好接口测试后,加下并发数,就能测试性能了”,很多人如是说。如果性能脚本是这么容易搞定的,那我们分析业务模型、数据模型又是为了什么?撑的?

  JMeter工具应用在性能场景上,它是款优秀的工具,但是如果用于接口测试,它是存在很多无法解决的缺点。这些缺点也是笔者认为它不是一个优秀的接口测试工具。

  · 团队协作:在性能的场景下,脚本开发可以按场景划分成不同的JMX文件,并由多人分别负责。写完基本上是不会变的。而接口测试不同,由于接口测试涉及的范围更广,变更更加频繁,如果团队有2个以上的人员进行接口脚本开发,如何分工协作是第一个问题。

  已知的解决方案是:根据业务模块来划分,不同的人维护各自的脚本。但是JMeter又不支持一次运行多个JMX文件,需要额外的代码来处理(放到Shell脚本中是一个常见的方案)。

  · 脚本复用:由于JMX文件是相互独立,相互之间无法引用的。那个公用模块就无法解耦,比如登录,所有的脚本都需要写一次(至少是复制一次),如果有变动,所有的脚本都需要手动变更,维护成本巨高。

  已知的解决方案是把所有的场景放到一个JMX文件中去维护。那脚本的原子性就无从谈起。笔者见过一个JMX文件中,超过100个Http Sampler的。

  · 问题定位:在日常JMeter运行中,都会以非UI的方式进行,这种情况下是没有Results Tree给你查看返信息的。如何知道失败的原因是什么?只能以UI的形式再跑一次,但由于接口的幂等性或环境原因,往往无法复现,比较尴尬。虽然JMeter也提供了HTML的报告,但毕竟人家本来就是个性能工具,报告的内容多偏向与性能相关。

  现在有很多基于JMeter的接口自动化框架是结合了Jenkins+Git+JMeter+Ant或者Allure来完成的,本质上还是没有解决上面的几个问题。

  理清楚优缺点后,再回头看看为什么要选JMeter来作为接口测试。随着接口测试价值被越来越多的人接受,其对应的测试工具也越来越多,包含但不仅限于apipost、doclever、itest、MeterSphere等商用的,还有Pytest、Junit、HttpRunner等开源框架,完全可以取代JMeter的缺点,同时包含JMeter的优点。

  进一步想想,也许是JMeter声名在外,很多测试的同学能接触或者了解到的工具只有Jmeter,也不想花额外的成本去学习。就直接用了。从个人的脚本上看,没有问题,也能快速解决团队的需求,低成本开展接口自动化测试,完成团队KPI。但是从团队的角度上看,以JMeter为基础开展接口测试,存在很大的局限性。需要进行大量的二次封装,才能解决它自身的缺点(这也是为什么很接口测试工具底层也是选择JMeter的原因,利用它的优势,通过WEB封装来屏蔽它的缺点)。

  所以,如果你想把接口测试真正在团队中落地,慎用JMeter。

  至于选择其他工具或者架构的学习成本问题,从个人的角度上来,其实是有益的。代码能力是现在测试工程师必备的技能了,通过学习接口测试框架,可以有效地有效地锻炼自己的代码能力,比起其他的学习方式,它更能落地,也能更好地补充代码知识、解决实际问题。远比你写一套不实用的WEB工程来的有用。

  这里还隐藏了一个问题没有展开的,就是关于接口测试用例的要求(在确定的前两点中有提到),这个问题在另一篇文章中有详细的讨论,可移步阅读:你写的接口脚本合理么。


作者:CKL的思考    

来源:http://www.51testing.com/html/32/n-7795332.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 接上文,下面继续介绍Jmeter的测试元件。1.定时器         默认, JMeter线程发送出的每个请求是不间断的。我们建议你通过添加一个可用的定时器到你的线程组里来指定延迟时间。如果你不添加延时,JMeter可能在较短的时间内发送大量的请求致使你的服务器瘫痪。         定时器将导致JMeter在线程组里,在每个请求间,延迟一定时间。     &nbs...
            0 0 787
            分享
          •   功能  1、购物车界面的所有跳转链接都可以点的动。   ·点击店铺名可以跳转到店铺界面    · 点击商品可以跳转到商品界面    · 如果店铺的 table 区域中有"凑单"字样, 跳转到凑单界面    · 如果店铺有"领券"字样, 可以弹出领券界面  2、如果不选择任何商品就进行结算, 则显示"请选择要添加的商品"。  3、点击商品前的圆圈进行勾选后。    · 是否可以自动展示优惠后的价格  &n...
            0 0 5939
            分享
          •   作为一个测试,最尴尬的莫过于分给你的task,别人做交叉兼容测试的时候,在你负责的内容里找出了很多你没有测试出来的bug。  我也曾因为测试不全被组长在工作群里艾特。说实话,真的恨不得找个地方躲起来。  为了避免自己再次出现类似的情况,我开始写测试笔记。记录负责task中需要测试的内容,然后不断的重复研究测试,这种情况就基本没有了。  复杂的测试笔记,我写了有两年,后来慢慢发现好多东西都是相通的。于是,我整理了一个做测试的模板,每次新分配给我task时,我都按我自己的模板测试。  我做的工作是黑盒测试,基本属于纯黑盒。测试的有web端,android手机端和ios手机端,偶尔也会测试手机带...
            0 0 601
            分享
          •   与其他设备相比,iPhone 和其他苹果产品的利润相当可观,因为随着时间的推移,它们的残值保持得相当好。特别是 iPhone,过去一直是各种骗局的受害者,而现在我们似乎又遇到了一起持续了作案大约十年的案件,当局指控五人参与了一起欺诈骗局,他们将假冒的 iPhone 型号退还给苹果专卖店,然后换取新机。  这些人将假冒的 iPhone 和其他苹果产品带到苹果专卖店,声称它们有故障或出现了问题,并要求更换设备。苹果专卖店的人会保留假冒的苹果手机,然后换上原装设备。然后,原装产品就会在市场上高价出售。据熟悉此事的消息人士称,多年来,更换过程重复了 16000 次。  这种欺诈行为并不是突然出现的...
            0 0 309
            分享
          • 软件测试是对项目研发过程产物(文档、代码、程序等)进行审查,保障产品质量的过程。测试人员应具备从用户角度、开发角度和业务角度审查研发过程产物的能力,从而促使最终的产品达到用户、开发和业务三方要求。一、测试人员的价值是什么自动化测试是当前测试领域的一种重要技术,市面上有jmeter、postman、metersphere等诸多自动化测试工具。越来越多的测试人员将自动化测试作为自身价值的突破点,通过学习掌握更多的自动化测试工具彰显自身价值。那么,测试人员的价值真的就等于自动化测试的水平吗?显而易见,自动化测试是一种新兴的重要的测试技术,是软件测试的一个重要分支。它具有一定的技术门槛和客观的评价指标...
            1 1 916
            分享
      • 51testing软件测试圈微信