zoukankan      html  css  js  c++  java
  • Jmeter简介

    1、Jmeter简介

    (1)概念 

    Apache JMeter应用程序是开源软件,100%纯Java应用程序,用来进行负载测试、度量系统性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试函数。 

    (2)使用Jmeter我们能做什么? 

    Apache JMeter可以用于测试静态和动态资源、Web动态应用程序的性能。 

    它可以用来模拟大量负载对单个服务器或一组服务器、网络或对象进行压测,以测试其强度,或分析不同负载类型下的总体性能。 

    (3)Apache JMeter的特性包括:

    支持测试许多种类的应用程序/服务器/协议类型:

    Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET 等)

    SOAP / REST Webservice

    FTP

    通过JDBC连接数据库

    LDAP

    面向消息的中间件(MOM)通过JMS。

    Mail邮件- SMTP(S)、POP3(S)和IMAP(S)

    本地命令或shell脚本。

    TCP

    Java对象

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

    命令行模式(非GUI /无头模式)负载测试支持任何Java兼容的操作系统(Linux、Windows、Mac OSX…)

    一个完整的并准备好呈现动态HTML报告。

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

    完全可移植性和100% 纯Java。

    完整的多线程框架允许多个线程同时进行采样,同时通过单独的线程组对不同的函数进行同步采样。

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

    高度可扩展的核心: 

    可插入的采样器允许无限的测试能力。

    可脚本的Samplers(类似Groovy和BeanShell的jsr23兼容语言)

    可以使用可插入计时器选择若干负载统计信息。

    数据分析和可视化插件允许极大的扩展性和个性化。

    函数可用于为测试提供动态输入或提供数据操作。

    通过第三方开放源码库轻松地持续集成Maven、Graddle和Jenkins。

    (4)Jmeter工作原理 

    通过多线程模拟服务器压力(Loadrunner可以选择以进程方式还是以线程方式来运行)。JMeter通过线程组来驱动多个线程(可以将线程理解为虚拟用户)运行测试脚本对被测服务发起负载,每一个负载机上都可以运行多个线程组。 

    控制机:当我们需要多台服务器来进行压测时,那个被选中作为管理机的服务器就是控制机。他负责管理、指挥其它负载机运行任务,并且收集负载机的测试结果,当然它本身也可以参与脚本运行;

    负载机:想被测服务器发起负载的服务器。负载机受控制机管理首先要启动一个客户端程序(Agent:jmeter-server.bat),这样控制机才可以接管负载机。控制机会把运行的脚本隐蔽的发送到远程负载机,但是如果运行的测试脚本有参数文件及依赖的jar包时,控制机并不能把它们发送到远程负载机,这种情况我们后面详细介绍;

    远程运行逻辑: 

    3.1 远程负载机首先启动Agent程序,待控制机连接; 

    3.2 控制机连接远程负载机; 

    3.3 控制机发送指令(脚本及启动命令)启动线程; 

    3.4 负载机运行脚本,回传状态(包括测试结果); 

    3.5 控制机收集结果并显示

    2、JMeter安装

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

    前提条件:安装jdk(注意版本) 

    在写本博客的时候,JMeter版本为5.1,需要JAVA 8 或JAVA 9版本

    (1)Windows安装

    直接下载二进制文件包中的zip文件,下载后解压

    进入到安装目录,bin目录下,双击jmeter.bat文件即可打开jmeter

    (2)Mac安装

    直接下载二进制文件包中的zip文件,下载后解压

    打开terminal,cd到安装目录,bin目录下,sh jmeter.sh

    (3)Linux安装

    直接下载二进制文件包中的zip文件,下载后解压

    命令行,cd到安装目录,bin目录下,./ jmeter.sh

    无论是使用二进制包还是通过源文件安装Jmeter都非常简单,需要大家注意的是,下载合适的JDK并配置好环境变量。

    3、JMeter工作目录

    (1)bin目录:包含示例脚本(examples)、报告模板(report-template)、启动文件(windows使用.bat,Mac和linux使用.sh启动文件)还有一些配置文件(日志设置、JVM设置等) 

    (2)docs:docs文件夹下的api文件夹包含了JMeter API离线帮助文档 

    (3)extras:JMeter的辅助功能,与Jenkins等集成会用到 

    (4)lib:JMeter组件以jar包的形式存放在lib/ext目录下,给JMeter安装的扩展插件,都存放在该目录; 

    (5)license:包含一些软件许可证,不必深究 

    (6)printable_docs:离线帮助文档,权威文档 

    (7)LICENSE:License说明文件 

    (8)NOTICE:版权声明 

    (9)README.md:JMeter简明介绍,后缀md是Markdown格式文件

    4、JMeter常用组件

    (1)测试计划 

    可以将其看作一个测试场景或测试用例,用来描述一个性能测试,包含测试用例相关的所有功能(比如测试用例的前置条件,预期结果等)

    (2)线程组 

    性能测试需要模拟大量用户负载,线程组就是用来完成这个工作的。在这里我们可以设置线程数(一线程代表一用户),设置运行时间等。分为三类: 

    setup thread group 

    执行预测试操作的线程组,类似LR中的init()

    teardown thread group 

    执行测试后操作的线程组

    thread group 

    这个是我们常用的添加运行线程的设置项。

    访问路径是:【测试计划】——>【Threads(Users)】

    (3)取样器sampler 

    就是通过像服务器发送请求来模拟用户操作,同时也接收服务器响应。取样器有很多种(Jmeter 4.0 默认20种),常用的有HTTP请求,FTP请求等。取样器的访问路径是:【测试计划】——>【线程组】——>【Sampler】

    (4)断言 

    断言就是用来验证响应结果是否正确的,类似LR中的检查点。断言的访问路径是:【测试计划】——>【断言】

    (5)监听器 

    Jmeter的测试结果需要添加监听器来收集,监听器有两个任务:

    监听结果,并且保存测试结果到文件,这些结果数据可以供再次分析使用

    展示结果,Jmeter可以以表格或图形的方式展现结果,方便测试人员分析

    访问路径是【测试计划】——>【监听器】 

    取样器、断言、监听器组合在一起就可以帮助我们完成发送请求、验证结果、记录结果三项重要的工作。

    (6)前置处理器 

    用于在实际的请求发出之前对即将发出的请求进行特殊处理。在请求发送前,可以需要准备环境或参数,那我们就可以在前置处理器中完成这些工作。比较典型的应用有:

    对数据库进行操作前需要先建立一个数据库连接,可以用前置处理器完成;

    当发出的请求需要包含session信息时,可以用前置处理器填充;

    访问路径:【测试计划】——>【前置处理器】

    (7)后置处理器 

    后置处理器一般放在取样器之后,用来处理服务器的返回结果,比如一个Web应用程序,我们登录后会返回一个SessionID,这个SessionID在登录之后的业务操作过程中会作为验证条件,验证用户是否合法登录了。我们利用取样器模拟这个请求时就需要带上这个属性,那么如何获取呢?这时候就用到了后置处理器,等同于LR中的关联。

    访问路径:【测试计划】——>【后置处理器】

    (8)配置元件 

    性能测试中为了模拟大量用户操作,我们往往需要做参数化,JMeter的参数化就是通过配置元件来完成的。比如通过CSV Data Set Config,可以帮助我们从文件中读取数据。具体用法我们后续介绍。

    前置处理器、后置处理器、配置元件都是为取样器提供数据支持的,取样器关注的是业务逻辑。

    (9)定时器 

    定时器用于操作之间设置等待时间,有点类似LoadRunner中的think time 

    对于类似“秒杀”这种活动,使用定时器再适合不过了。为了足够真实的模拟用户负载,我们有时会需要模拟这些请求在同一时刻发送,就好像把大家集合到一条起跑线上,然后一声令下,同时起跑。Jmeter提供了多种定时器以满足各种场景。 

    访问路径:【测试计划】——>【线程组】——>【定时器】

    (10)控制器: 

    逻辑控制器包含两类,一类用于控制测试计划中取样器节点发送请求的逻辑顺序的控制器,如if控制器,循环控制器;一类是用来组织可控制取样器节点的,如事务控制器、吞吐量控制器

    (11)Test Fragment 

    是一个辅助组件,在此节点下几乎可以放置任何Jmeter测试元件,但一般不会运行,他有什么作用呢?

    在脚本开发过程中用来备份元件

    Test Fragment下的元件可以被模块控制器调用,我们可以利用它来模块化请求,然后供模块控制器调用

    (12)工作台 

    工作台的主要功能在于:

    启动HTTP代理,从而可以录制HTTP请求

    备份脚本(这里的脚本是不会运行的)

  • 相关阅读:
    19-background
    18-超链接导航栏案例
    17-文本属性和字体属性
    16-margin的用法
    15-浮动
    14-块级元素和行内元素
    13-标准文档流
    12-简单认识下margin
    11-border(边框)
    10-padding(内边距)
  • 原文地址:https://www.cnblogs.com/hbf66-88/p/11631118.html
Copyright © 2011-2022 走看看