1 什么是JMeter
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
运行时需要环境: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个线程直接跑,可能会给机器带来不太好的影响,请优雅一点。
今天的分享就到这里咯~