接口压测工具--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里看到压力机了。

        

 

 

 

        

        

        

 

posted @ 2017-05-19 22:46  试尝百味  阅读(6230)  评论(0编辑  收藏  举报