博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Jmeter】基础入门
阅读量:6253 次
发布时间:2019-06-22

本文共 2637 字,大约阅读时间需要 8 分钟。

hot3.png

压力测试工具


  • HP LoadRunner(商业软件)
  • meter(Apache 开源工具)

Jmeter特点


基于Java的开源压力测试工具,轻量级、跨平台,支持多数通信协议

学习资料


  • Jmeter官网:
  • 推荐书籍:零成本实现Web性能测试—基于Apache JMeter

Jmeter 8大组件


  • Configuration Elements:配置元件

    主要为采样器Sampler使用提前完成初始化工作,例如设置基础环境配置,设置公共变量参数

  • Pre Processors:前置处理器

    主要用于在采样器Sampler正式工作之前修改采样器的配置信息或修改变量的值

  • Timers:定时器

    定时器会让作用域内的每1个采样器都在执行前等待1个固定时长,如果不设定延迟,JMeter会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。若为线程组添加了多个定时器,JMeter会将这些定时器时长叠加起来,共同影响作用域范围内的采样器。定时器可作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器

  • Samplers:采样器

    模拟发送请求给目标服务器并返回相应结果

  • Post-Processors:后置处理器

    后置处理器会在采样器发出请求之后做一些特殊操作。若后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据

  • Assertions:断言 用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符

  • Listeners:监听器 监听器提供对JMeter测试期间收集数据的访问方法。

    • "图形结果":监听器会将系统响应时长绘制在1张图片之中
    • "查看结果树":监听器会展示采样器请求和响应的细节,还可以将测试数据导入到文件之中,以供后续分析
      特别注意:不同的监听器使用的数据都是一致的,不同的监听器只是对同1份数据的不同处理显示
  • Logic Controllers:逻辑控制器

    逻辑控制器可以帮助用户控制Jmeter的测试逻辑,可以根据需要对采样器工作进行分组处理,类似编程语言的if/else、while、loop等逻辑工控功能

Jmeter 组件运行顺序


  1. 配置元件(Config Element)
  2. 前置处理器(Pre Processors)
  3. 定时器(Timer)
  4. 取样器(Sampler)
  5. 后置处理器(Post-Processors,结果可用情况下执行)
  6. 断言(Assertions,结果可用情况下执行)
  7. 监听器(Listener,果可用情况下执行)

注意:相同功能元件在同一层级,作用域按照配置的先后顺序执行

Jmeter 元件作用域


作用域由测试计划的的树型结构中元件的父子关系来确定

  1. Sampler:最为最底层原件,不与其他元件进行交互,不存在作用域
  2. Logic Controller:只对子节点采样器和逻辑控制器有效
  3. Sampler/Logic Controller其他元件:若父节点不是Sampler ,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

测试计划案例


  1. 创建测试计划

  2. 创建线程组

  3. 创建采样器:HttpRequest采样器

  4. 创建监听器:View Results Tree

  5. 运行测试计划

模拟测试结果:

正常测试结果:

分析

模拟测试结果和正常测试结果一致,表明测试计划成功运行

Tips:测试代码

package com.zhiwei;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/servlet")public class JmeterServlet extends HttpServlet {    private static final long serialVersionUID = 1L;    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {        String requestParam01 = request.getParameter("name");        String requestParam02 = request.getParameter("passwd");        response.setContentType("text/html;charset=utf-8");        StringBuilder sb = new StringBuilder();        sb.append("Hello " + requestParam01);        if (requestParam02 != null) {            sb.append(";passwd=" + requestParam02);        }        sb.append("!");        System.out.println("后台返回数据:" + sb);        response.getWriter().println(sb);        response.getWriter().flush();        response.getWriter().close();    }    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {        doGet(request, response);    }}

转载于:https://my.oschina.net/yangzhiwei256/blog/3008106

你可能感兴趣的文章
CentOS 配置***客户端
查看>>
线上应用故障排查之二:高内存占用
查看>>
书写「简历」时,需要规避的错误
查看>>
我的友情链接
查看>>
老毛桃 win7
查看>>
continue
查看>>
myeclise10安装svn的方法
查看>>
第四次作业
查看>>
4196. [NOI2015]软件包管理器【树链剖分】
查看>>
Apache Spark源码走读之20 -- ShuffleMapTask计算结果的保存与读取
查看>>
css3 calc()的用法
查看>>
Effective Java --使类和成员的可访问性最小化
查看>>
Ext 4.2.1 教大家如何去规避ext-all和动态加载机制的优缺点
查看>>
83. Remove Duplicates from Sorted List(从有序链表中删除重复节点)
查看>>
异常处理汇总 ~ 修正果带着你的Code飞奔吧!
查看>>
软件测试行业趋势分析和思考
查看>>
简单socket()编程
查看>>
hpu校赛题目
查看>>
商品条形码(JBarcode)Java版(二)
查看>>
POJ-1062-昂贵的聘礼(枚举)
查看>>