JMeter(一):基础概念

作者: 倔强的潇洒小姐 | 来源:发表于2018-02-11 17:34 被阅读93次

    1、什么是JMeter

    以下是源于百度百科的解释,关于作用、历史、意义请查看更多内容

    Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
    它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等,还可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
    另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

    Apache JMeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。
    它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

    2、Jmeter安装

    2.1、前提:已安装JDK(版本要匹配),并已设置环境变量
    JMETER_HOME:路径
    %JMETER_HOME%\lib\ ----通用
    %JMETER_HOME%\lib\ext ---仅适用于Jmeter的组件和插件,如果不想把Jmeter的插件库放到ext下面,那么需要在 jmeter.properties 中维护 search_paths

    2.2、启动
    进入Jmeter解压目录的bin子目录
    1)windows环境:双击 jmeter.bat 文件
    2)Linux环境:双击jmeter.sh 文件 (.sh是linux下的对应功能的文件)
    3)Mac OS:进入Jmeter的bin目录,运行 sh jmeter
    PS:查找Jmeter的绝对路径---find / -name Jmeter文件名

    MAC OS.png

    3、Jmeter目录结构

    目录结构.png
    • bin:可执行文件,包含启动、配置等相关命令
      jmeter.log:记录了jmeter在运行时的日志信息(输出、警告、报错等)
      jmeter.properties:核心配置文件,可以修改默认属性,比如,属性log_level.JMeter可以设置改变日志详细度,默认是info,可改为debug或者其它
    • extras:辅助库
    • lib:核心库,包含JMeter用到的各种基础库和插件
    • licenses:包含non-ASF软件的许可证
    • printable_docs :可打印版本文档目录
      其中子目录 usemanual 下是jmeter用户手册,其中component_reference.html是最常用的核心元件帮助手册,也可以直接查看官方文档完整版
    • README.md:Jmeter官方基本介绍

    4、常用组件

    学习Jmeter之前,先了解下Jmeter的基本组件及其作用

    测试计划:根目录,可以理解为老大,所有内容都是基于这个计划,都需要在这个测试计划下创建

    测试计划组件.png

    4.1、线程组
    虚拟用户数,设置Jmeter按照什么场景运行
    是一系列线程的集合,每一个线程都代表一个正在使用应用程序的用户。在JMeter中,每一个线程都意味着模拟一个真实用户向服务器发起请求。

    线程组.png
    • setUp Thread Group:用于执行预测试操作,比如初始化的配置,类似LR中的init
    • tearDown Thread Group:用于执行后测试后动作,比如建立数据库连接后,测试结束需要关闭数据库,类似LR中的end

    比如设置的线程数为50,JMeter将创建并模拟测试50个用户请求到服务器端
    (指的是在线用户数量,并不是并发数量)

    4.2、Sampler
    创建各种请求类型,用来模拟用户请求,在线程组下创建,不和其它元件相互作用,因此不存在作用域的问题

    4.3、后置处理器
    后续操作的子件集合,对发出请求后得到的服务器响应进行处理,或者抓取响应数据,比如,关联动态的cookie,可用于解析响应数据,提取变量,以便后续使用
    作用域---元件在其作用范围内的每一个sampler元件之后执行,取样器被执行后被触发执行的元素。

    例:2个请求A和B,A发出去后得到请求响应,其中的某个参数在请求B中需要用到,参数需要上下传递,这时通过关联进行获取

    再如:每次登录操作,cookie都动态变化,必须每次都捕获动态的cookie才能通过服务器的校验

    4.4、断言(检查点)
    元件对其作用范围内的每一个sampler 元件执行后的结果执行校验,通俗点来说就是判断测试中得到的响应数据是否符合预期

    比如登录成功之后,请求响应信息中肯定会有信息提示成功,通过断言去判断,看看响应头里有没有我的预期结果,有就表示成功了;再如购物网站,手写了登录脚本来验证用户是否登录成功,若登录成功个人中心则会显示用户信息,通过断言来校验

    4.5、监听器
    对测试结果数据进行处理和可视化展示

    • 图形结果以图形展示响应时间
    • 查看结果树显示sampler的详细的请求和返回结果

    4.6、逻辑控制器
    帮用户去定制何时发送请求的逻辑,它可以改变请求发送的顺序,也可以修改请求,比如让请求重复执行等(类似编程语言里的if、for)

    4.7、配置元件
    包含了Sampler下各种Sampler的默认配置设置
    作用域---会影响其作用范围内的所有元件

    4.8、定时器
    默认情况下,JMeter线程没有停留的按顺序执行,为模拟真实且不在短时间内给服务器造成太大的压力,我们在请求之间添加定时器作为思考时间(设置操作之间的等待时间)
    PS:当执行一个sampler之前时,和sampler处于相同作用域的定时器都会被执行,如果希望定时器仅作用于其中一个sampler,则把该定时器作为其子节点加入

    4.9、前置处理器
    用于在实际请求发送之前,对即将发出的请求进行特殊处理,比如修改HTTP协议头、参数化等
    作用域---在其作用范围内的每一个sampler元件之前执行

    作用域举例,如图所示:

    作用域演示.png

    总结:从各个元件的层次结构来判断每个元件的作用域

    5、执行顺序

    配置元件--->前置--->定时器--->Sampler--->后置--->断言--->监听器

    如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

    6、Jmeter插件的安装方法

    在jmeter3.0之前的版本中,插件的安装方法需要自行去找相应的jar包,然后放到对应的目录中。

    jmeter3.0版本之后的,插件的安装步骤为:
    1、下载plugins manager ,放到jmeter的lib下的ext目录中
    2、重启jmeter才可以生效
    3、重启jmeter后,选择菜单【选项】--->【plugins manager】之后在此对话框中进行选择安装

    插件管理.png
    7、优势

    1、开源:Jmeter是完全免费的,并提供了源码可供自定义开发
    2、图形界面模式:提供了方便的图形界面来编辑和开发测试脚本
    3、与平台无关:可以轻易在Windows、Linux、Mac上运行
    4、多线程框架:通过线程组,能够轻易的设置不同测试的并发用户
    5、图形测试结果:提供了图表、表格、树、文件等格式的结果显示
    6、易于安装:Jmeter不需要安装,下载解压即可用。
    7、高扩展性:Jmeter支持用户自定义测试脚本,同样还提供了各种插件
    8、多测试类型支持:支持性能测试、分布式测试、功能测试
    9、仿真模拟:支持多用户并发测试
    10、支持多协议:支持http、jdbc、ldap、soap、jms、ftp等协议
    11、脚本测试:Jmeter支持beanshell和selenium

    相关文章

      网友评论

      本文标题:JMeter(一):基础概念

      本文链接:https://www.haomeiwen.com/subject/nozktftx.html