开启Jmeter之旅(二)— 什么是JMeter? 如何进行测试?

什么是JMeter

来自Jmeter官网的介绍。

https://jmeter.apache.org/

Apache JMeter™应用开源软件,100%纯Java应用程序,设计用于负载功能测试和性能测试。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试函数中。

Apache JMeter 功能包括:

  • 能够加载和测试许多不同的应用程序/服务器/协议类型:

    • Web的HTTP,HTTPS(java,Nodejs,PHP,ASP.NET,…)

    • SOAP / REST Webservices

    • FTP 文件传输协议

    • Database via JDBC

    • LDAP

    • Message-oriented middleware (MOM) via JMS

    • 邮件传输协议 - SMTP(S), POP3(S) 和 IMAP(S)

    • 本地命令或Shell 脚本

    • TCP

    • Java Objects

  • 全功能测试IDE,允许快速记录测试计划(来自浏览器或本地应用程序),构建和 调试。

  • 基于Java开发,支持Linux、Windows、MAC OSX等平台。

  • 可以生成完整的动态HTML报告。

  • 通过从最流行的响应格式、HTML、JSON、XML或任何文本格式提取数据的能力,可以轻松地进行相关性。

  • 全多线程框架允许多线程并发采样,同时通过不同的线程组进行不同功能的同时采样。

  • 缓存和离线分析/重放测试结果。

  • 高度可扩展内核, 数据分析和可视化插件可扩展,可通过Maven、Gradle和Jenkins实现持续集成。

采用的技术

JMeter是一款Java桌面应用程序,它的用户界面采用Swing Java API实现。基于这两点,JMeter是一个跨平台工具,能够运行在任何安装了Java虚拟机的操作系统(Windows, Linux, Mac)的设备上。 它的框架支持并发和多线程或者线程组的执行。这对于配置负载测试和压力测试非常有用。 它是可扩展的,提供了大量的可用插件。 JMeter是Apache软件基金会下的一个子项目,是完全免费和开源的。

搭建Jmeter环境

参考链接:
开启Jmeter之旅 (1) - MAC下安装Jmeter

构建一个简单的Jmeter性能测试

了解了Jmeter,环境也已经搭建成功,下面开始构建一个测试计划,简述Jmeter测试过程。 使用Jmeter时,通常会遵循下面三个流程: 构建测试计划,负载测试运行、负载测试分析三个步骤,Let's start!

从模板创建测试计划

启动jmeter后,jmeter会自动生成一个空的测试计划,用户可以基于该测试计划模板建立自己的测试计划。

一、添加虚拟用户组

右击“测试计划”>添加>Threads(Users)>线程组。

什么是线程组?

JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统。

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

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

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

关于线程组选项的说明

线程(用户)菜单下,有三个添加线程组的选项,名字不一样, 创建之后,其界面是完全一样的。之前的版本只有一个线程组的名字。现在多一个setUp theread Group 与terDown Thread Group

  • setup thread group

一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。

  • teardown thread group

一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。

可能你还是不太理他们与普通的线程组有什么不同。 如果您用过junit,想必你不会对setup ,teardown这2个字眼陌生。 即时每用过,也没关系。 熟悉loadrunner的应该知道,loadrunner的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块。 那么这里 setup thread group 和 teardown thread group 就是分别指这两部分。 其实从本质上来看,他们并没有什么不同。

  • thread group(线程组)

这个就是我们通常添加运行的线程。通俗的讲一个线程组,,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。

二、添加被测页面

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

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

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

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

目前脚本已经创建完成,点击“保存”按钮,保存创建的测试计划脚本。

负载测试运行

点击下图的“启动”按钮,可以运行此测试计划了。

点击启动后,很快就执行完了,但是我们从窗口并没有看到执行过程和结果。那如何进行分析呢?

负载测试分析

注意,直接点击运行后,JMeter 窗口没有看到运行过程和结果,我们可以打开 选项 - 日志查看,查看运行日志,

JMeter的log通过log4j2.xml配置文件进行配置,文件目录: /usr/local/Cellar/jmeter/5.0/libexec/bin/log4j2.xml,可以调整log级别,logger元素。更多信息可以参考Apache Log4j 2 Configuration页面。

当然,日志看起来有点费劲儿,测试出现问题,通过日志查,太不直观了,别急,JMeter提供了“监听器”让用户来观察测试结果。

如下图所示,右击“线程组” > “监听器” > “察看结果树”来查看性能测试过程中请求和响应信息。添加完毕后,保存测试脚本,再次运行。

运行测试完毕之后,点击“察看结果树” > “Jmeter”,在取样结果下,可以看到测试过程中一些有用的信息,比如发送请求的信息和响应数据等。接下来可以试着改一下“线程组”里的“线程数”为10,就是模拟10个用户访问。测试公网地址,数值不要改太大。


好了,目前已经完成了一个Jmeter测试用例的创建、执行和分析过程,入门很简单。

参考连接

推荐阅读更多精彩内容

  • Version:1.0StartHTML:000000201EndHTML:000144424StartFragm...
    爱宝贝的龙阅读 1,254评论 0 10
  • 主要文体来自 CDNS:https://www.cnblogs.com/ceshisanren/p/5639895...
    Amano阅读 6,779评论 1 24
  • 在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大,所以,当需...
    IT诸葛亮阅读 1,890评论 0 15
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 2,478评论 0 1
  • 1 Jmeter安装配置 使用Jmeter前首先要安装JDK,配置JDK环境变量。Jmeter不需要安装,下载后...
    茶小汐阅读 1,652评论 0 8