zoukankan      html  css  js  c++  java
  • JMeter入门

    Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具;

    本文为JMeter性能测试完整入门篇,从Jmeter下载安装到编写一个完整性能测试脚本、最终执行性能测试并分析性能测试结果。

    运行环境为Windows 7系统,JDK版本为1.8,JMeter版本为5.1.1。

    1、JMeter安装

    1.1 JDK安装

    jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    下载完成后,安装、配置环境变量。

    1.2、JMeter安装

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

    2、下载最新版JMeter:apache-jmeter-5.1.1.zip

    2、下载完成后,解压zip包

    3、配置环境变量

    4、启动JMeter

    若想要界面中文显示,修改bin目录下jmeter.properties文件:language=zh_CN

    到JMeter的解压路径的bin目录下找到jmeter.bat文件,双击运行即可(或管理员权限运行),进入到图形界面(命令行窗口最小化即可,不要关闭);

    打开JMeter之后会看到一个空的测试计划,点击可修改计划名称,添加注释

    2、测试实例

    一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。

    jmeter中 每个测试计划至少需要包含一个线程组,当然也可以在一个计划中创建多个线程组,那么多个线程组之间又会怎样的顺序执行(串行还是并行)?在测试计划下面多个线程是并行执行的,也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler的。

    以http请求百度搜索接口为例:

    1、添加线程组

    右键添加->线程->线程组(Add-->Threads(Users)-->Thread Group)

    一个线程代表一个用户,线程属性:

    线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
    线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
    准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。
    循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
    设置合理的线程数对于能否达到测试目标有决定性的影响。在本例中,要求得到网站首页在20 QPS 负载情况下的响应时间,如果如果线程数量设置的过小,则很可能无法达到设定的QPS要求。另外,设置合理的循环次数也很重要,除了上面介绍的固定循环次数 与永远外;也可以灵活的选择设定测试运行时间。勾选“调度器”,进行调度器配置。

     2、添加http请求

    线程组右键添加->取样器->http请求

     

    一个HTTP请求有着许多的配置参数,下面将详细介绍:
    名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
    注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
    服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。
    端口号:目标服务器的端口号,默认值为80 。
    协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 。
    方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。
    Content encoding:内容的编码方式,默认值为iso8859
    路径:目标URL路径(不包括服务器地址和端口)
    自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
    Use keep Alive:当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。
    Use multipart/from-data for HTTP POST:当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。
    同请求一起发送参数:在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的 名称1=值1)。
    同请求一起发送文件:在请求中发送文件,通常,HTTP文件上传行为可以通过这种方式模拟。
    从HTML文件获取所有有内含的资源:当该选项被选中时,jmeter在发出 HTTP请求并获得响应的HTML文件内容后,还对该HTML进行Parse 并获取HTML中包含的所有资源(图片、flash等),默认不选中,如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的URL指向资源会被下载。
    用作监视器:此取样器被当成监视器,在Monitor Results Listener 中可以直接看到基于该取样器的图形化统计信息。默认为不选中。
    Save response as MD5 hash?:选中该项,在执行时仅记录服务端响应数据的MD5值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该项以减少取样器记录响应数据的开销。

    3、添加查看结果树

    线程组右键添加->监听器->察看结果树

    修改响应数据格式为“HTML Source Formatted”,可以看到具体的响应数据

     4、添加用户自定义变量

    线程组右键添加->配置元件->用户自定义变量

    修改Http请求中参数的值,格式为${word}

    5、添加断言

    http请求右键添加->断言->响应断言

    6、添加断言结果

    http请求右键添加->监听器->断言结果

    运行可看到断言结果成功或失败

    7、添加聚合报告

    线程组右键添加->监听器->聚合报告

    聚合报告参数详解:

    Label:每个请求的名称,比如HTTP请求等
    Samples:发给服务器的请求数量
    Average:单个请求的平均响应时间 毫秒ms
    Median:50%请求的响应时间  毫秒ms
    90%Line:90%请求响应时间 毫秒ms
    95%Line:95%请求响应时间 毫秒ms
    99%Line:99%请求的响应时间 毫秒ms
    Min:最小的响应时间 毫秒ms
    Max:最大的响应时间 毫秒ms
    Error%:错误率=错误的请求的数量/请求的总数
    Throughput:吞吐量,默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数。
    Received KB/sec:每秒从服务器端接收到的数据量
    Sent KB/sec:每秒从客户端发送的请求的数量

  • 相关阅读:
    DOCKER启动失败Job for docker.service failed because the control process exited with error code. See "syste mctl status docker.service" and "journalctl -xe" for details.
    windows查看系统安装的补丁
    vue生命周期
    VUE 图片上传/剪切(vue-cropper)
    mysql性能优化关键点
    element vue-quill-editor 富文本编辑器 安装使用
    Module build failed: Error: Node Sass version 6.0.0 is incompatible with ^4.0.0.
    npm ERR! 404 You should bug the author to publish it (or use the name yourself!) npm ERR! 404 It was specified as a dependency of 'hr_front_end'
    __WEBPACK_AMD_DEFINE_ARRAY__ is not defined
    利用BERT得到句子的表示向量(pytorch)
  • 原文地址:https://www.cnblogs.com/grapelet520/p/11133085.html
Copyright © 2011-2022 走看看