zoukankan      html  css  js  c++  java
  • 接口压测工具jmeter

    jmeter

        jmeter是apache公司基于java开发的一款开源压力测试工具,是一个较轻量的测试工具。运行需要安装jdk环境,jmeter为免安装软件,

            解压后直接运行jmeter执行脚本即可。它也是跨平台的,支持在windows、linux、macos上使用。

        1 jmeter-http接口脚本基本流程

          添加线程组

          添加http请求

          在http请求中写入url、路径、请求方式、参数

          添加查看结果树

          调用接口、查看返回值

           具体操作见下图示:

          

          有时还需添加cookie和header,只需在【配置元件】里添加【HTTPCookie管理器】和【HTTP信息头管理器】即可,其配置如图示:

          

          cookie的名称、值依据接口文档填写,域需要填写HTTP请求页里的【服务器名称或ip】。

          

          header的名称、值依据接口文档填写。

          添加【查看结果树】

            【添加】-【监听器】-【查看结果树】,具体界面如下图示:

            

            通过【查看结果树】可以查看请求数据,也可查看服务器的响应数据,以此来判断测试结果。

        2 jmeter-参数化

          jmeter参数化有三种方式:

            用户定义的变量

              这种是为了方便管理参数,只能有一个值,比如ip地址。

              在线程组中添加一个用户定义的变量,然后写key、value就可以,key是参数名,value是具体值,调用时使用${key},其中key就是变量名称。

              如下图中变量名称是ip:

              

              

            函数生成器

              可参照一定规则生成数据,比如生成随机数、时间等。

              函数助手可按照规则生成一些参数,常用的参数有随机数__Random、获取当前时间__time、唯一值__UUID。

                随机数__Random,可在指定范围内取随机数

                获取当前时间__time,获取当前系统时间,具体格式为:yyyy-MM-dd HH:mm:ss

                唯一值__UUID,每次生成一个随机的uuid,都是唯一值

                

                

                

                

            从文件中读取

              事先写好数据,然后从文件中读取数据,比如登录接口的账号、密码。

              从文件中读取,需要三个步骤:读取文件、取文件内容里的参数,赋予一个名字、使用值

              从文件读取的话,需要在线程组里添加【CSV Data Set Config】,如下图示:

              

        3 jmeter断言

          断言是用来检查返回接货对不对的,如果对,就代表请求返回正确;如果没有的话,就代表请求结果与预期不一致,并以此来作验证测试是否通过。

          添加方法:【添加】-【断言】-【响应断言】,添加后的界面如下图示:

            

        4 jmeter-关联

          关联是获取到服务器返回的值,保存起来,给别的请求使用,做一些其他处理。

          jmeter关联是通过正则表达式提取器来完成的添加方式为:

            【添加】-【后置处理器】-【正则表达式提取器】,字段详解见下图示:

                     

            通过上面的关联,其他请求使用时,调用${code}就可以获取到关联数据。

            另可通过加载第三方插件来做关联:jp@gc - JSON Path Extractor

             【添加】-【后置处理器】-【正则表达式提取器】,字段详解见下图示:

            

            此种关联方式适用于响应数据为json串的方式,操作上更简单一点。

        5 jmeter-mysql操作

          要操作mysql需要引入第三方jar包,因为jmeter本身不能直接连接mysql,操作mysql需要如下步骤:

            在测试计划里导入jdbc的jar包

            创建数据库连接配置(mysql的url、端口号、账号、密码等)

            写sql语句,执行sql

            查看结果

            具体操作见下图示:

             【测试计划】-【Add directory or jar to classpath】下导入jdbc的jar包

            

            【添加】-【配置元件】-【JDBC  Connection Configuration】

            

            配置mysql连接池名称,要与后面sql请求的【Variable Name】一致

            数据库的url:

              jdbc:mysql://192.168.1.116:3307/bugfree?allowMultiQueries=true

            数据库驱动:

              指定数据库类型是mysql、orcle、sqlserver等,驱动列表如下:

              

            账号密码:

              所连接数据库的账号、密码。

        6 测试结果查看

          【添加】-【监听器】-【聚合报告】,具体参数解释见下图示:

          

          查看结果需关注的几个指标:

            tps,每秒处理的请求数,tps越高说明服务器处理能力越好

            响应时间,每个请求的处理时间

            并发用户数,即并发量

        7 jmeter-linux下运行

          linux下运行jmeter是在jmeter的bin目录下执行jmeter.sh脚本,命令如下:

          sh jmeter.sh -n –t a.jmx -l res.jtl

            -n  代表以没有图形化界面启动

            -t   代表后面是测试脚本

            a.jmx  就是做好的测试脚本

            -l    代表后面是测试结果

            res.jtl  就是测试结果文件

          若要在查看结果树中查看测试结果,只需在【查看结果树】视图中导入这个res.jtl文件即可。

        8 jmeter 添加负载机

          压测过程中,当并发较大,一台机器已经启动不了那么多并发时,需要添加负载机。

          首先在做压力机的机器上启动jmeter的代理:

            jmeter的bin目录下有一个jmeter-server,启动它即可,此文件就是jmeter代理。

          然后在控制机上添加压力机ip:

            jmeter的bin目录下有一个jmeter.properties,打开后找到remote_hosts模块,添加ip后重新启动jmeter,就可以在jmeter里看到压力机了。

            

            

            

            

  • 相关阅读:
    压缩命令
    u盘挂载
    三种不同的空格
    打出圆圈数字①的快捷方法
    循环使用的一个坑
    Python&R:警告信息管理
    Matlab的基本矩阵运算
    R语言-程序执行时间
    Python:n个点的费马问题
    Python网络数据采集(1):博客访问量统计
  • 原文地址:https://www.cnblogs.com/wanghl-3115/p/6880587.html
Copyright © 2011-2022 走看看