由于接入业务方及日调用量的增加,现需对几个接口进行压力测试,以满足线上要求.
由于Jmeter是开源的,而且基本上可以完成公司正常的测试要求,所以Jmeter这一款软件才是我认为的最佳的压力测试工具.
首先是jmeter软件的安装,jmeter是基于java的,所以首先本地需要有Java环境。
具体java环境的安装与环境变量配置可见: https://blog.csdn.net/Beat_Boxer/article/details/85236393
验证java环境是否安装成功:
☆☆☆☆java -version 和 javac 都成功方可成功
☆☆☆☆温馨提示:jmeter4.0需要jdk8及以上java版本
下面就是Jmeter的下载 下载地址 http://jmeter.apache.org/download_jmeter.cgi
下载安装jmeter后,进入bin目录下,运行jmeter.bat即可进入jmeter客户端
如果想在cmd中直接运行jmeter,可以配置Jmeter环境变量
参照:https://blog.csdn.net/Beat_Boxer/article/details/86498847,jmeter环境变量的配置
如果需要汉化版,可以参照该文档:https://blog.csdn.net/Beat_Boxer/article/details/86504864
Jmeter里面需要了解结果概念
1、Test plan 测试计划,所有的测试工作都要基于测试计划来进行,一个测试项目中只能有一个的测试计划,测试计划在整个项目中充当的是一个全局设置的作用;
2、
①Thread 线程组,代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。可以在“测试计划->添加->线程组”来建立它,
在线程组面板里有几个输入栏:
依次是:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有100个线程,Ramp-Up = 1秒,那么线程的启动时间间隔为1/100=0.01秒,这样的好处是:一开始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。
线程组为很多线程的一个集合,在项目中可以有多个的线程组,线程组主要是建立一组线程集中对一个请求进行测试,比如说你想测试T1和T2两个接口,这时候你就可以通过创建两个线程组来完成这个任务
②Setup thread group
初始化的线程,每个线程只执行一次,用于执行预测试操作 ;Setup thread group 执行测试前 进行定期线程组执行活动。
线程内显示内容与线程组一致。
③Teardown Thread group
做些清理工作,每个线程只执行一次,用于执行测试后动作。 线程内容与线程组一致。
Teardown Thread group执行测试结束后执行定期的线程组(类似Loadrunner的测试完毕后对应的清除信息的脚本)
3、线程组创建完成下面就来介绍一下最核心的部分,创建请求部分;
一般都是在线程组==》添加==>Sampler(取样器)==》添加对应的请求(例如:Java请求,http接口请求等)
取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、Java、ftp请求等等。
4.选择对应的Java请求或者http接口进行配置之后然后进行压测
点击运行也不能有结果显示,需要添加监听器Listener
5.添加监听器Listener:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等。
常见的监听器:
聚合报告、用表格查看结果、查看结果树、图形结果
聚合报告:我们能够从聚合报告中获取相关的测试结果,这个也是我们分析结果的主要依据,这个显示的是同一请求
聚合报告关键词解释:
Label :各个模拟测试的名称
Samples :各个测试的样本总数
Average :每个请求的平均响应时间
Median :中值,即50%请求的平均响应时间
90%Line :90%请求的响应时间
Min :最小响应时间 ,Max :最大的响应时间
Error% :错误响应的概率。即无法响应的概率。
ThroughPut :吞吐量 -- 默认情况下表示每秒完成的请求数(Request per Second)。
Received KB/Sec :每秒从服务器端接收到的数据量。
查看结果树:这个跟表格查看结果有点相似,但是比起根据有详细的发送请求的信息,以及返回的结果可以查看
图形结果:
6.Jmeter的分布式测试(优缺点)此部分借鉴https://blog.csdn.net/chenleixing/article/details/43418185
下面是分布式测试的使用方法,即使用一台机器控制多台机器给目标机器产生压力。由于Linux和Windows上的方法有些不一样,这里说下Linux下是怎么来配置的。
首先总控的机器我们叫master,产生压力的肉鸡我们叫JmeterServer,待我们测试的系统我们叫Target.
第一步:启动JmeterServer。我们可以找到Jmeter/bin 目录下的jmeter-server这个脚本,运行即可,当然如果你需要调整这个测试负载产生服务器的内存等性能参数的话,我们修改这个脚本jmeter中的内存参数。
第二步 : 修改Master机器上jmeter/bin目录下的jmeter.properties文件,修改remote_hosts=localhost:1099,localhost:2010这个为你自己的JmeterServer的实际IP,如果有多台可以用逗号分开。
第三步 : 启动master jmeter,运行测试脚本的时候选:运行 --> 远程运行 --> 选择IP 或者 运行所有远程。JmeterServer就会运行Master机器上设定的运行脚本了。