并发测试工具jmeter了解下?

并发测试工具jmeter了解下?并发测试工具jmeter了解下?前言随着互联网规模的不断发展壮大,系统接口的并发要求也是越来越高了,虽然现在已经有了很多技术可以提升系统的并发性能,但是测试又遇到了新的问题,我们该如何模拟线上环境

大家好,又见面了,我是你们的朋友全栈君。

并发测试工具jmeter了解下?

前言

随着互联网规模的不断发展壮大,系统接口的并发要求也是越来越高了,虽然现在已经有了很多技术可以提升系统的并发性能,但是测试又遇到了新的问题,我们该如何模拟线上环境的并发量呢?

今天我们推荐的这款测试利器,就可以很好地解决你的问题,一起来看看吧。

Jmeter

jmeter是什么

这一款工具是Apache开源基金会下的一个开源项目,是由纯java开发的,在测试圈比较知名,对于做过测试工作的小伙伴,这个工具应该不陌生。

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

百度百科的解释:

Apache JMeterApache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

Apache jmeter 可以用于对静态的和动态的资源(文件,ServletPerl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

简单来说,他就是一款压测工具,可以对我们的接口进行压力测试,找到接口高并发场景下可能存在的系统缺陷。

它能干什么

根据官网给出的说明,它可以完成以下工作:

  • 能够加载和性能测试许多不同的应用程序/服务器/协议类型:
    • 网络协议-HTTPHTTPSJavaNodeJSPHPASP.NET等)
    • SOAP/REST 网络服务
    • FTP服务
    • 通过JDBC连接的数据库
    • LDAP
    • 通过JMS的面向消息的中间件(MOM
    • 邮件协议-SMTP(S)POP3(S)IMAP(S)
    • 本机命令或Shell脚本
    • TCP协议
    • Java对象
  • 功能齐全的Test IDE,可进行快速的Test Plan记录(来自浏览器或本机应用程序),构建和调试
  • CLI 模式(命令行模式(以前称为非 GUI)/无头模式)从任何 Java 兼容操作系统(LinuxWindowsMac OSX 等)加载测试
  • 完整且可随时呈现的动态 HTML 报告
  • 通过从大多数流行的响应格式,HTML,JSON, XML任何文本格式中提取数据的能力,轻松实现关联
  • 100%基于 Java,具有完全的可移植性 。
  • 完整的多线程框架允许通过多个线程进行并发采样,并通过单独的线程组同时对不同的函数进行采样。
  • 缓存和脱机分析/重放测试结果。
  • 高度可扩展的核心:
    • 可插拔采样器允许无限的测试功能。
    • 可脚本化的采样器(与GroovyBeanShellJSR223兼容的语言)
    • 可以使用可插入计时器选择几个负载统计信息。
    • 数据分析和可视化插件可实现出色的可扩展性和个性化。
    • 函数可用于为测试提供动态输入或提供数据操作。
    • 通过针对MavenGradleJenkins的第三方开源库,轻松进行持续集成。

从上面的说明来看,Jmeter支持的协议很丰富,同时具备了极强的可扩展性和可移植性,因为是基于java开发的,所以它本身也是跨平台的,同时还可以集成到mavenGradleJenkins中,可以实现自动化测试,这一点就很强了。

开箱

接下来,我们就看下如何使用jmeter来完成我们的接口测试。

下载

首先,我们先去官网下载最新版本jmeter

https://jmeter.apache.org/download_jmeter.cgi

最新版本是5.4.1,运行环境基于jdk1.8+

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

windows环境下选择zip那个版本,不过也不影响,都是java开发的,解压工具能解压就行。

解压运行

直接解压,然后进入bin目录,然后运行jmeter.bat脚本就可以了,当然前提条件是你要先配置本地的JDK环境,不会的小伙伴自行百度。

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

打开之后,它是这样的

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

不习惯英文界面的小伙伴可以修改成中文

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

我不喜欢深色主题,所以我把它改成浅色了,想改的小伙伴自己改:

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

开始测试

在开始测试之前,我们先要启动一个接口服务,我本地启动了一个springboot项目,就是上周的那个项目。单个springboot,内置的Tomcat是支持10000并发的,这一点还是很强的。

打开之后,默认已经创建了一个测试计划,我们可以直接用,修改相应配置即可

配置测试计划

设置名称和注释,这里的配置主要是方便你管理测试计划,你不设置也不影响

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

创建线程组

选中测试计划,右键选择添加->线程->线程组

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

设置线程组配置

这里设置的就是我们的并发量,包括线程数、单个线程循环次数、延迟时间、持续时间等

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

添加测试请求

选中线程组,右键选择添加->取样器->HTTP请求。这里需要注意的是添加的时候必须在线程组下创建,否则是没法测试的,因为所有的测试请求都是通过线程组发起的。

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

配置测试请求

这里就是配置我们接口的请求参数,包括协议、接口地址、请求方式、请求参数等

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

这时候就可以选中测试计划开始测试了,运行之前会提示我们保存测试计划:

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

保存完成后,测试自动运行,这时候测试虽然启动了,但是是不会显示测试报告的,所以我们还需要增加报告。

增加报告

同样是选中线程组,右键选择添加->监听器->选择需要的报告。这里我添加了两个报告,一个是汇总图,一个是汇总报告,你也可以根据自己的需要选择。

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

然后再次运行,我们会发现汇总图和汇总报告这里就有结果了:

汇总报告

报告里面包含了接口响应时间的统计,包括平均响应时间、最大响应时间、异常率、系统吞吐量、发送/接受数据的统计等,还是比较详细的。

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

汇总图

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

图表是支持配置的,你可以根据自己的需要进行设置,选择图形左上角的设置菜单即可

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

图表和数据都是可以保存的

其他图表

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

增加断言

写过单元测试的小伙伴肯定听过或者写过断言这个东西,断言简单来说就是我们在测试程序的时候,需要对某一段代码或方法运行结果进行比对,以判断程序业务逻辑是否正常,也就是做输入输出对比的。

比如我们将2传入一个方法,根据我们的预期,应该是5,如果处理之后结果与预期一致则断言通过,否则不通过,单元测试的断言这里就不说了,有兴趣的小伙伴自己去看看。

jmeter添加断言很简单,选中线程组,右键选择添加->断言->选择你需要的断言方式。这里我们选择json断言

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

简单配置

Assert josn path exists设置json中你也校验的key,如果你只校验key存在即可,那可以去掉Additionally assert value的勾,这个配置勾选的话,会校验上面配置的key的值,而且你需要在expected value设置预期的值。

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

这时候直接运行的话,是看不到断言结果的,我们还需要增加断言报告:

直接在监听器下选择断言结果就可以了。

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

然后再次运行,断言结果这里就有数据了,断言如果通过是没有数据显示的:

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

但如果你指定的key不存在,就会有错误提示了,提示结果中不存在这个字段:

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

如果你的返回值与断言预期结果不一致,则会提示,结果不匹配:

<span role="heading" aria-level="2">并发测试工具jmeter了解下?

补充

jmeter的测试计划是支持多线程组的,也就是说你的一个测试计划可以配置多个接口,同时测试。

总结

jmeter作为一款流行的压测工具,从上手体验来看,还是很不错的,操作没有特别复杂,只需要简单配置就可以完成系统压测,这也可能是它比较流行的原因。目前,很多公司,系统上线前都是用jmeter进行压测的,这也从侧面体现了它稳定、强大的压测功能。

今天的内容依然是干货满满,让你直接可以开箱即用,而且也满足了你绝大多数的测试场景,有接口压测需要的小伙伴可以用起来了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154996.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【uboot】imx6ull uboot移植LAN8720A网卡驱动

    【uboot】imx6ull uboot移植LAN8720A网卡驱动文章目录相关文章1.前言2.IMX6ULLEthernetLAN8720A硬件连接3.支持LAN8720A修改步骤4.验证测试问题1:如何确定LAN8720A网卡PHYAD地址?问题2:如何确定devicetree中对resetgpio的定义?问题3:LAN8720A网卡nINTSEL是如何配置?问题4:IMX6ULLETH是如何被初始化的?相关文章1.《【uboot】imx6ulluboot2020.04源码下载和编译环境配置》2.《【Ethernet】以太网卡LAN8720

    2022年6月29日
    45
  • Python自动化测试面试题及答案(持续更新中)

    1、自动化代码中,用到了哪些设计模式?单例设计模式工厂模式PO设计模式数据驱动模式面向接口编程设计模式2、什么是断言(Assert)?断言Assert用于在代码中验证实际结果是不是符合预期结果,如果测试用例执行失败会抛出异常并提供断言日志3、什么是web自动化测试Web自动化测试是从UI(用户界面)层面进行的自动化测试测试人员通过编程自动化程序(测试用例脚本)来打开浏览器测试网站的业务逻辑4、什么是seleniumSelenium是一个开源的web自动化测试框架,支持

    2022年4月8日
    127
  • 吞噬星空是鸿蒙三部曲吗,星辰变吞噬星空盘龙三部有什么关系

    吞噬星空是鸿蒙三部曲吗,星辰变吞噬星空盘龙三部有什么关系三部小说之间的关系就说这三部小说都属于鸿蒙三部曲,其中的各个宇宙之间都有一定的联系。《星辰变》是在红袖网上连载的奇幻修真小说,作者是我吃西红柿。小说以一个庞大的修真世界为背景,讲述了主角秦羽不甘于没落、努力修炼跨越先天不足的劣势,一步步踏上强者之路,最终成为鸿蒙掌控者的故事。《吞噬星空》,是一部东方科幻类型的网络小说,小说签约授权首发连载于红袖网。小说已经完本,作者是我吃西红柿。小说主要讲述了地球…

    2022年6月16日
    119
  • Burp Suite安装配置详解(附Java 环境安装)

    Burp Suite安装配置详解(附Java 环境安装)BurpSuite安装配置详解1.Java安装与环境配置详解1.0下载JavaSDK1.8最新版2.0配置Java环境变量功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,…

    2022年7月12日
    50
  • 分布式全局唯一ID生成器(支持多种注册中心)的实现

    分布式全局唯一ID生成器(支持多种注册中心)的实现在订单、支付的业务场景中,单号的生成规则与生成方式十分重要,实现有很多种,最简单的是基于mysql自增主键实现,方案优劣不多说,大家都清楚。我们今天实现一种分布式的、可扩展的并且在高并发场景能保证高性能的全局唯一ID生成方案(基于twitter的snowflake原理进行改编和扩展)。不多说直接上代码。packagecom.zxm.adapter;importorg.apache.z…

    2022年6月21日
    30
  • pycharm修改环境_pycharm更改环境

    pycharm修改环境_pycharm更改环境因为有时需要在Terminal中调试代码,而且调试前需要配置环境变量,虽然操作不麻烦,但用起来总不习惯.特别是项目比较多时,需要频繁进到设置里面去改.以前设置环境变量的操作如下图:Settings-Tools-Terminal-ProjectSettings-Enviromentvariables添加环境变量比如我们有一个文件env.list里面的内容如下:IN_HOST=’192.168.0.6’#数据库主机IPIN_PORT=8888#数据库端口IN_US

    2022年8月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号