• 0
  • 0
分享
  • 如何使用Jmeter对HTTP接口进行压力测试?——软件测试圈
  • 曼倩诙谐 2023-10-23 17:05:59 字数 2126 阅读 1341 收藏 0

  我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应该根据当前所处的情况,基于被测对象、时间及成本考虑,采用最合适的工具。闲话少谈,今天笔者要给大家分享的是用Jmeter来进行HTTP接口的压力测试。实际接口测试还可以使用Tsung、SoapUI等工具,但基于各方面考虑,最终采用了Jmeter。

  Jmeter相对于Loadrunner来说,更轻,易于安装,如果对过程数据收集不多、测试场景不复杂的情况下,可以优先考虑。笔者的使用的工具版本为Apache JMeter3.0,如果你们使用的是其它版本,可以与该版本界面有一定出入。

  下面就说说使用Jmeter进行HTTP接口压力测试的具体使用步骤:

  1、首先添加一线程组(即用户组:一个线程模拟一个用户行为,如果要模拟多个用户,则通过设置多线程来实现)

2-1.png

  2、因为是对HTTP接口进行压力测试,所以需要在线程组下添加一HTTP请求(通过鼠标右键->添加->Sampler->HTTP请求 完成)

2-2.png

  3、紧接着就是对HTTP请求进行设置了,主要设置服务器名称或IP,端口号,连接、响应时间,所采用的协议,请求类型,内容编码,路径,最后设置请求内容。

  注意,路径为URL除去如http://XXX.XX.X后的内容,如URL为http://www.51testing.com/?action-login,则服务器名称或IP应该填写http://www.51testing.com,端口默认80,路径应该填写“/?action-login”

2-3.png

  4、因为这里的请求内容使用的是json字符串,所以需要在头部进行声明,否则请求就要报错。所以需要给HTTP请求添加一信息头(通过鼠标右键->添加->配置元件->HTTP信息头管理器 完成)

2-4.png

  5、配置HTTP头信息,添加对应名称和值,这里添加“Content-Type”,值为“application/json;charset=utf-8”;如果头还需要添加其它信息,如id、token等,也应如此进行配置。

2-5.png

  6、到这一步看起来就可以了,但是我们执行时并不能看到执行结果。所以还应该为该请求添加一结果监听器“查看结果树”(通过鼠标右键->添加->监听器->查看结果树完成)

2-6.png

  按照上面步骤,可以依次添加“聚合报告”(总体线程执行结果统计),图形结果(总体线程执行结果统计图),“用表格察看结果”(每个线程执行的表格统计情况)等。

  PS(如果在进行非接口测试,如页面测试过程中发现错误,可能是少了COOKIE信息,所以可以为线程组添加一个Cookie头,可以通过鼠标右键->配置元件->HTTP Cookie管理器 完成)

  7、如果HTTP请求没有问题,那么我们要进行性能测试,那就需要设置一个断言(即Loadrunner中的检查点),即只要检查到指定的返回值(如返回结果包含字符“success”)则说明执行成功。添加断言通过右键请求->添加->断言->响应断言 完成。

2-7.png

  设置响应断言:

2-8.png

  OK,到了这里,我们的脚本工作完成的八九不离十了,但是我们做性能测试,为了使测试结果更加准确,同时避免单点限制等原因,还应该对请求的值进行参数化。

  8、参数化,这里主要将通过CSV文件进行的参数化。

  1)首先我们新建一个CSV文件,然后录入我们要参数化的信息。

  我们也可以新建一个记事本,然后输入参数化的内容信息,多个参数值间以英文逗号隔开,回车换行如:

  Username1,password1

  Username2,password2

  点击保存,然后把记事本的文件名改为test.csv,注意这里的csv是文件扩展名。

  2)在HTTP请求新建一个CSV Data Set Config元件(通过鼠标右键->添加->配置元件->CSV Data Set Config 完成)

  3)配置CSV Data Set Config元件,这里主要需要指明参数化取值文件路径(即前面我们新建的CSV文件),参数名(如上面CSV文件中主要有两个参数值,我们可以分别用username和passwd作为参数名,参数名类似程序中定义的变量名)

2-9.png

  4)对要参数化的值进行参数化。即用${参数名}来替换要参数化的值。

2-10.png

  9、通过上面步骤,就完成了参数化脚本的设置。现在要执行,那么首先来配置线程组,主要包括线程数,启用时间,循环次数。我们可以尝试设置不同的线程数,重复次数,来进行接口的压力测试了。

2-11.png

  10、最后我们就可以点击上面的绿色执行按钮来执行测试了。当然在执行过程中,为了后面更好的分析测试,可以借助其它工具(linux如nmon)对服务器的资源使用情况、网络情况,以及程序运行情况进行结果收集,最后对压力瓶颈进行准确的定位。

1-12.png


作者:传说三哥    

来源:http://www.51testing.com/html/05/n-4481205.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 这篇总结推迟了好久,一直想在工作一年之后写一篇总结,由于各种琐事以及感觉想法的不成熟,一推再推。这两天尤为强烈,不管怎样都应该把这一年多测试工作学到的知识和想法记录下来。软件测试行业在国内发展时间较短,每个公司对软件测试公司的定位和工作内容也不经相同。本人只在一个公司从事测试工作并时间不长,如有偏见欢迎指正,不胜感激。个人对功能、性能、自动化三个方面测试的认识功能测试的重点在哪儿?说一下本人对功能测试的理解,关于功能测试重点在对被测系统的了解上。至于测试方法:等价类划分、边界值、错误推测、因果图....等测试方法很容易理解。把这些方法应用到系统功能测试中也不难,关键是如何应用?这里又引出了一个...
            13 13 1679
            分享
          • 有些同学可能已经按照我们正常的流程在feiddler中设置好了https抓包,但死活抓不了。未设置的同学先按 https://ask.hellobi.com/blog/weiwei/5159 这篇文章进行设置,设置好后无法抓包请见如下解决步骤。 (1)首先,看看火狐浏览器的配置,是不是下方“为所有协议使用相同代理”的地方没有勾选上,如果是,请勾选上。有一部分同学做到这一步应该能解决无法抓https的问题。如果还不行,请继续往下看。一般这个时候,还不行,应该就是你的证书问题了,有些同学可能会问,我是按照正常流程导出并安装的证书,也会有问题?对的,就是这么奇怪。(2)接下来,请在下面这个...
            13 13 18946
            分享
          •   日本的一个城市正在为在家学习增添新意,在教室里使用头像机器人,让孩子们远程参与学校生活。此举正值日本努力应对因大流行病而加剧的学生旷课率飙升之际。日本《每日新闻》写道,日本西南部城市熊本的教育委员会正在发起这项倡议,以减少缺课儿童的焦虑,希望能把他们哄回教室。  这些机器人还能让那些因为COVID-19大流行结束后计划重返课堂的学生更轻松地过渡。  这些机器人只有三英尺多高,附带一个配有麦克风和摄像头的平板电脑(上图仅供参考)。它们还可以自行移动,学生可以用笔记本电脑控制机器人,在学校里自由走动。  与通过静态摄像头观看讲师授课不同,这些机器人意味着远程学生可以获得完整的学校体验,例如参与...
            0 0 680
            分享
          • 1. 前言在开始前大家可以先阅读:深入了解自动化测试:什么是自动化测试及其作用?大家好,这是一篇关于 Apifox 的接口自动化测试教程。相信你已经对 Apifox 有所了解:“集 API 文档、API 调试、API Mock、API 自动化测试,更先进的 API 设计/开发/测试工具”。笔者是后端开发,因此这篇教程关注的是 API 自动化测试,如果你也是后端开发,正苦于没有好的方式测试接口,对保证线上接口稳定性没有信心,那么这篇文章就是为你准备的,如果你学会了 Apifox 接口自动化测试,它几乎是一个会陪伴你整个职业生涯中的一件称心应手的兵器。接口测试可不是简...
            0 0 2773
            分享
          •   对于质量问题,直接以小故事的形式展开,下面是针对质量复盘的一些思考。  技术方案阶体现测试用例  对于业务项目来说,会存在测试资源、冒烟用例、精准测试、QA 新业务的业务回归、核心业务的 UI 自动化、高铁阶段的 QA 人工回归等。  这里简单讲讲这些词语,对于新的业务项目,一定会有测试资源,简单说就是 QA,新项目在经过 PRD、MRD、需求讨论会、Kick-off 之后,技术方案评审后,会经过测试用例评审,产出的结果就是用例指南,到时候 QA 会在用例平台指配给对应的开发。  敏捷开发思想下,业务需求跟车,而不是针对业务项目开车,每周一创建本周高铁,需求买票跟着上车。  上车之前针对你...
            0 0 1031
            分享
      • 51testing软件测试圈微信