jmeter的运用

jmeter开源项目

jmeter最早是用于http/http(web端)的接口测试的工具,拓展到了其他领域的(不同的协议)测试。

postman/requests:还是只支持http/https协议的测试

         postman相对接口测试,更加专业

        requests在接口自动化中更加灵活

jmeter除了接口功能测试之外,还可以实现接口压力测试。

        1个人来发接口请求,就是接口的功能测试

        n个人来发接口请求,就是接口的压力测试

jmeter也提供了GUI界面,来设计接口请求、运行接口测试、压力测试,还可以输出可视化报告。

       java开发的客户端软件,界面其实比postman要更“纯朴”一些。

       jmeter工具,句有更好的跨平台的特性(可以支持windows、macos、linux系统的运行)

Jmeter支持的接口测试协议

            http、https协议      ftp协议     jdbc:java数据库链接协议

jmeter安装与配置

下载:Index of /apache/jmeter/binaries(也可使用提供的安装包)

检查自己的电脑jdk环境:Apache JMeter 5.4.3 requires Java 8+

解压下载的zip压缩文件到D盘根目录下。

环境配置:此电脑-->属性->高级设置-->环境变量配置-->path(system环境)

环境变量配置,到底是配置什么-path变量:

java

python

mysql

为什么要配置这个变量:

cmd-->java/python/jmeter等,报错误,xxx不是内部命令

就是告诉windows系统你的这个命令装在什么位置,让它给你启动起来。

验证jemter是否可用:cmd-->jmeter

jmeter配置

jmeter的bin目录(核心配置目录)的文件:

jmeter.bat: 用于windows下启动jmeter的文件。bat(Windows batch command)

jmeter:用于linux/macos(基于unix)系统下启动jmeter的文件。

jmeter-server.bat:windows下启动肉鸡slave(master是主机,主机要控制肉鸡)的文件。

jmeter-server:liunx/macos下启动肉鸡的文件。

肉鸡是执行主机命令的载体,帮助我们完成性能测试的特点

jmeter-properties:核心配置文件,对jmeter工具的参数设置位置

jmeter支持的语言设置:显示添加language=zh_CN

配置主机和肉鸡的参数:

二、jmeter的常见组件

postman做接口测试就类似于使用集装箱来拼装房屋。

jmeter做接口测试就类似用砖瓦来建房(包括打地基)。

1、常见的组件(完成脚本必须的一些组件)

测试计划:所有的其他的组件都是建立在测试计划上的,是jmeter脚本的开始的组件,也是其他组件存放的容器。

线程组:指的就是人。多少个人?这些人能干多长时间的工作等?代表一定量的并发用户,用来模拟多人的并发请求。

采样器:实际请求的内容(打包的协议报文),包括在线程组内。http采样器、ftp采样器、tcp采样器等。

监听器:查看每个人工作的情况,查看每个采样器运行的状态和结果,比如查看结果树、聚合报告、图形结果显示。

断言:监听器检查的过程合不合格?就是判断请求的结果是否正确的?响应正文断言、json断言。

逻辑控制器:实现条件跳转(if)和循环的(for)

配置元件:提供了配置相关的组件,比如参数化,jdbc配置等

定时器:等待时间的,随机时间定时器,固定定时器,同步点定时器(集合点)。

总结:灵活地拼装上面的组件,形成jmeter的测试脚本。

测试计划,完成整个接口的载体

计划名称:当前计划的名称

注释:解释说明

用户定义变量:全局可用的

其他参数:

独立运行线程组设置的效果:

4、线程组(是一组线程(人))

添加线程组:(完成对线程组数,执行间隔,循环遍数的设定)

线程数:该线程组内有几个人就填几,如果填2,就表示2个线程(人)生成来运行脚本(采样器)。

ramp-up time:启动时间,线程数启动所需要的时间

循环次数:线程运行采样器循环几次(迭代几次)

永远:如果勾选了,就不停止地发送采样器请求。

假设:线程数为10,启动时间为2s,问启动线程的频率为?即5个线程/秒。

假设:线程数为10,循环次数为2(有一个采样器),问总共运行多少次?20

5、采样器(接口实现的地方)

添加采样器,采样器是放在线程组内:

设置参数:

案例中users接口:

案例中的info接口:

6、监听器(记录测试执行的过程和结果)(相当于查看器)

查看结果树的添加:

保存当前计划,并执行当前的脚本:

查看执行结果:

断言(响应断言、json断言)

1、响应断言的添加:

响应断言设置:

匹配模式:

包括:正文中包括子串即为通过,支持正则匹配

        .表示任意一个字符

        .*表示任意0个或多个字符

        .+表示任意1个或多个字符

        ?表示贪婪匹配

        \d表示任意数字

        \w表示任意字符

        [0-9]表示任意数字

        [a-zA-Z]表示任意字母

匹配:响应正文完全相等(匹配),支持正则表达式

equals:响应正文完全相等,不支持正则表达式的

        \["tom","marry","jack"\] fail

        ["tom","marry","jack"] pass

        ["tom","marry" fail

substring:小串,大串套小串的用法,文本框不支持正则

        ["tom","marry","jack"] pass

        ["tom","marry" pass

        .* fail

否:原先匹配结果为fass,则勾选否之后就是fail;否则反过来

与:只要多个断言条件中有一个失败,则整个断言失败

或:只要多个断言条件中有一个通过,则整个断言通过

json断言

        json path tester:调试获取json数据结构中path路径。

        ["jack","123","4"]:$[0]、$[1]、$[2]

        {"status":-1}: $.status

        [{"status":-1},{"status":0}] : $[1].status

添加json断言组件:

设置json断言的参数

参数化脚本数据

就是用外部的数据替换接口中常量的过程,使用的格式:${变量名}

、测试计划中用户定义变量

该变量的使用范围(作用域)是全局的,在该计划的所有的组件中都可以使用该变量。

创建变量和值:

在登录接口中使用用户定义的变量,${ip},${port}

运行、查看结果:

csv文件数据参数化

数据存储在外部文件中,通过csv参数化组件读取数据保存在某个变量中,然后使用变量进行参数化

在外部csv文件中设计数据:(有6组数据)

给线程组添加一个csv数据文件设置组件:

设置csv数据文件设置组件:

配置csv参数化:

987f969307a92e3aaa159245b8324448.png

执行查看结果树:

执行1:设置线程组的线程数为6个,循环1次,结果总共运行6次,每次取csv中一行数据(6个人每人执行一次)

执行2:设置线程组的线程数为1个,循环6次,结果运行6次,每次取csv中一行数据(1个人循环执行了6次)

执行3:设置线程组的线程数为1个,循环8次,数据不足,根据csv中的设置要循环取值。

执行4:设置线程组的线程数为8个,循环1次,数据不足,根据csv中的设置要终止多余线程。

函数助手的功能

jmeter中提供了一些通用的方法,是可以生成参数化的数据的,比如随机数据、随机日期、生成变量读取csv文件中数据等。

启动函数助手:

函数助手提供了大量的方法,我们需要从下拉框中选择要用的方法,填上必要参数,点击生成,即可生成一个变量,这个变量就可以按照其功能进行取值了。

__csvReader函数设置:

在登录接口中做如下参数化设置:

断言设置如下:

执行1:设置线程组的线程数为6个,循环1次,结果总共运行6次,每次取csv中一行数据(6个人每人执行一次)

执行2:设置线程组的线程数为1个,循环6次,结果运行6次,每次取csv中的第一行数据(1个人循环执行第一行数据6次)

执行3:设置线程组的线程数为8个,循环1次,数据不足,循环使用csv文件中的数据。

其他的函数助手的用法:

1、线程编号:${__threadNum}

2、随机数变量:${__Random(10,20,)}

3、随机字符串变量:${__RandomString(5,abcdefghijklmnopq,)}

4、md5加密算法变量:${__MD5(123456,)}

使用jmeter实现HTTP接口测试

主要还是实现get请求和post请求。

1、百度翻译接口(get)

响应正文中的字符以unicode编码显示,如果想转为中文,可以添加beanshell后置处理器

不添加后置处理器也可以直接进行json断言。

2、评论接口(get、referer防盗链)

先创建评论接口的参数:

在添加头管理器:

头管理器中添加referer字段:

添加json断言,运行查看结果树:

3、电商注册接口(post请求)x-www-form-urlencoded

设计电商注册接口采样器的参数:

添加csv配置文件,csv文件中有3组数据,并设置:

添加断言,响应断言:

添加头部字段(不加也不影响):

设置线程数为4,按照要求,最后一个线程要循环使用第一行数据。

4、信互登录接口(post请求)

这个就是一个普通的post接口,和上面的没太多区别。

5、信互图片上传接口(添加cookies管理器)

1、单独实现图片上传接口(不用管登录接口),只不过要在http头管理器中添加一个登录成功的cookie值。

在该接口下添加头管理器,并设置一个cookie

2、先登录再传图片,这时候可以http的cookie管理器,这两个接口就通过管理器建立个关系。

2、先登录再传图片,这时候可以http的cookie管理器,这两个接口就通过管理器建立个关系。

这种方式,就不需要专门添加cookie了,登录请求会自动保存cookie,后面的图片上传接口就从cookie管理器中自动获取最新的cookie值了。

电商后台的相关接口(正则表达式采样)

统一添加一个http请求默认值和cookie管理器。

1、电商后台的首页接口(提供给我们两个登录的必备参数)-get

需要给该请求添加一个后置处理器中的正则表达式提取器:

如果想查看上面info变量的变化请求,可以在线程组中添加一个debug采样器。

2、登录请求

3、商品删除接口-get

7.jmeter中实现验证码接口(token提取,json提取器)

现在要提取json结构响应正文中的imgAuthCodeToken和code字段。

添加json提取器:是放在采样器下的。

配置json提取器,并添加debug采样器言验证数据的正确性。

运行后查看debug采样器的结果,如下即可。

2、云学习登录接口

创建登录接口的请求:

然后添加一个信息头管理器,然后添加上Content-Type:application/json

运行查看结果:

3、云学习首页接口(登录后的首页)

必须是登录成功之后才能正常显示,拿到登录后的token值,后续的接口在信息头管理器中要带上这个token。

首页接口实现:

在登录接口中通过json提取器提取登录的token值

在首页接口中添加头管理器,然后设置Authorization字段和${token}

运行查看结果:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值