当前位置: 首页 > news >正文

接口测试

接口测试理论

一 概念

  • 接口概念 : 系统与系统间数据交互的方式 (类似存取款时的验钞机)

  • 接口测试 :

    • 概念 : 校验预期结果与实际结果是否一致

    • 特征 : 接口测试绕过前端,符合质量前移理念,低成本高收益

  • 实现方式 : postman/jmeter/代码python+pytest+requests

HTTP协议

  • 概念 :

    • 超文本传输协议 : 基于客户端和服务器应用层协议

url格式

  • 格式 : 协议://域名:端口号/资源路径?查询参数

    • 协议 : 数据传输的方式

      • http(80)和https(443)
    • 域名(本质IP地址) : 网络地址中,定位一台主机

    • 端口号 : 网络环境中,定位一个进程(应用程序)

    • 资源路径 : 指定要访问的数据资源,没有默认为/

    • 查询参数 : 给数据资源传递的参数,使用k=v键值对的方式

请求行

  • 组成 : 请求方法 URL 协议版本(默认为http/1.1)

    • 请求方法 : get(查) , post(添加,用于注册与登录) , delete(删) , put(修改)

请求头

  • 内部所有数据采用k:v格式

  • Content-Type : 描述请求体数据类型

    • application/json : 请求体为json格式数据

    • application/x-www-form-urlencoded : 请求体为表单格式数据类型

  • 请求体中的数据类型受请求头中的Content-Type的值影响

http响应

  • 收到http请求后,回发响应数据

  • 组成 : 协议版本 状态码 状态码描述

    • 1xx : 指示性信息

    • 2xx : 成功类信息,200 OK

    • 3xx : 重定向类信息

    • 4xx : 语法错误(客户端错误) 404 Not Found

    • 5xx : 服务器端错误

响应头(体) :

  • 数据组织格式为k:v的键值对格式

  • 响应体中 包含测试需要的实际结果,不受请求方法影响.

接口测试流程

  1. 需求分析 : 产品经理产出需求文档

  2. 接口文档解析 : 开发产出

  3. 编写接口测试用例

  4. 编写接口测试脚本

    • 工具生成脚本(postman)

    • python代码编写生成脚本

  5. 执行脚本 , 跟踪缺陷

  6. 生成测试报告

  7. (可选)接口自动化持续集成

解析接口文档

  • 什么是接口文档

    • api文档,描述接口信息
  • 核心目标 :

    • http请求相关数据 : 请求方法 , URL , 请求头 , 请求体(数据类型)

    • http响应数据(预期结果) : 响应状态码 响应体

Postman示例

  • 示例1 : 传递参数查询,在tpshop中查找iphone
    image
    image

  • 示例2 : 提交表单数据
    image
    image

  • 示例3 : 提交json数据
    image

接口用例设计

  • 功能测试:

    • 单功能业务 : 一个业务就对应一个接口,eg : 登录业务---登录接口,注册业务---注册接口,修改员工---修改员工接口

    • 业务场景功能 : 按照用户的使用场景,模拟连续调用多个接口,测试功能正确性

  • 性能测试

    • 响应时长 : 从请求发送到接受服务器响应所需要的所有时间

    • 吞吐量 : 衡量服务器处理并发请求的能力,参考TPS查看

    • 错误率 : 处理请求失败的比率

    • 服务器资源利用率(CPU,内存 IO等): 系统资源使用情况

Postman断言

  • 概念 : 借助postman,程序判断预期结果与实际结果是否一致,断言写在Tests标签中

常用断言

  • 断言响应状态码

  • 步骤 : New Collection ----> New Request ----> Scripts -----> Snippets选中状态码生成对应代码

  • 适当调整test()方法参数和匿名函数中的预期结果

  • 点击send按钮发送请求,执行断言代码,查看断言结果

  • Status code : Code is 200

//断言响应状态码是否为200
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});
pm代表postman一个实例
test()是pm一个方法,有两个参数,// 参数1:在断言结束后给出的文字提示:"Status code is 200"可以修改// 参数2:匿名函数
pm.response.to.have.status(200);
// postman响应结果中应该包含状态码200

关联

  • 解决的问题:应用于多个http请求之间,有数据关联或依赖关系

  • 依赖 : 1个http请求响应结果中的数据,被另一个http请求使用

    • eg : 登录http请求,返回的令牌被添加员工请求依赖(请求头中使用),可以使用postman关联技术
  • 实现步骤 :

A接口响应结果,被B接口依赖

  • 发送A接口请求,得到响应结果

  • 将响应结果关联数据,存入公共容器 [全局变量或环境变量] 中

  • B接口从公共容器中提取数据,发送B接口请求

核心代码

  1. 获取响应结果: var jsonData = pm.response.json();

  2. 将数据设置到全局 环境变量中.

    • 全局变量:pm.globals.set(“全局变量名”,全局变量值),唯一且不可重复定义,整个 postman全局生效的变量.

    • 环境变量:pm.environment.set(“环境变量名”,环境变量值)在特定(生产开发测试环境)下才能使用的变量

  • 示例1 : 请求获取天气接口(B接口),提取响应结果中的城市名(全局变量),将城市名给百度搜索接口(A接口)使用

    • get 方法 获取http://www.weather.com.cn/data/sk/101010100.html数据
      image

    • 在scripts-response响应中定义全局变量

      // 1.获取响应结果
      var jsondata = pm.response.json()
      // 2.一层一层获取
      var city = jsondata.weatherinfo.city
      // 2.将获取结果设置为全局变量
      pm.globals.set("glb_city",city)
      
    • 查看百度获取天气结果
      image

  • 示例2 : 添加员工

    • 登录成功提取令牌,创建新环境并切换,并将令牌保存至环境变量
      image
      image

    • 添加员工,在Headers中写入环境变量
      image

Postman参数化

  • 数据文件简介

    • csv格式

      • 优点 : 组织形式简单,适用于数据量大,数据组织格式简单

      • 缺点 :

        1. 不能测试 bool 类型,postman读取csv文件会将所有非数值类型数组自动添加""变为字符串

        2. 不能存储复杂数据类型元组,列表,嵌套字典

        3. 不支持多少错误无参的接口测试

    • csv导入外部数据文件

      • 数据写入到csv文件中,第一行写入的是数据对应的"字段名",第二行向后依次是对应的数值,数据间用逗号隔开
        image

      • 在postman中选中使用数据文件的用例集,导入数据文件,在runner中导入
        image
        image

    • json格式

      • 优点 : 支持bool类型,支持多少错误无参类型,支持复杂数据类型,适用于数据量较少,数据组织格式复杂

      • 缺点 :

      1. 对于相同数据量,json数据文件大小大于csv文件

      2. 按照语法写入json数据,数据最外层必须是[ ],内部数据用{ },无论是否字符串都可以""包裹值

      3. 适用于测试数据量较少,需要进行参数测试!!!(其它导入步骤同理csv)
        image

  • 示例1 : 查询运营商
    image

  • 导入csv文件测试,并替换字段
    image
    image

  • 测试结果(我这个有问题但不报错,正确结果应该是三个都通过)
    image

生成测试报告

  • 准备工作 :

    • 导出测试用例集.json

    • 导出环境文件json

    • 打开终端

     newman run 测试用例集文件.json -e 环境文件.json -r html --reporter-html-export 测试报告名.html或newman run 测试用例集文件.json -e 环境文件.json -r htmlextra --reporter-htmlextra-export 测试报告名.html
    
http://www.hskmm.com/?act=detail&tid=22

相关文章:

  • 【IEEE出版】第四届传感器技术与控制国际研讨会(ISSTC 2025)
  • OCP、OMSP 和 OLP 是三种常见的光层保护机制的对比
  • 自从切到Qoder开发后,每天都心旷神怡
  • 电子烟的4种屏幕驱动集成语音方案介绍
  • Altair PSIM 2024下载地址与安装教程
  • 解构 MyEMS:开源能源管理系统的核心特性与价值图谱
  • 2025.9.9 树套树 + 分治 刷题日记
  • CF643E Bear and Destroying Subtrees
  • Go语言系统信息获取示例
  • OpenCSG 哈投达成战略合作,加速东北企业AI转型
  • Rocky9和Ubuntu使用pip安装python的库mysqlclient失败解决方式
  • 收录笔记:蜘蛛池,蜘蛛池出租 - 蚂蚁站群
  • 在Spring Boot Admin中根据Nacos的命名空间来区分和管理不同的环境
  • npm 无法加载文件npm.ps1
  • 蜘蛛池出租的使用效果 - 蚂蚁站群
  • REACT
  • 宽输入 低纹波 高效率 宽输入升降压型正负线性电源模块 BSN30WL
  • 【前端开发】windows激活自测可用,office也可激活
  • 核心漏洞开发实战:Win32漏洞挖掘与防护绕过深度解析
  • PostgreSQL 大对象管理指南:pg_largeobject 从原理到实践