JMeter介绍

JMeter是开源的性能测试工具和接口测试工具,工作原理和Loadrunner一样:作为浏览器和WebServer之间的网关,捕获Browser请求和WebServer响应,然后通过多线程模拟用户访问场景,监控系统资源的变化情况从而得到性能的情况。JMeter和Loadrunner相比,不存在质的差异,因其成本的低廉性而被广泛使用。
和Loadrunner等商业工具相比,优点是:成本低廉,灵活性和可扩展性高(加载插件,开放API,ANT自动运行,支持分布式),学习资源和渠道多(有较多学习资源和论坛讨论)。缺点是:对从业人员的要求更高,需要有良好的编程能力,英文能力和分析解决问题的能力。除了易用性,Loadrunner的支持协议更广,图形报表更强,并且支持IP欺骗。

Jmeter主要特点

  1. 多协议支持
  2. 可通过录制回放实现
  3. 100%纯Java应用程序,具备高可移植性
  4. 高可扩展(开源代码,多种插件)。

测试元件

  • 测试计划:测试脚本的根节点,设置整个脚本的基础配置,比如用户定义变量。
  • 线程组:虚拟用户池。
  • 逻辑控制器:控制采样器执行逻辑。
  • 采样器:请求的基本单元,每一种采样器都有多种参数可供设置,用于向服务器发出特定请求并在超时前等待服务器响应。测试人员还可以在采样器的级联节点添加多个配置原件来定制采样器,如果不添加,则采用默认配置。采样器可以是逻辑控制器的子节点,也可以和逻辑控制器处于同一层级。
  • 断言:采样器/逻辑控制器的子节点,验证服务器返回结果是否满足需求,断言的结果可在监听器中查看。如果父节点是逻辑控制器,断言对父节点下的所有采样器都生效。
  • 监听器:收集和展示测试结果,有多种图形展示,监听器可以在任何地方添加,仅收集相同或者更低级别测试元件的数据。
  • 配置元件:设置脚本配置信息,有作用域并且子配置元件的优先级高于父配置元件,作用域规则和断言一样。
  • 定时器:作为采样器或者是逻辑控制器的子项,可让作用域内每一个采样器都在执行前等待一个固定时长,多个定时器的时长会叠加共同影响。
  • 前置处理器&后置处理器: 对执行范围内的采样器,在执行前和执行后做相应的处理
  • 工作台:保存暂时不需要使用的测试元素

测试元件执行顺序规则

  1. 配置元件
  2. 前置处理器
  3. 定时器
  4. 采样器
  5. 后置处理器
  6. 断言
  7. 监听器

逻辑控制器和采样器按照在测试树中出现的顺序执行,其他测试元件依据自身的作用域范围来执行,同一范围内出现,则按先后顺序执行。

线程组配置

ramp-up period: JMeter达到最大线程数需要多长时间.eg: 如果线程数设置为10,ramp-up period设置为20就意味着每2s启动一个线程,20s内启动所有线程并让他们运转起来。如果设定的太短,测试的初始阶段会给予服务器过大的压力;设 定的太长,第一个线程执行完毕的时候最后一个线程可能还没有启动,如何找到合适的Ramp-up? 建议初学者先设置ramp-up=总线程数,后续在根据情况适当调整。如果ramp-up不填,则默认为0,意味着立即启动所有线程。

循环次数和调度:用户亦可配置调度器,启动时间/结束时间搭配使用,JMeter会在每一次循环结束以后查看是否到达结束时间,如果没有,则启动下一轮循环。延迟时间和持续时间搭配使用,当这两个选项启用后会自动的忽略启动时间/结束时间。

Delay Thread creation until needed

JMeter变量:参数化

如何参数化

JMeter属性

全局的属性和变量

高级使用

  • 安装目录层级
  • 配置修改
  • ANT自动运行
  • 插件扩展
  • API定制

JMeter基础知识的更多相关文章

  1. JMeter基础知识系列二

    1.从web服务或其他远程服务的角度来看,Jmeter很像是一款浏览器,但实际他并不是浏览器,Jmeter支持浏览器的部分操作.如:Jmeter不支持hmtl页面中包含的JavaScript脚本.处理 ...

  2. 【Jmeter基础知识】Jmeter的三种参数化方式

    JMeter的三种参数化方式包括: 1.用户参数 2.函数助手 3.CSV Data Set Config 一.用户参数 位置:添加-前置处理器-用户参数 操作:可添加多个变量或者参数 二.函数助手 ...

  3. 【Jmeter基础知识】Jmeter响应断言和断言结果

    一.Jmeter创建一个响应断言 1.步骤:添加--断言--响应断,进入响应断言页面 2.断言内容:可以采用直接去搜索某些文本信息,或者可以去断言某个变量,如图 二.Jmeter创建一个断言结果 1. ...

  4. JMeter基础知识系列三

    JMeter测试结果字段的意义: Label:定义HTTP请求名称. Samples:表示这次测试中一共发出了多少个请求. Average:平均响应时长,当使用了Transaction Control ...

  5. JMeter基础知识系列一

    1.Jmeter简介: Apache Jmeter可以用于对静态和动态的资源(文件.web动态语言-PHP.java.ASP.net.java对象.数据库和查询.FTP服务器等)的性能进行测试.最初用 ...

  6. 零成本实现WEB性能测试(二)JMeter基础知识

    特点: 支持多种服务类型进行测试,包括: Web-Http,HTTPS SOAP Database via JDBC LDAP JMS Mail-POP3 & IMAP 支持录制回放方式获取脚 ...

  7. Jmeter 接口测试知识梳理——应用基础篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! Jmeter 接口测试知 ...

  8. JMeter性能测试的基础知识和个人理解

    JMeter性能测试的基础知识和个人理解 1. JMeter的简介   JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...

  9. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

随机推荐

  1. BZOJ 3674: 可持久化并查集加强版

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3674 题意:三种操作:(1)合并ab所在集合:(2)查询ab是否在一个集合:(3) ...

  2. herf窗口点击跳转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. How to crack interviews ...

    Code practice: Leetcode: www.leetcode.com HackerRank: www.hackerrank.com Topcoder: https://www.topco ...

  4. 2013 Multi-University Training Contest 10

    HDU-4698 Counting 题意:给定一个二维平面,其中x取值为1-N,y取值为1-M,现给定K个点,问至少包括K个点中的一个的满足要求的<Xmin, Xmax, Ymin, Ymax& ...

  5. OC面向对象及继承

    1. 面向对象它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中.面向对象的编程语言使得复杂的工作条理清晰.编写容易.说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言. ...

  6. (六)动手写第一个shell

    1.编辑器.编译器.运行方法(脚本的3种执行方法)(1)shell程序是文本格式的,只要是文本编辑器都可以.但是因为我们的shell是要在linux系统下运行的,所以换行符必须是'\n',而windo ...

  7. 【Todo】【转载】Spark学习 & 机器学习(实战部分)-监督学习、分类与回归

    理论原理部分可以看这一篇:http://www.cnblogs.com/charlesblc/p/6109551.html 这里是实战部分.参考了 http://www.cnblogs.com/shi ...

  8. 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习

    下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...

  9. NYOJ 298 点的变换

    题目链接:298 点的变换 这题放在矩阵快速幂里,我一开始想不透它是怎么和矩阵搭上边的,然后写了个暴力的果然超时,上网看了题解后,发现竟然能够构造一些精巧的矩阵来处理,不得不说实在太强大了! http ...

  10. Poco C++——HTTP的post请求和get请求

    两种请求都需要包含头文件: #include <iostream> #include <string> #include "Poco/Net/HTTPClientSe ...