玩转Apache JMeter—测试HTTP接口篇

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

应一位粉丝的要求发此文章~

1 什么是JMeter

官网: https://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

下载地址: https://jmeter.apache.org/download_jmeter.cgi

运行时需要环境: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个线程直接跑,可能会给机器带来不太好的影响,请优雅一点。

今天的分享就到这里咯~

相关文章
|
24天前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
78 2
|
2月前
|
算法 API UED
基于Gin框架的HTTP接口限速实践
基于Gin框架的HTTP接口限速实践
31 0
|
2月前
|
JSON 搜索推荐 网络协议
玩转curl指令—测试简单的HTTP接口
玩转curl指令—测试简单的HTTP接口
59 0
|
2天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
8 3
|
1月前
|
JSON 前端开发 数据格式
糊涂工具类真是场景下请求http接口的案例
糊涂工具类真是场景下请求http接口的案例
21 0
|
1月前
|
SQL Apache 流计算
Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
【2月更文挑战第25天】Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
143 3
|
1月前
|
SQL 消息中间件 Kafka
Apache Hudi测试、运维操作万字总结
Apache Hudi测试、运维操作万字总结
76 1
|
1月前
|
DataWorks NoSQL MongoDB
DataWorks常见问题之如何集成离线数据
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
47 1
|
2月前
|
XML 自然语言处理 前端开发
NLP自学习平台提供了API接口调用服务,这些接口可以通过HTTP GET请求进行调用
【2月更文挑战第7天】NLP自学习平台提供了API接口调用服务,这些接口可以通过HTTP GET请求进行调用
18 2

热门文章

最新文章

推荐镜像

更多