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

Jmeter性能测试入门篇

Jmeter是一款性能测试工具,是Apache开源组织的一款纯Java开发的桌面级应用本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编

Jmeter是一款性能测试工具,是Apache开源组织的一款纯Java开发的桌面级应用

本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。

jmeter简介


  • 多线程框架–支持多并发操作
  • 用于对服务器模拟负载
  • 支持web、数据库、FTP服务系统的性能测试
  • 开源、纯Java,可二次定制化开发

1、Jmeter安装


1.1、JDK安装

由于jmeter是Java开发的,所以需要下载安装jdk,

  1. 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

  2. 选择Java SE 8u151/ 8u152,点击JDK下载
    在这里插入图片描述

  3. 安装下载的JDK

  4. 配置系统环境变量




2.2、jmeter安装



1.官网下载地址:http://jmeter.apache.org/download_jmeter.cgi

2.下载最新JMeter 5.2.1版本:apache-jmeter-5.2.1.zip
在这里插入图片描述
3.下载完成后解压zip包

4.启动方式:解压后进入Jmeter的bin目录,windows下双击jmeter.bat文件启动,Linux下执行Jmeter.sh文件
在这里插入图片描述

2、Jmeter脚本编写


2.1、添加线程组

线程组元件是任何一个测试计划的开始点。在一个测试计划中的所有元件都必须在某个线程下。所有的任务都是基于线程组。
右键点击“测试计划” -> “添加” -> “Threads(Users)” -> “线程组”
在这里插入图片描述
1、setUp线程组:
一种特殊类型的ThreadGroup,用于在执行常规线程组之前执行一些必要的操作。在“setup thread group”下提到的线程行为与普通线程组完全相同。不同的是执行顺序—它会在普通线程组执行之前被触发
2、tearDown线程组:
一种特殊类型的ThreadGroup,用于在执行常规线程组完成后执行一些必要的操作。在“teardown thread group”下提到的线程行为与普通线程组完全相同。不同的是执行顺序—它会在普通线程组执行之后被触发
3、线程组:
这个就是我们通常使用的线程。通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。多个用户同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。

在线程组界面中可以设置以下数据,进行控制线程组:
在这里插入图片描述
线程组参数详解:

1、取样器错误后要执行的动作:

继续:忽略错误,继续执行
Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。
停止线程:当前线程停止执行,不影响其他线程正常执行。
停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止
Stop test now:整个测试会立即停止执行,当前正在执行的取样器可能会被中断。
线程数:线程数也就是并发数,每个线程将会完全独立的运行测试计划,互不干扰。多个线程用于模仿对服务器的并发访问。
ramp-up period:用于设置启动所有线程所需要的时间
循环次数:该项设置线程组在结束前每个线程循环的次数,如果次数设置为1,那么JMeter在停止前只执行测试计划一次。
Delay Thread creation until needed:直到需要时延迟线程的创建。
调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。

2.2、添加http请求

右键点击“线程组” -> “添加” -> “Sampler” -> “HTTP请求”
在这里插入图片描述
我们对于访问百度www.baidu.com参照下图填写
在这里插入图片描述
Http请求主要参数详解:

Web服务器
协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
服务器名称或IP :HTTP请求发送的目标服务器名称或IP
端口号:目标服务器的端口号,默认值为80
2.Http请求
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
Content encoding :编码方式,这里配置为utf-8

2.3、添加结果树

右键点击“线程组” -> “添加” -> “监听器” -> “察看结果树”
在这里插入图片描述
这时,我们运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为”斗米网-高效的全职、兼职招聘服务平台“。
在这里插入图片描述


推荐阅读
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
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社区 版权所有