热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

idea运行jmeter源码_JMeter二次开发指南(一)环境搭建

一、概述随着测试行业的逐步成熟,对测试的要求也从原本的手工功能测试为主,慢慢转变为各种类型的测试相结合,包括性能、自动化、安全等。对用户体
b1e8f8fc23dc2429ee22b9b0ed3ef77d.png

一、概述

随着测试行业的逐步成熟,对测试的要求也从原本的手工功能测试为主,慢慢转变为各种类型的测试相结合,包括性能、自动化、安全等。对用户体验的要求也越来越高,而性能的优劣在一定程度上影响着用户体验。因此对于性能测试的需求也日益增加。并且性能测试对象也从原本主要以http协议为主的接口转变为多元化发展,现在我们需要对各种类型的软件进行性能测试,包括但不局限于rpc、mq、nosql等。

而对于非http协议的接口,没有一款工具可以包含所有类型,因此对于这类情况,我们需要利用工具进行二次开发。本次将分几个系列对JMeter的二次开发进行介绍。

二、环境准备

目前最新的JMeter版本为5.3,与早期版本相比,构建方式从Ant变成了Gradle,因此我们需要准备的环境包括:

  1. 安装jdk1.8或以上版本并配置环境变量
  2. 安装Gradle并配置环境变量
  3. 从github(https://github.com/apache/jmeter)或JMeter官网(https://jmeter.apache.org/)下载源码并解压

3步的具体步骤各位小伙伴可以自行搜索,本文不做过多展开。

三、构建说明

  1. 进入到JMeter源码根目录,执行一下命令将构建及测试JMeter
    如果需要需要启动GUI,可以运行

./gradlew build [-Djava.awt.headless=true]如果需要构建并启动GUI可以运行

./gradlew runGui这里有个小技巧,每次都打./gradlew比较麻烦,我们可以安装一个小工具(https://github.com/dougborg/gdub),这样就可以使用"gw"来代替"./gradlew"了,安装后运行的命令是

gw runGui

55113abe974f7a627f6640583cddd564.png


运行过程中回去下载下载相关的jar包等文件,大家可以通过设置代理或使用国内镜像源等方式进行加速

  1. 为了方便二次开发,我们需要将JMeter源码导入到Intellij IDEA或是eclipse中,如果是IDEA的话,需要2018.3.1或更新的版本,eclipse可以通过Import...->Gradle project的方式导入,需要注意的是我们需要安装对应的kotlin插件。导入步骤网上有很多文章,新版本的JMeter与之前的导入步骤无太大差别,这里也不做过多展开。

四、启动Jmeter

导入完成后,我们就可以在IDEA中启动JMeter了

24f3af8052e9bfa2db6a4c9539f5612a.png

当然依然可以通过命令行的方式来运行。

此外我们也可以通过执行入口程序的NewDriver的方式来运行,需要注意的最新版本的NewDriver在src下的launcher下,而不是之前的core,并且启动时记得设置jmeter.home属性,否则会报错。

d834c2603e5489a4dd552a6547dfb09b.png
04d02e73d017193320e3dfd8257d7fa7.png

有些使用mac os x的小伙伴可能设置了jmeter.home依然会报错,此时我们可以自己修改代码。

7b8b90cbf745b316bd796d4c0dbc8c29.png

以上是简单为大家介绍了一下当前最新版本JMeter开发环境搭建的步骤,其中部分环境安装(如:jdk、gradle、kotlin等)未给大家详细介绍,不过相信大家在查阅资料后是可以解决的,如果大家还有别的什么问题,可以在评论中进行回复。

每一篇文章都来自鲁德精心原创,如果文章帮到了你,欢迎转发和点赞,让更多的朋友受益!跟着鲁德一起,每天进步一点点,终会质变!让你面试拿高薪!



推荐阅读
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • Active Object设计模式解析
    Active Object设计模式通过引入代理(Proxy)和命令(Command)模式,实现了方法调用与执行的解耦,从而支持异步操作和提高系统的并发处理能力。本文将深入探讨Active Object模式的工作原理及其应用场景。 ... [详细]
  • 本文详细介绍了如何设置局域网,并确保网络中的所有计算机能够相互访问和共享安装的软件。包括物理连接检查、TCP/IP设置、网络协议配置等多个方面。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 本文探讨了2012年4月期间,淘宝在技术架构上的关键数据和发展历程。涵盖了从早期PHP到Java的转型,以及在分布式计算、存储和网络流量管理方面的创新。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • Python基础教程:struct模块与格式化字符详解
    本文详细介绍了Python中struct模块的功能,以及如何利用格式化字符实现Python与C语言结构体之间的数据转换。文章通过具体实例讲解了struct模块的主要方法及其应用场景。 ... [详细]
  • 深入探讨ASP.NET中的OAuth、JWT与OpenID Connect
    本文作为前文关于OAuth2.0和使用.NET实现OAuth身份验证的补充,详细阐述了OAuth与JWT及OpenID Connect之间的关系和差异,旨在提供更全面的理解。 ... [详细]
  • Consul 单节点与集群环境构建指南
    本文详细介绍了如何安装和配置 Consul 以支持服务注册与发现、健康检查等功能,包括单节点和集群环境的搭建步骤。 ... [详细]
author-avatar
黑洞里的筷子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有