【jmeter】接口测试&接口自动化测试

一、接口测试的相关概念

二、市面上的接口架构设计

三、市面上的接口测试工具

四、安装jmeter

安装jmeter前,确保环境已安装JDK,Apache JMeter 5.5 (Requires Java 8+)

1.下载

  • jmeter官网下载,当前最新版为jmeter5.5
  • 下载地址:jmeter官方下载
  • 下载速度很慢,有需要的可以直接联系我发给你下载好的。

2.安装

  • 下载好之后,放到自己期望路径下,直接解压运行即可
  • 运行方式(GUI启动):
    • (1)运行\apache-jmeter-5.5\bin目录下的:ApacheJMeter.jar

    • (2)运行\apache-jmeter-5.5\bin目录下的:jmeter.bat

    • 两种方式没有区别,第一种方式没有cmd弹窗。

3.一些易用性配置

  • (1)汉化
    • 可以进入jmeter中在选择语言,这种方法需要每次进入后都要修改
      【jmeter】接口测试&接口自动化测试_第1张图片
    • 永久修改:
      编辑\apache-jmeter-5.5\bin下的jmeter.properties文件,在截图位置插入:language=zh_CN
      在这里插入图片描述
  • (2)快捷方式
    • 第一步:将\apache-jmeter-5.5\bin目录下的ApacheJMeter.jar或者jmeter.bat发送快捷方式到桌面
      【jmeter】接口测试&接口自动化测试_第2张图片
    • 第二步:此时已经添加,但是可以看到名称显示为:jmeter.bat --快捷方式,而且没有图标,可以做出以下优化:
      • 修改名称
        右键重命名,一般修改为:jmeter,即可
      • 更换图标
        图标的格式一般为ico格式,不能直接用本地的jpg或者png,暴力改后缀也不行,因此需要生成ico格式图标。
        方法:确定源图片在jmeter安装路径:apache-jmeter-5.5\docs\images下可以看到jmeter的一些图标如下
        【jmeter】接口测试&接口自动化测试_第3张图片
        打开在线制作ico图标的网站:在线制作ICO图标
        选择源文件,选择目标尺寸,点击生成
        【jmeter】接口测试&接口自动化测试_第4张图片
        回到桌面快捷方式,右键—属性—更换图标—浏览,选择到刚才制作的ICO图标,应用即可。
        【jmeter】接口测试&接口自动化测试_第5张图片

【jmeter】接口测试&接口自动化测试_第6张图片
至此就可以在桌面上看到美观的图标,点击开始写脚本吧
【jmeter】接口测试&接口自动化测试_第7张图片

这个方法适用于所有的应用换图标

五、目录介绍

六、常用组件

必须组件:测试计划、线程组、取样器
非必须组件:除必须外
在这里插入图片描述
在这里插入图片描述

  • 组件介绍
    • 1.测试计划:起点,所有组件的容器
    • 2.线程组:代表一定数量的用户
    • 3.取样器:向服务器发送请求的最小单元
    • 4.逻辑控制器:结合取样器实现一些复杂的逻辑
    • 5.前置处理器:请求之前的工作
    • 6.后置处理器:请求之后的工作
    • 7.断言:判断请求是否成功
    • 8.定时器:请求之前的延时间隔。固定、随机
    • 9.配置元件:配置信息
    • 10.监听器:收集结果
  • 执行顺序
    测试计划>线程组>配置元件>前置处理器>定时器>取样器>后置处理器>断言>监听器
  • 作用域
    作用于:父组件、同级组件、同级组件下的所有子组件(夫亲、兄弟、儿子、侄子)
    不能作用于:叔父、堂亲

七、执行接口测试

  • 1.拿到接口文档、熟悉接口业务、接口地址、鉴权方式、入参、出参、错误码

  • 2.编写接口测试用例。

    • 思路:
      • 正常场景:输入正确入参,接口正常返回
      • 异常场景:
        鉴权:空、错误、过期、次数限制
        参数:空、类型、长度、大小、错误码覆盖
        其他:黑名单、分页···
  • 3.使用接口测试工具执行。

  • 4.得出测试报告。

八、接口测试实践

1.添加线程组

  • 1.在测试计划下面添加线程组
    线程数等配置一般用于性能测试,在做接口测试、接口自动化测试时,以下值保持默认的1。
    【jmeter】接口测试&接口自动化测试_第8张图片

2.添加一些常用的配置元件

【jmeter】接口测试&接口自动化测试_第9张图片

  • http cookie管理器
    不用做任何配置修改,该配置元件只要放在这里,就可以保证以后的cookies不会丢失
  • .http请求默认值
    可以配置:协议、服务器或IP、端口号。
    配置好后,之后的请求可以省略这些配置。
  • 用户自定义的变量
    全局变量,可以保存一些用户账户信息、环境信息、数据库信息···
  • 必须带请求头的接口,比如需要加客户端类型的接口。还需要添加http信息头管理器
    从fiddler中复制所有请求头添加到http信息头管理器中(可以通过逐个删除来调试到底需要哪些请求头)。

3.添加http请求

  • 线程组—右键——取样器——http请求
    【jmeter】接口测试&接口自动化测试_第10张图片
  • 请求主体,包含以下内容:
    【jmeter】接口测试&接口自动化测试_第11张图片
    • 协议:http/https,根据实际接口配置。可以在【http请求默认值】中配置,后续接口不用再配置
    • 服务器或IP:域名或者IP。根据实际接口配置。可以在【http请求默认值】中配置,后续接口不用再配置
    • 端口号:http:80,https:443根据实际接口配置。可以在【http请求默认值】中配置,后续接口不用再配置
    • 方法:post/get
    • 路径:接口路径,以“/开头”。运行时和服务器/ip拼接后,发送请求
    • 内容编码:
    • 参数:使用parmars的接口,get请求的参数
    • 消息体:消息body,post请求的参数。
    • 文件上传:上传文件

4.添加查看结果树

  • 右键—监听器—查看结果树
  • 作用域:同级组件
    【jmeter】接口测试&接口自动化测试_第12张图片
    【jmeter】接口测试&接口自动化测试_第13张图片
  • 结果树内容:
    • 截图中编号1:此处可以点击切换内容格式
      【jmeter】接口测试&接口自动化测试_第14张图片

    • 截图中编号2:取样器结果
      【jmeter】接口测试&接口自动化测试_第15张图片

    • 截图中编号3:请求页签,包含请求headers和body

    • 截图中编号4:响应页签,包含响应headers和body

九、接口关联

  • 1.正则表达式
  • 2.json提取器

性能测试章节中已经做过介绍,此处不再赘述,有需要可以参考:

十、实现接口业务闭环

  • 业务操作:增、删、改、查
  • 接口的操作不外乎以上四种情况。
  • 增加类型的接口:测试增加后,需要删除
    • 可以避免出现大量垃圾数据
  • 删除类型的接口:先新增,再测试删除
    • 可以避免出现删除的数据不存在而执行失败,保证接口每次都能运行成功
  • 修改类型的接口:先新增,再测试修改,最后删除
    • 可以避免出现修改的数据不存在而执行失败,保证接口每次都能运行成功
  • 查询类型的接口:直接测试查询
    • 查询接口不影响业务闭环
  • 业务闭环好处:
    • 1.可以保证用例每次都可以执行成功。
    • 2.不会对存量业务数据造成误操作。
    • 3.一般情况下目录结构:
      【jmeter】接口测试&接口自动化测试_第16张图片

十一、接口测试断言

【jmeter】接口测试&接口自动化测试_第17张图片

  • 断言字段
    • 响应文本:返回的json数据
    • 响应代码:200、300、400···
    • 响应信息:ok
    • 响应头:
    • 请求头:
    • URL:
    • 文本(文档):返回的json转换为字符串
    • 忽略状态:当有多个断言时,如果有一个断言成功,那么结果是成功
    • 请求数据
  • 模式匹配规则
    • 字符串:响应内容包含需要匹配的字符串,区分大小写,不支持正则表达式
    • 包括:响应内容包含需要匹配的字符串,区分大小写,支持正则表达式
    • 匹配:响应内容完全相等需要匹配的字符串,区分大小写,支持正则表达式
    • 相等:响应内容完全相等需要匹配的字符串,区分大小写,不支持正则表达式

在这里插入图片描述

  • 测试模式
    • 断言内容书写框

常用断言方式:响应数据 + 字符串/包含

十二、接口测试调试方案

  • 1.通过查看结果树查看

  • 2.使用调试取样器

  • 3.jmeter结合fiddler实现调试

    • 把fiddler作为代理。一般在没有接口文档,需要通过抓包获取接口信息时使用

十三、Jmeter数据驱动之——csv参数化处理

应用场景

同一个接口需要执行多组数据时,可以采用csv参数化处理

使用方法

  • 1.在该接口前添加【csv数据文件设置】
    • 在取样器右键—配置元件—csv数据文件设置
    • 准备csv数据,填写路径【jmeter】接口测试&接口自动化测试_第18张图片
    • 配置循环
      • 如果该线程组下只有这一个请求-,那么可以直接设置线程组的循环次数,csv有几组数据,就配置循环几次
      • 如果该线程组下有多个请求,而只有这一个请求需要循环,那么添加一个循环控制器,将需要循环的请求单独放在循环控制器下。循环次数同上。
    • 在请求中使用csv参数
      • 通过${变量名}来读取变量
      • 在请求名称、请求数据、断言···中都可以使用
    • 执行,查看结果树,是否读取csv正确

自动化测试经常会用到

十四、jmeter脚本录制

  • badboy:早已淘汰
  • http代理服务器 (原理:将jmeter作为代理服务器)
    • 测试计划—右键—非测试元件—http代理服务器
    • 录制方法
      • 端口:8888
      • 目标控制器:选一个干净的线程组
      • 设置本机的请求,通过代理服务器发送,配置代理:127.0.0.1:8888
      • jmeter的http代理服务器启动
      • 过滤:包含模式、排除模式。注意格式,前后需要加".*",点需要通用反斜杠\转义,参考下图。
        【jmeter】接口测试&接口自动化测试_第19张图片
        【jmeter】接口测试&接口自动化测试_第20张图片

十五、jmeter执行数据库操作

参考我的另一篇文档,传送门:

十三、bean shell组件和语言规则

十四、非GUI方式运行

十五、集成

你可能感兴趣的:(jmeter,测试工具)