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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTMLLinkValidater、Xenu等工具。LinkBotPro不支持中文,中文字符显示为乱码;HTMLLinkValidater只能测试以Html或者htm结尾的网页链接;Xenu无需安装,支持asp、do、jsp等结尾的网页,xenu测试链接包括内部链接和外部链接,在使用的时候应该注意,同时能够生成html格式的测试报告。如果系统用QTP进行自动化测试,也可以使用QTP的页面检查点检查链接。2、相关性检查:功能相关性:删除/增加一项会不会对其他项产生...
            12 12 864
            分享
          •   目前软件测试工程师一个月的薪资可达7千-1.5万元人民币不等,社保公积金带薪年假旅游补贴健身补贴等福利一应俱全,要求本科学历,相关专业,有过一定的工作经历即可。智联招聘的招聘信息应聘条件  而掌握更全面些的技能,如能看懂代码,或者可以编写脚本代码,月薪可高达2万甚至2万元以上,详情可上智联招聘搜索。高级的应聘条件  现在做软件测试基本会要求要懂测试理论基础,有较强的分析问题能力,以及良好的沟通能力。  遇到问题要会分析其出现的根因,并且与相应的开发人员做好沟通,待修复问题后再回归验证。  其次还要求懂得测试工具的使用,例如postman用来做接口测试,jmeter用来做性能测试,Selen...
            0 0 974
            分享
          • 每个开发都不想写文档。当你不想写接口文档时,可以通过安装插件在 IDEA 里实现自动同步,一边写代码一边同步接口文档给你的前端、测试同学。以下内容手把手教你怎么操作(这里仅面向使用 IDEA 编辑器、遵循 Java Spring 框架注释规范的同学):首先,你需要安装一个插件IDEA 插件市场里搜索 「Apifox Helper」,这是国内一个做 API 协作管理平台的厂商(Apifox)做的插件,可以非常方便自动生成接口文档并且同步到你的项目中。这个插件可以实现代码零入侵自动生产接口文档。IDEA 安装插件:打开 IDEA > Preferences(Settings) > Pl...
            0 0 1316
            分享
          •   在展开今天的内容之前,我们先来看一下,是不是任何一个测试都可以学习性能测试。  如果说需求、开发、DB、运维、测试是单一一门学科,那么性能就是综合学科,它包含了需求分析、DB、开发、测试、运维的所有学科。  所以说,学习性能测试,你前期需要懂的是需求分析、DB设计、程序开发、自动化测试、运维。  所以今天的内容是性能分析的一大重点,也是一大难点!  WebServer服务优化  对于Web服务性能优化的方向,一般是:  页面静态化:比如访问的页面,先进行静态化后提供访问,减少DB负担;  减少页面的Size:  减少尺寸、CSS合并、JS精简等;  客户端缓冲、样式等;  去掉无用请求与数...
            0 0 756
            分享
          • index:比较两列表元素(不考虑顺序,不考虑重复);调get型数据库接口,循环造数据(示例);连接操作mysql数据库;多进程执行pytest UI脚本(示例)。1、比较两列表元素(不考虑顺序,不考虑重复)def compareList(list1, list2):     """比较列表元素,不考虑顺序,不考虑重复"""     if sorted(set(list1)) == sorted(set(l...
            0 0 879
            分享
      • 51testing软件测试圈微信