介绍

github https://github.com/apache/jmeter
推特 https://twitter.com/ApacheJMeter 用于实时接收一些官方消息

能够加载和性能测试许多不同的应用程序/服务器/协议类型:
Web - HTTP,HTTPS(Java,NodeJS,PHP,ASP.NET,...)
SOAP / REST Web服务
FTP
数据库通过JDBC
LDAP
面向消息的中间件(MOM)通过JMS
邮件 - SMTP(S),POP3(S)和IMAP(S)
本机命令或shell脚本
TCP
Java对象

关于压力负载工具

neoload 使用云,可以进行微服务架构,IOT https://www.neotys.com/neoload/overview

Gatling 一款开源的负载测试 https://gatling.io/

katalon studio 一款压力负载工具 云端 https://www.katalon.com/

个人推荐 katalon studio neoload 这两款软件 非常好用和devops工具流结合 可以对api, web , 移动端进行压力负载测试 针对katalon studio 也将会写一份教程

开源协议版本

https://www.apache.org/licenses/

Apache Software Foundation

一些教程

免费

YouTube
azure dev ops https://docs.microsoft.com/en-us/azure/devops/test/load-test/get-started-jmeter-test?view=azure-devops

收费

udemy https://www.udemy.com/topic/jmeter/

运行方式

使用 Azure DevOps 进行云端压力负载测试
使用 国内的腾讯云 阿里云进行云端负载测试
使用本地进行压力负载测试

腾讯云webtest 云端压力测试

https://cloud.tencent.com/product/lm
文档 https://cloud.tencent.com/document/product/653

将会以调用sdk为例
原则上 aws更好,不过需要付费
先进行本地的GUI压力负载测试

安装

➜  jmeter wget http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-5.1.1.zip

➜  jmeter unzip ./apache-jmeter-5.1.1.zip   

启动GUI界面

建议 不要使用GUI进行测试..
应当使用命令行启动

➜  apache-jmeter-5.1.1 ls
bin  docs  extras  lib  LICENSE  licenses  NOTICE  printable_docs  README.md
➜  apache-jmeter-5.1.1 cd ./bin
➜  bin ls
ApacheJMeter.jar          jmeter.bat         mirror-server.sh
BeanShellAssertion.bshrc  jmeter-n.cmd       reportgenerator.properties
BeanShellFunction.bshrc   jmeter-n-r.cmd     report-template
BeanShellListeners.bshrc  jmeter.properties  saveservice.properties
BeanShellSampler.bshrc    jmeter-server      shutdown.cmd
create-rmi-keystore.bat   jmeter-server.bat  shutdown.sh
create-rmi-keystore.sh    jmeter.sh          stoptest.cmd
examples                  jmeter-t.cmd       stoptest.sh
hc.parameters             jmeterw.cmd        system.properties
heapdump.cmd              krb5.conf          templates
heapdump.sh               log4j2.xml         threaddump.sh
jaas.conf                 mirror-server      upgrade.properties
jmeter                    mirror-server.cmd  user.properties
➜  bin pwd 
/home/ming/jmeter/apache-jmeter-5.1.1/bin
➜  bin sudo chmod ./jmeter.sh
[sudo] ming 的密码: 
➜  bin sudo chmod +x  ./jmeter.sh
[sudo] ming 的密码: 
➜  bin ls
ApacheJMeter.jar          jmeter.bat         mirror-server.sh
BeanShellAssertion.bshrc  jmeter-n.cmd       reportgenerator.properties
BeanShellFunction.bshrc   jmeter-n-r.cmd     report-template
BeanShellListeners.bshrc  jmeter.properties  saveservice.properties
BeanShellSampler.bshrc    jmeter-server      shutdown.cmd
create-rmi-keystore.bat   jmeter-server.bat  shutdown.sh
create-rmi-keystore.sh    jmeter.sh          stoptest.cmd
examples                  jmeter-t.cmd       stoptest.sh
hc.parameters             jmeterw.cmd        system.properties
heapdump.cmd              krb5.conf          templates
heapdump.sh               log4j2.xml         threaddump.sh
jaas.conf                 mirror-server      upgrade.properties
jmeter                    mirror-server.cmd  user.properties
➜  bin sudo ./jmeter.sh 
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================


这里需要注意,由于jmetter 运行在jvm堆上,所以需要增加jvm的堆的大小,,用于创建更多的对象,用于进行负载测试

2019-04-26-04-54-15----

2019-04-26-04-54-38----

2019-04-26-04-55-02----

构建web测试计划

添加线程组
创建五个用户,请求发送到jmetter上的2个页面,请求总数 (5个用户)x(1个请求)x(重复2次)= 10个HTTP请求

2019-04-26-06-03-55----

添加取样器中的HTTP请求

2019-04-26-06-04-24----

再次添加监听器,用于对结果进行展示

2019-04-26-06-05-33----

运行 结果如下

2019-04-26-06-08-23----