JMeter 怎么学?

大家在网上搜寻许多关于 JMeter 的应用案例时是不是有过这样的遭遇:

  • 明明是按照文档中的内容去做的,但是好些时候总是出错,这个时候会疯狂搜索各类与问题相关的文章,东拼西凑的去寻找答案,浪费大量的时间和精力。
  • 读者是不是也遇到过这种情况,开始做的时候,举步维艰,做过之后再来看,其实很简单,好吧,这是我们做过一件事情之后的想法,当然这也是在网上分享学习心得的大牛们的想法。 所以对于初学者的我们,看到的永远都是大牛们思维提炼后的知识产物,好些内容我们根本无法真正的领会。道理很简单,我们应该从金字塔的最底层开始学起,而搜索到的往往都是金字塔顶端的产物。

下面举几个例子来说明上面的两种场景。

  • 若要测试接口,并且现在产品还没有 Web 界面,无法直接录制脚本,于是想到要么使用 Loadrunner 的 Java vuser 去测试,要么使用 JMeter 的 Java 请求去测试,考虑到后者轻量级,则采用后者去做。 于是搜寻大量资料,大部分是如何将 Java 的 jar 导入到 JMeter 中,但是却没有介绍应该如何开发 JavaSampler,如何开发 JavaSampler。
  • 若去做测试分析,会有介绍如何从测试指标中分析,但是没有介绍要从内存→硬盘→CPU 的前后顺序一 一去排查瓶颈。
  • 编写性能测试脚本应该去参数化,但是很少有资料介绍为什么要做参数化,还有部分资料介绍脚本中最应该参数化的脚本就是:“一次性数据”和“时间”。

……

学习动力

学习是有时间成本的,所以我们必须找到学习的动力,最主要的无非是以下三个:

(1)个人能力的提升,个人能力提升之后才能胜任更具价值的岗位;

(2)公司认可,无论是招聘还是公司内部,领导层对性能测试情有独钟。具体可以看下国内知名公司对性能测试的招聘情况:

更多信息可以去浏览智联招聘、拉勾网等招聘网站去浏览性能测试工程师的待遇和要求。

可以确定的是,即使好些公司没有特定的性能测试工程师岗位,但是大多也会要求会性能测试,并且是作为重要的加分项。

(3)掌握了性能测试这门技术,升职加薪自然不是梦想,定能叫您高人一等,薪水翻番。

JMeter 可以用来做什么

  • 能够对 HTTP 和 FTP 服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过 JDBC)。
  • 完全的可移植性和 100% 纯 Java,对 JavaWeb 项目兼容性好。
  • 完全 Swing 和轻量组件支持(预编译的 JAR 使用 javax.swing.*)包。
  • 完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。
  • 精心的 GUI 设计允许快速操作和更精确的计时。
  • 缓存和离线分析/回放测试结果。

以上内容来源于“360百科”。

JMeter 的优劣

优势

  • 轻量级、体积小、免安装;
  • 开源软件、扩展性好,我们可以根据自己的需要修改源代码;
  • 支持代理录制,支持第三方软件 Badboy 录制的脚本,脚本可移植性好;
  • 对 JavaWeb 支持性好,符合当前形势,Java 语言编写的系统和项目多;
  • 支持分布式性能测试;
  • 容易与 Jenkins 进行集成。

劣势

当然工具没有绝对性的好坏,它也有其劣势,我们只有认清它的劣势,才能更好的使用它。缺点如下:

  • 不支持自动关联,必须手动书写关联脚本;
  • 不支持 HTTPS 的脚本,但是可以直接测试 HTTPS 的请求;
  • 不支持模拟浏览器的用户行为,每个用户只能代表一个并发;
  • 没有自带的资源监控体系,需要借助第三方插件;
  • 支持的协议较少(这里要说一点,支持的协议虽然少,但是确精)。
  • 不支持录制的脚本和回放脚本进行比较。

当然这些所谓的劣势如果反过来想,它支持的不好,那就说明它支持的功能一定非常完备,并且我所列举的劣势是和强大的 LoadRunner 作的比较,如果读者有足够的时间,我个人也鼓励研究下 Loadrunner。

JMeter 的运行环境说明

JMeter 的运行是依赖于 Java 环境的,所以机器必须确保已经安装 JDK,才能使用 JMeter。

需要说明的是:本地的 JDK 版本最好安装 1.7 版本以上,推荐 JDK 1.8 版本,否则会与从官网下载下来的最新 JMeter 不兼容。

(1)JMeter 下载的官网地址请单击这里。

(2)选择最新的版本进行下载:

请注意,若下载的最新版本为 3.3 的话,已经明确要求,JDK 版本必须为 1.8。单击 Binaries 下的红框标注部分进行下载。

(3)下载完成后放在本地的自建目录下,进行解压操作:

(4)配置环境变量

新建系统变量为:JMETER_HOME,变量值为:D:\TestTool\Jmeter\apache-jmeter-3.1,如图所示。

配置 CLASSPATH(没有的话要新建),变量值为:

%JMETERHOME%\lib\ext\ApacheJMetercore.jar;

%JMETER_HOME%\lib\jorphan.jar;

%JMETER_HOME%\lib\logkit-2.0.jar;如果没有其他值,那么前面应该加.;这三个 jar 必须配置在 CLASSPATH 中。

(5)JMeter 的启动

Windows 系统的启动:在 bin 目录下启动 jmeter.bat;展示出如下界面即启动成功:

认识 JMeter 的操作元件

我们用一个实例先来尝尝鲜,看看如何用 JMeter 完成一次简单的性能测试实践。

测试背景

(1)被测试网站为博客园网站。

(2)场景为:

  • 线程数:虚拟用户数。
  • Ramp-Up period(in seconds,即单位为秒):即为场景加载的策略,设置的虚拟用户数需要多长时间全部启动。如果线程数为 10,时间为 5,也就是说每秒启动 2(2 是线程数 10 除以 Ramp-Up period 而来)个线程。
  • 循环次数:每个线程发送请求的次数。如果线程数为 10,循环次数为 5,那么每个线程发送 5 次请求,总请求数为 10×5=50。

如果勾选了永远,那么所有线程会一直请求直到停止;不勾选永远默认。总的请求运行时间为 Ramp-Up period × 循环次数 = 5 × 5 = 25 秒。

(3)我们想要的指标为:响应时间、错误率以及平均响应时长。

测试基本流程

打开 JMeter 界面后,我们以 HTTP 请求为例开始实践性能测试,基本流程如下所示。

(1)单击“测试计划”|“添加”|“Threads(Users)”|“线程组”命令,如图所示:

(2)单击“线程组”|“添加”|“Sampler”|“HTTP 请求”命令,如图所示:

对 HTTP 请求的主界面说明如下,下图为 HTTP 主界面:

(3)单击“博客园 HTTP 请求(即 HTTP 请求)”|“添加”|“监听器”|“查看结果树”命令,用来观测请求是否成功:

(4)单击“博客园 HTTP 请求(即 HTTP 请求)”|“添加”|“监听器”|“聚合报告”命令,用来监听测试指标:

(5)运行脚本:

(6)查看结果树:

从结果树中可以发现,请求已经全部成功。

(7)查看聚合报告:

(8)变更测试场景后,再次执行,需要清楚运行记录:

总结

学完本次课程,需要掌握如下知识点:

  • 测试场景的建立;
  • HTTP 请求的各个标签含义;
  • 聚合报告中各个指标的含义;
  • 能简单进行 HTTP 请求的性能测试。

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2018-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐百川的学习频道

使用 you-get 下载视频

安装you-get 最近刚刚看完了Python的官方教程,准备研究一下Python的第三方库。想起来以前看到过一个很不错的视频下载工具you-get,今天正好来...

8215
来自专栏python开发者

CI-持续集成(2)-软件工业“流水线”技术实现

1   概述 持续集成(Continuous Integration)是一种软件开发实践。在本系列文章的前一章节已经对其背景及理论体系进行了介绍。本小节则承接前...

3608
来自专栏王磊的博客

八伟大的工具,Windows用户永远都不想错过

有许多的应用程序你可以找到,但是获得免费并且好用 的程序不是一件容易的事情,每当你需要这样的软件的时候,你就会网上搜啊搜,结果下载下来一运行达不到想要的效果,这...

4216
来自专栏phodal

\b这样去设计 URL,可以提高网站的访问量

今天,很多网站的 URL 的设计都是“有问题”的。它们看起来一塌糊涂,仿佛是被人洗掉的脏数据一样,没有经过设计,没有经过思考。他们一点都不适合阅读,也不利于搜索...

2028
来自专栏java达人

为什么不应该使用ZooKeeper做服务发现

来源:dockone.io 中文链接:http://dockone.io/article/78(点击文末阅读原文前往) 英文链接: https://tech.k...

40410
来自专栏北京马哥教育

成吨提高开发效率的终极武器——自己开发workflow

之前我写过一篇关于提高 Mac 开发效率的文章,里面介绍了很多大幅度提升Mac开发效率的方法,遗憾的是那篇文章里并没有介绍 Alfred 这款神器。 然而转念一...

3134
来自专栏Linyb极客之路

通用型系统架构设计

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总...

2793
来自专栏java达人

Redis与Memcached的区别

传统MySQL+ Memcached架构遇到的问题   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多...

2676
来自专栏魏琼东

AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(三):配置ActiveXForm运行环境

一、前言      AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速...

22510
来自专栏施炯的IoT开发专栏

Microsoft IoT Starter Kit 开发初体验-反馈控制与数据存储

    在上一篇文章《Microsoft IoT Starter Kit 开发初体验》中,讲述了微软中国发布的Microsoft IoT Starter Kit...

2295

扫码关注云+社区

领取腾讯云代金券