玩转Apache JMeter—测试HTTP接口篇

简介: 玩转Apache JMeter—测试HTTP接口篇

1 什么是JMeter

官网:jmeter.apache.org

Apache JMeter是由Apache开源的、100% 纯 Java 的应用程序,旨在对程序性能进行测试 。它最初是为测试 Web 应用程序而设计的,但后来扩展到其他测试功能。

使用JMeter能够测试哪些功能

  • Web接口(包括HTTP、HTTPS)
  • SOAP / REST Web 服务
  • FTP
  • 通过 JDBC 的数据库
  • LDAP
  • 通过 JMS 的面向消息的中间件 (MOM)
  • 邮件 - SMTP(S)、POP3(S) 和 IMAP(S)
  • 本机命令或 shell 脚本
  • TCP
  • Java 对象

2 为什么需要JMeter

  • 每个测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。
  • 熟练使用Jmeter后, 能用Jmeter搞定的事情,你就不会使用LoadRunner了。
  • Jmeter 是一款使用Java开发的,主要用来做功能测试和性能测试(压力测试/负载测试). 而且用Jmeter 来测试 Restful API, 非常好用。

3 下载JMeter

下载地址:jmeter.apache.org/download_jm…

运行时需要环境:JDK8+

下载后的目录

网络异常,图片无法展示
|


主要使用到的目录及其作用

  • bin:启动文件目录
  • docs:相关文档

4 初步使用

总体使用流程

(1)新建测试计划

(2)启动被测试服务

(3)启动JMeter进行测试

(4)获取测试结果

4.1 使用JMeter的Hello World

4.1.1 编写被测试程序
package main
import (
   "fmt"
   "net/http"
)
// i 请求次数
var i int64
// RunHttp1 最简单的HTTP服务
func RunHttp1() {
   http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
      i += 1
      fmt.Println("请求次数:",i)
      w.Write([]byte("Hello Http!"))
   })
   http.ListenAndServe(":8080", nil)
}
func main() {
   RunHttp1()
}
复制代码
4.1.2 新建测试计划

(1)Windows下启动JMeter

bin>jmeter.bat
复制代码

(2)新建测试计划

网络异常,图片无法展示
|


(3)在测试计划下新建测试线程组

网络异常,图片无法展示
|


(4)在线程组下新建HTTP请求

网络异常,图片无法展示
|

请求HTTP接口时的配置

网络异常,图片无法展示
|


设置线程数和循环次数

网络异常,图片无法展示
|


4.1.3 启动JMeter进行测试

网络异常,图片无法展示
|


4.1.4 观察控制台输出

启动JMeter测试后我们观察控制台输出就能够清晰的发现JMeter的请求啦

4.2 使用测试报告

当然总看程序的控制台是很不专业的,因为我们这样只能用过控制台来观察,在实际的生产环境中是很难实现的,因此我们最好是有一个类似于测试报告的东西,当然JMeter也为我们准备了,他就是Listener,用于测试的监听和结果的显示,我们下面来实际演示下:

(1)新建Listener

网络异常,图片无法展示
|



(2)设置Lisenter名称

网络异常,图片无法展示
|


(3)启动测试,观察变化

网络异常,图片无法展示
|


4.3 性能和错误测试

(1)程序

package main
import (
  "fmt"
  "net/http"
  "time"
)
var i int64
// RunHttp1 最简单的HTTP服务
func RunHttp1() {
  http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
    i += 1
    fmt.Println("请求次数:", i)
    w.Write([]byte("Hello Http!"))
  })
  http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request) {
    time.Sleep(time.Second * 1)
    i += 1
    fmt.Println("请求次数:", i)
    w.Write([]byte("Hi Http!"))
  })
  http.HandleFunc("/err", func(w http.ResponseWriter, r *http.Request) {
    i += 1
    if i%10 == 0 {
      http.Error(w, "err", 500)
    } else {
      w.Write([]byte("Err Http!"))
    }
    fmt.Println("请求次数:", i)
  })
  http.ListenAndServe(":8080", nil)
}
func main() {
  RunHttp1()
}
复制代码

(2)测试结果:

网络异常,图片无法展示
|


4.4 切换中文

如果英文版的用起来不是那么的顺手,可以切换成中文哈

网络异常,图片无法展示
|


5 小总结

本文仅讲述了最常用也是最简单的JMeter测试HTTP接口的功能,我们只需要根据需求填写我们需要测试的HTTP接口信息即可,并且通过不同种类的Listener可以实时的获取测试报告,能够帮助我们更好的分析出我们的接口标准。

最后给大家一个小提示哈:无论是测试自己的开发机器还是服务器,尽量谨慎测试,不要一上来就1W个线程直接跑,可能会给机器带来不太好的影响,请优雅一点。

今天的分享就到这里咯~


相关文章
|
2月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
164 3
|
3月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
122 2
|
8天前
|
监控 测试技术 定位技术
HTTP代理IP响应速度测试方案设计与指标体系
随着数字化发展,网络安全、隐私保护及内容访问自由成为核心需求。HTTP代理因其技术优势成为热门选择。本文介绍HTTP代理IP响应速度测试方案,包括基础性能、稳定性、地理位置、实际应用、安全性测试及监控指标,推荐测试工具,并提供测试结果评估标准。
21 2
|
24天前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
68 3
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
52 1
|
3月前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
115 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
78 4
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
262 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
Java 测试技术 API
如何在 Apache JMeter 中集成 Elastic APM
如何在 Apache JMeter 中集成 Elastic APM
47 1

推荐镜像

更多