Java使用JMeter进行高并发测试

目录
  • 常见的压力测试工具:
  • 使用JMeter进行高并发测试
    • 1.下载并安装JMeter
    • 2.使用JMeter进行测试
    • 3.生成测试报告
    • 4.分析测试报告

软件的压力测试是一种保证软件质量的行为.在金融,电商等领域应用比较普遍.通俗的讲,压力测试即在一定的硬性条件下,模拟大批量用户对软件系统进行高负荷测试.需要注意的是,压力测试的目的不是为了让软件变得完美无瑕,而是通过压力测试,测试出软件的负荷极限,进而重新优化性能或在实际的应用环境中控制风险.

常见的压力测试工具:

1. LoadRunner:支持多种常用协议多且个别协议支持的版本比较高;可以设置灵活的负载压力测试方案,

可视化的图形界面可以监控丰富的资源;报告可以导出到Word、Excel以及HTML格式。

LoadRunner官网:https://saas.hpe.com/zh-cn/software/loadrunner

2.NeoLoad是Neotys出品的一种负载和性能测试工具,可真实地模拟用户活动并监视基础架构运行状态,从而消除所有Web和移动应用程序中的瓶颈。NeoLoad通过使用无脚本GUI和一系列自动化功能,可让测试设计速度提高5-10倍,并将维护的脚本维持在原始设计时间的10%,同时帮助用户使用持续集成系统自动进行测试。

NeoLoad支持WebSocket、HTTP1/ 2、GWT、HTML5、AngularJS、Oracle Forms等技术协议,能够监控包括操作系统,应用服务器,Web服务器,数据库和网络设备在内的各种IT基础设施,同时可以通过Neotys云平台发起外部压力。

官网链接:http://www.neotys.com/product/overview-neoload.html

3.JMeter:是开源测试工具,专门为运行和服务器负载测试而设计、100%的纯Java桌面运行程序。

原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。

它和HTTP和SQL(使用JDBC)的模块一起运行。它可以用来测试静止或活动资料库中的服务器运行情况,

可以用来模拟服务器或网络系统在重负载下的运行情况。它也提供了一个可替换的界面用来定制数据显示,

测试同步及测试的创建和执行。多平台支持,可在Linux,Windows,Mac上运行

官网链接:http://jmeter.apache.org/

使用JMeter进行高并发测试

1.下载并安装JMeter

下载JMeter 5.0,并将下载后的apache-jmeter-5.0.zip 解压到固定目录.

然后配置jmeter环境:

1.修改变量JMETER_HOME,值为实际压缩路径

2.修改Path变量,追加以下内容  %JMETER_HOME%\bin;

3.修改或添加CLASSPATH变量,添加以下内容:

%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;
%JMETER_HOME%\lib\jorphan.jar;

2.使用JMeter进行测试

打开命令提示符窗口,输入"jmeter"命令启动JMeter,或者打开bin下的jmeter.bat,如图所示:

设置jmeter语言为中文

添加测试计划

添加线程组

设置线程参数

线程数:要启动的线程数目

Ramp-Up Period(in seconds):线程启动时间间隔,如果为0,则代表同时启动对应线程数的线程,即并发数

循环次数:请求执行次数

添加http请求

设置http请求相关系数

添加"察看结果树"监听器

启动测试计划

查看测试结果

3.生成测试报告

jmeter -n -t D:\jmeter\jmeter-5.0\backups\测试计划.jmx -l d:\jmeter\result.jtl -e-o d:\result

 参数说明:

)n:非GUI模式执行JMeter;
)t: 脚本文件(.jmx文件)的路径;
)l: 指定生成测试结果的保存文件(.jtl格式),此文件必须不存在;
)e:测试结束后,生成测试报告;
)o:用于存放测试报告的路径;

4.分析测试报告

APDEX是一个国际通用标准,是用户对应用性能满意度的量化值.定义了2个用户满意度阈值,是综合并发测试中的所有线程响应时间,并结合满意度阈值量化出的具体数值.

Requests Summary(请求摘要)

表示执行成功和失败的请求数目的具体占比,OK表示执行成功,KO表示执行失败,JMeter主要以HTTP状态码是否为200来判断请求的成功与失败.

Statistics(综合统计图)

Statistics为综合性的请求响应时间及响应状态的统计图,包括了请求数,请求失败数,请求错误比例,平均响应时间,最小响应时间,最大响应时间等.

到此这篇关于Java使用JMeter进行高并发测试的文章就介绍到这了,更多相关Java JMeter高并发测试内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Jmeter测试必知的名词及环境搭建

    那么什么是性能测试,它与功能测试有什么样的区别? 性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试 简单的来说性能测试和功能测试最大的区别在于功能测试通常有明确的需求说明.而性能测试却需要顾及方方面面. 测试人员眼中的性能测试需要考虑全面的性能,包括用户.开发.管理员等各个视角的性能.做性能测试时除了要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等方方面面. 所以,做性能测试的测试工程师也

  • Jmeter如何获取jtl文件中所有的请求报文详解

    前言 大家都知道Jmeter运行测试可以产生jtl文件,里边包含了整个脚本的请求返回以及各种设置.近期遇到一个问题给大家分享下,就是作为性能测试组,从自动化测试组中拿到了一堆jtl文件,需要自己提取其中的请求报文. 用Jmeter打开jtl文件可以看到,请求报文是xml报文,显示如下图: 把jtl文件改为txt文件,打开看到如下图: 内容还是比较多的,有N个请求,应该怎么提取呢,有Java基础的朋友应该可以使用代码直接提取,本人没有去实现,应该难度不是很大.那对于测试比较熟悉的我们,怎么使用jm

  • 浅析Jmeter多用户token使用问题

    目录 背景 场景接口 登录接口 业务接口 登录接口处理 业务接口处理 写在最后 背景 在测试的时候,经常会有模拟用户登录,拿到用户 token 后再去请求接口的场景. 这个模拟用户登录就会分为两种,一种是单用户,另一种是多用户. 日常自动化测试的时候可能一个用户对应 n 个用例就可以满足大多数场景: 如果是在压力测试的场景下面,可能就会略显单调,也无法满足一些真实业务场景. 对于单用户的情况下,和我们常规的多接口有依赖的测试其实没什么太大的差别. 所以这里主要讲的是多用户产生多个 token 的

  • 利用Jmeter发送Java请求的实战记录

    前言 第一次遇到了需要用Jmeter发送Java请求的情况,也是网上查过很多资料才成功.做一个记录,做一个分享. Jmeter去发送Java请求,就是需要你有测试类的jar包放到Jmeter的lib/ext目录下,新建Java请求才可以.这个我们用到的测试类,开发给到以后我们需要自己去做一下调整,使用Eclipse工具来写. 实现过程 1.首先创建好工程,用到两个Jmeter包-ApacheJMeter_java.jar.ApacheJMeter_core.jar,直接从Jmeter复制项目里,

  • 浅谈JMeter engine启动原理

    目录 一.简介 二.配置简介 三.开始原理讲解 四.JMeter 引擎启动链路图 一.简介 本文主要介绍jmeter在控制台在点击执行之后底层所做的一些主要事情及内容,由于便于断点调试采用GUI方式进行操作 二.配置简介 为了调试方便,采用单线程,方式访问百度(若多线程可能断点会看晕,后面会讲到) 三.开始原理讲解 首先GUI下点击执行,在ActionRouter该类下执行performAction()方法,该类为执行后续流程的入口 ActionRouter是一个监听器,用于监听GUI事件流变化

  • JMeter中的后端监听器的实现

    目录 一.JMeter后端监听器介绍 二.github开源JMeter后端监听器 jmeter-backend-listener-kafka原理介绍 JMeter如何引入该jar 一.JMeter后端监听器介绍 说到JMeter后端监听器,必须要从源头BackendListener开始说,最后延伸到我们需要的BackendListenerClient,下面我们一一展开 BackendListener是啥? 源码简单介绍BackendListener是一种异步监听并获取到测试结果的实现类,也就是说

  • Jmeter并发执行Python 脚本的完整流程

    目录 1. 前言 2. Python 实现文件上传 2-1获取文件信息及切片数目 2-2切片及分段上传 2-3合并文件 2-4文件路径参数化 3. Jmeter 并发执行 4. 最后 本篇文章以文件上传为例,聊聊 Jmeter 并发执行 Python 脚本的完整流程 1. 前言 大家好,我是安果! 最近有小伙伴后台给我留言,说自己用 Django 写了一个大文件上传的 Api 接口,现在想本地检验一下接口并发的稳定性,问我有没有好的方案 本篇文章以文件上传为例,聊聊Jmeter 并发执行 Pyt

  • Java使用JMeter进行高并发测试

    目录 常见的压力测试工具: 使用JMeter进行高并发测试 1.下载并安装JMeter 2.使用JMeter进行测试 3.生成测试报告 4.分析测试报告 软件的压力测试是一种保证软件质量的行为.在金融,电商等领域应用比较普遍.通俗的讲,压力测试即在一定的硬性条件下,模拟大批量用户对软件系统进行高负荷测试.需要注意的是,压力测试的目的不是为了让软件变得完美无瑕,而是通过压力测试,测试出软件的负荷极限,进而重新优化性能或在实际的应用环境中控制风险. 常见的压力测试工具: 1. LoadRunner:

  • Java高并发测试框架JCStress详解

    前言 如果要研究高并发,一般会借助高并发工具来进行测试.JCStress(Java Concurrency Stress)它是OpenJDK中的一个高并发测试工具,它可以帮助我们研究在高并发场景下JVM,类库以及硬件等状况. JCStress学起来很简单,而且官方也提供了许多高并发场景下的测试用例,只要引入一个jar包,即可运行研究. 如何使用JCStress 此演示用maven工程,首先需要引入jar包,核心包是必须要的,样例包非必须要,此是为了演示其中的例子. <dependencies>

  • 使用JMeter进行接口高并发测试的实现

    目录 官网 启动 操作步骤 一般的网络接口测试,功能性测试postman较为好用,需要测试高并发的情况下,可以用Jmeter来进行测试,postman是串行,而Jmeter可以多线程并行测试. 官网 Apache JMeter - Apache JMeter™ 启动 进入到安装目录的bin目录下,然后双击jmeter.bat 操作步骤 1.新建Test Plan,起名为接口高并发测试 2. 选中测试计划,添加线程组 (右键-->添加-->Threads(Users)-->线程组) 3.设

  • Java使用代码模拟高并发操作的示例

    在java中,使用了synchronized关键字和Lock锁实现了资源的并发访问控制,在同一时间只允许唯一了线程进入临界区访问资源(读锁除外),这样子控制的主要目的是为了解决多个线程并发同一资源造成的数据不一致的问题.在另外一种场景下,一个资源有多个副本可供同时使用,比如打印机房有多个打印机.厕所有多个坑可供同时使用,这种情况下,Java提供了另外的并发访问控制--资源的多副本的并发访问控制,今天使用的Semaphore即是其中的一种. Java通过代码模拟高并发可以以最快的方式发现我们系统中

  • Java利用Redis实现高并发计数器的示例代码

    业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信.一个接口一分钟限制多少请求.一个接口一天限制调用多少次等等.使用Redis的Incr自增命令可以轻松实现以上需求.以一个接口一天限制调用次数为例: /** * 是否拒绝服务 * @return */ private boolean denialOfService(String userId){ long count=JedisUtil.setIncr(DateUtil.getDate()+"&"+user

  • 你会用Java代码模拟高并发吗

    Java通过代码模拟高并发可以以最快的方式发现我们系统中潜在的线程安全性问题,此处使用Semaphore(信号量)和 CountDownLatch(闭锁)搭配ExecutorService(线程池)来进行模拟,主要介绍如下: 1.Semaphore JDK 1.5之后会提供这个类 Semaphore是一种基于计数的信号量.它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞.Semaphore可以用来构建一些对象池,资源池之类的,比如

  • java的多线程高并发详解

    1.JMM数据原子操作 read(读取)∶从主内存读取数据 load(载入):将主内存读取到的数据写入工作内存 use(使用):从工作内存读取数据来计算 assign(赋值):将计算好的值重新赋值到工作内存中 store(存储):将工作内存数据写入主内存 write(写入):将store过去的变量值赋值给主内存中的变量 lock(锁定):将主内存变量加锁,标识为线程独占状态 unlock(解锁):将主内存变量解锁,解锁后其他线程可以锁定该变量 2.来看volatile关键字 (1)启动两个线程

  • jedispool连redis高并发卡死的问题

    java端在使用jedispool 连接redis的时候,在高并发的时候经常死锁,或报连接异常,JedisConnectionException,或者getResource 异常等各种问题 在使用jedispool 的时候一定要注意两点 1. 在获取 jedisPool和jedis的时候加上线程同步,保证不要创建过多的jedispool 和 jedis 2. 用完Jedis实例后需要返还给JedisPool 整理了一下redis工具类,通过大量测试和高并发测试的 package com.casp

  • Springboot实现高吞吐量异步处理详解(适用于高并发场景)

    技术要点 org.springframework.web.context.request.async.DeferredResult<T> 示例如下: 1.   新建Maven项目  async 2.   pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaL

  • php处理抢购类功能的高并发请求

    本文以抢购.秒杀为例.介绍如何在高并发状况下确保数据正确. 在高并发请求下容易参数两个问题 1.数据出错,导致产品超卖. 2.频繁操作数据库,导致性能下降. 测试环境 Windows7 apache2.4.9 php5.5.12 php框架 yii2.0 工具 apache bench (apache自带高并发请求工具). 通常处理方法 从控制器可以看出代码思路.先查询商品库存.如果库存大于0 ,则库存减少1,同时生产订单,录入抢购者数据. // 常规代码处理高并发 public functio

随机推荐