简介

这边文章是一菲专门写给想了解性能测试和JMeter的小白,适合对这两者了解很少的朋友们,如果已经有使用经验的请绕道,别浪费时间。
下面我们将介绍JMeter的使用场景,如何安装、运行JMeter,以及开始一个最最简单的测试。你还徘徊在JMeter的门口吗?相信我,跟着本文做完,你就可以开启你的JMeter之旅了。

JMeter是开源软件Apache基金会下的一个性能测试工具,用来测试部署在服务器端的应用程序的性能。近来,JMeter因为其使用简单,现在也被社区作为接口测试工具… 啥?什么是性能测试,怎么又来了个接口测试?
在这里一菲举个例子,你开了一个网店,兴冲冲地准备双十一大干一把,没想当天活动的时候大量用户一访问你的网店,你的网店挂了,那怎么办?办法就是在实际搞活动之前,先测试一下以确认系统能承受那么多的用户,当然测试的时候我们不需要请真正的这么多实际用户,否则得花多少钱啊,JMeter就是那个能帮助模拟大量用户访问你网站的一个软件。对,而且它是开源的,不花钱!那个接口测试呢,这里大概了解一下就可以了,就是验证你的网店应用逻辑有没有问题的,比如你做打折活动的时候,结算的时候金额别出错,要不客户找你麻烦不是?

一.JMeter下载和安装

JMeter可以在JMeter的官方网站下载,下载链接如下图所示,xmeter君写本文的时候(2016/11)可以下载到的最新的版本是3.0,

下载后解压到你系统下的任意目录,我们称该目录为%JMETER_HOME%,然后运行%JMETER_HOME%\bin\jmeter.bat文件,怎么样,JMeter出来了吗?嗯!?等等,好像报错了。仔细看一下报错原因,原来是Java没安装,因为JMeter是用Java写的,运行的时候需要Java …不对啊,xmeter君,我这里好像已经看到JMeter的界面了 – 当然咯,恭喜你,这是因为你之前已经安装了Java了,就跳过下一步吧。


一.安装Java

安装之前先下载其安装包,这里是下载地址。打开页面后,按序点击下列所示的链接,xmeter君写本文的时候,Java的最新版本是8。
进入下一个页面后,按序点击如下所示开始下载,当然,下载的文件需要跟你的系统对应,如果是Linux请下载相关的Linux版本,xmeter君用的是Windows 64位版的Java。

下载完毕之后运行exe文件,按照向导提示安装完Java。再次运行%JMETER_HOME%\bin\jmeter.bat,如果都安装对了的话就应该能出现JMeter的运行界面了。

.JMeter之初体验

JMeter安装完了,那我们来一个简单的实验。性能测试当然得有个测试目标,就是被测系统是什么,xmeter君这里就以测度娘为例来描述构造一个简单的性能测试过程:xmeter君保证你在5分钟之内完成一次测试体验。
添加虚拟用户组

如下图所示,右击“测试计划”>添加>Threads(Users)>线程组。这里xmeter君需要解释一下“线程组”的意思:JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统。

三.接下来xmeter君给大家介绍下“线程组”中常用到的一些设置。

1.线程数:这里就是指虚拟用户数,默认的输入是“1”,则表明模拟一个虚拟用户访问被测系统,如果想模拟100个用户,则此处输入100。

2.Ramp-Up Period (in seconds): 虚拟用户增长时长。不明白别着急,xmeter君给你举个栗子:比如你测试的是一个考勤系统,那么实际用户登录使用考勤系统的时候并不是大家喊1、2、3 - 走起,然后一起登录。实际使用场景可能是9点钟上班,那么从8:30开始,考勤系统会陆陆续续有人开始登录,直到9:10左右,那么如果完全按照用户的使用场景,设计该测试的时候此处应输入40(分钟)* 60(秒)= 2400。但是实际测试一般不会设置如此长的Ramp-Up时间,原因嘛,难道你做一次测试要先等上40分钟做登录操作?一般情况下,可以估计出登录频率最高的时间长度,比如此处可能从8:55到9:00登录的人最多,那这里设置成300秒,如果“线程数”输入为100,则意味着在5分钟内100用户登录完毕。

3.循环次数:该处设置一个虚拟用户做多少次的测试。默认为1,意味着一个虚拟用户做完一遍事情之后,该虚拟用户停止运行。如果选中“永远”,则意味着测试运行起来之后就根本停不下来了,除非你把它强制咔嚓。

四.添加被测页面

接下来的一步就是要加入实际被测页面,右击“线程组” > “添加” > “Sampler” > “HTTP请求”。

五.接下来需要设置一下“HTTP请求” Sampler的属性,如下所示:

1.名称:输入“百度”,就是被测试网页的描述性文字

2.服务器名称或IP:被测服务器的网站名字,也可以是IP地址。剩下的属性可以按照被测系统的属性按需配置,现在都可以为空。

现在的测试脚本已经可以运行了,先点击下面如图所示的第一步:点击保存脚本按钮;然后点击如图所示的第二步:点击运行测试按钮。

等等,xmeter君,为什么我的测试跑完了没啥反应?嗯,其实测试已经跑完了,你可以去“选项” > “Log Viewer”看看运行的日志。如果你还是看不到日志,你可以点击下面所示的三角箭头展开或者收起日志视图。日志视图中可以看到“线程组 1-1”的启动和结束时间,表明测试已经跑完。
这JMeter运行看着也太不直观了吧?那如果我的测试有问题了,怎么发现啊?别着急,JMeter提供了“监听器”让用户来观察测试结果。
添加结果监听器

如下图所示,右击“线程组” > “监听器” > “察看结果树”来查看性能测试过程中请求和响应信息。添加完毕后,保存测试脚本,再次运行。
运行测试完毕之后,点击“察看结果树” > “百度”,点击下图中3所示位置,你可以看到一些测试期间一些有用的信息,比如发送的请求的信息和响应数据等。接下来可以试着改一下“线程组”里的“线程数”为10,就是模拟10个用户访问。别改太大哦,否则小心度娘把你的IP地址给封了

JMeter入门教程详解相关推荐

  1. python入门教程pdf-Python入门教程详解.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython Python入门教程详解.pdf132页 本文档一 ...

  2. vue 单相绑定_Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)...

    Vuejs第一篇之入门教程详解(单向绑定.双向绑定.列表渲染.响应函数) 2018-12-30 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素 ...

  3. k8s入门教程详解(一)

    文章目录 Kubernetes 入门教程详解(一) 一. Kubernetes 概述 1. K8S 发展历史由来 2.K8S官网 2.K8S 是什么 3. K8s 优势及特点 3.1 K8S优势 3. ...

  4. Python入门教程详解

    Python入门教程 目录 1. 简介 2. 安装 3. 基本语法 4. 数据类型 5. 条件语句 6. 循环 7. 函数 8. 模块 9. 异常处理 10. 文件输入输出 1. 简介 Python是 ...

  5. keyshot9怎么导入材质_keyShot 9如何使用?keyshot 入门教程详解

    KeyShot 9 Pro for Mac是应用在Mac上的一款3D渲染和动画制作软件,从科学上准确的材料和环境预设到高级材料编辑和动画,创建交互式产品视觉效果或销售和营销图像从未如此简单. macw ...

  6. MindManager2020版本入门教程详解

    MindManager是一款创造.管理和交流思想的思维导图软件,其直观清晰的可视化界面和强大的功能可以快速捕捉.组织和共享思维.想法.资源和项目进程等等.MindManager新手入门教程专为新手用户 ...

  7. 2022年最新C#入门教程详解

    C# 简介 C# 是一个面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的.C# 是专为公共语言基础结构(CLI)设计的.CLI 由可执行代码和运行时环境 ...

  8. KeyShot 9如何使用?keyshot 入门教程详解

    KeyShot 9 Pro for Mac是应用在Mac上的一款3D渲染和动画制作软件,从科学上准确的材料和环境预设到高级材料编辑和动画,创建交互式产品视觉效果或销售和营销图像从未如此简单. macw ...

  9. YOLOv7(目标检测)入门教程详解---环境安装

    目录 一.前言 二.yolov7环境搭建 直接进入正题,环境搭建开始: Anaconda: Pycharm: cuda: cuda安装: cudnn: 三.虚拟环境安装 创建虚拟python环境: P ...

最新文章

  1. centos下axel安装与使用
  2. Swift 面向对象
  3. 关于Tomcat安装过程中出现的一些问题...
  4. VC++中字符串编码处理的一些相关问题
  5. 飞在空中的仓库再配合无人机送货,沃尔玛新专利厉害了
  6. ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
  7. java反射的field.get(null)
  8. 第九节: 利用RemoteScheduler实现Sheduler的远程控制
  9. mysql乐观锁与事务_[数据库事务与锁]详解七: 深入理解乐观锁与悲观锁
  10. 如何设置jquery的ajax方法为同步
  11. 详细的redis操作介绍
  12. python——问题解决:读取excel文件字符串,写入txt时乱码
  13. 白话isEqual和hash的关系
  14. 华为发布八核处理器Kirin 920
  15. 加法器的实现(半加器,全加器,行波进位加法器,超前进位加法器,流水线加法器)
  16. 论文笔记——基于多传感器融合的定位建图及导航研究
  17. jq分页 不刷新页面_jquery实现无刷新分页,跳转
  18. c语言将元年1月1日起的天数转化成日期,不用循环和数组
  19. CIR、CBS、EBS、PIR、PBS的含义
  20. java版商城源码之聚合支付Spring Cloud+Spring Boot+mybatis+security+uniapp+Redis+MQ+VR全景+b2b2c多商家入驻前后端分离

热门文章

  1. RT-Thread内核实现的思维导图——线程调度器
  2. 在磨金石教育学室内设计靠谱吗?学费贵吗?老师负责吗?
  3. angular-详细信息-页面折叠状态
  4. 【MM小贴士】SAP工序外协初探
  5. Android Studio 用USB连接到真机调试方法
  6. Java给图片添加文字,水印,文件或者http图片地址,可消除文字锯齿
  7. vanilla js_用Vanilla js编写前端组件
  8. 【2018最新VR眼镜排行榜】VR眼镜有哪些品牌?哪个VR眼镜性价比高,比较好?求推荐
  9. 计算机中专升大专难不难,自考大专难吗?
  10. 当内嵌图层有图层样式时,如何在其上边创建图层剪切蒙版