软件测试接口测试从入门到精通:常见接口类型与数据格式

04 常见接口类型与数据格式 - 认识接口的"语言"

🎯 本章目标:了解各种接口类型和数据格式,掌握JSON和XML的读写,为后续测试实战打下基础。


4.1 接口类型全景图

  • HTTP/RESTful:最常用,JSON格式
  • WebService/SOAP:企业级,XML格式
  • RPC:微服务,Protobuf
  • GraphQL:灵活查询,单一端点
  • WebSocket:实时通信,双向推送
  • 消息队列:异步解耦,Kafka/RabbitMQ

4.2 JSON 数据格式

什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成。

JSON数据类型

  • 基本类型:字符串 "hello"、数字 123 / 3.14、布尔 true / false、null
  • 复合类型:对象 {"key":"value"}、数组 1,2,3

JSON示例:用户信息

json 复制代码
{
  "id": 1,
  "name": "张三",
  "email": "zhangsan@example.com",
  "isVip": true,
  "balance": null,
  "tags": ["developer", "tester"],
  "address": {
    "city": "北京",
    "zipCode": "100000"
  }
}

JSON vs JavaScript对象

特性 JSON JavaScript对象
键名 必须用双引号 可以不加引号
字符串 必须用双引号 单双引号都可以
末尾逗号 不允许 允许
注释 不支持 支持
方法 不支持 支持

JSONPath - JSON的"查询语言"

复制代码
$.store.book[0].title     → 获取第一本书的标题
$.store.book[*].author    → 获取所有书的作者
$.store.book[?(@.price<10)]  → 获取价格小于10的书

4.3 XML 数据格式

什么是XML

XML(eXtensible Markup Language,可扩展标记语言) 是一种标记语言,用于存储和传输数据。

XML结构

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<user>
  <id>1</id>
  <name>张三</name>
  <email>zhangsan@example.com</email>
  <isVip>true</isVip>
  <tags>
    <tag>developer</tag>
    <tag>tester</tag>
  </tags>
  <address>
    <city>北京</city>
    <zipCode>100000</zipCode>
  </address>
</user>

JSON vs XML 对比

特性 JSON XML
可读性 简洁 较冗长
解析速度 快 较慢
数据体积 小 大(有标签)
注释 不支持 支持
Schema验证 JSON Schema XSD
适用场景 Web API、移动App 企业级、金融系统

4.4 SOAP 接口

什么是SOAP

SOAP(Simple Object Access Protocol) 是一种基于XML的协议,用于在网络上交换结构化的信息。

SOAP消息结构

xml 复制代码
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/">
  <soap:Header>
    <!-- 认证信息等 -->
  </soap:Header>
  <soap:Body>
    <getUserRequest>
      <id>1</id>
    </getUserRequest>
  </soap:Body>
</soap:Envelope>

SOAP vs REST

特性 SOAP REST
协议 严格协议 架构风格
数据格式 仅XML JSON/XML/其他
传输层 多种协议 主要HTTP
安全性 WS-Security HTTPS + Token
缓存 不支持 支持
适用场景 金融、企业级 Web、移动App

4.5 GraphQL 接口

什么是GraphQL

GraphQL 是一种查询语言,允许客户端精确地请求所需的数据,避免过多或过少获取。

GraphQL vs REST

REST:GET /users/1 返回所有字段;GET /users/1/orders 需要第二次请求

GraphQL:一个查询获取 name、email 和 orders,只返回需要的字段

GraphQL查询示例

graphql 复制代码
# 查询用户信息(只取需要的字段)
query {
  user(id: 1) {
    name
    email
    orders {
      id
      total
    }
  }
}

响应

json 复制代码
{
  "data": {
    "user": {
      "name": "张三",
      "email": "zhangsan@example.com",
      "orders": [
        {"id": "1001", "total": 299},
        {"id": "1002", "total": 599}
      ]
    }
  }
}

4.6 WebSocket 接口

什么是WebSocket

WebSocket 是一种在单个TCP连接上进行全双工通信的协议,支持服务器主动推送消息。

WebSocket vs HTTP

特性 HTTP WebSocket
连接 短连接/长连接 长连接
通信方式 请求-响应 双向推送
实时性 轮询 实时
适用场景 普通API 聊天、股票、游戏

WebSocket示例

javascript 复制代码
// 建立连接
const ws = new WebSocket('wss://example.com/socket');

// 连接成功
ws.onopen = () => {
  ws.send(JSON.stringify({type: 'subscribe', channel: 'prices'}));
};

// 接收消息
ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log('收到推送:', data);
};

4.7 数据格式转换工具

在线工具推荐

工具 用途 网址
JSON格式化 美化JSON jsonformatter.org
XML格式化 美化XML xmlgrid.net
JSON转XML 格式转换 convertjson.com
Base64编解码 编码转换 base64encode.org
URL编解码 URL编码 urlencoder.org

4.8 本章小结

核心知识点

  • JSON:轻量简洁,键值对结构,最常用
  • XML:标签结构,企业级使用,SOAP基础
  • GraphQL:灵活查询,按需获取,单一端点
  • WebSocket:双向通信,实时推送,长连接

课后练习 📝

  1. 转换题 :将下面的JSON转换为XML格式:{"users": [{"id": 1, "name": "张三"}, {"id": 2, "name": "李四"}]}
  2. 分析题:什么场景适合用GraphQL而不是REST?
  3. 实践题:找一个公开的SOAP API(如天气服务),尝试构造一个SOAP请求。

4.9 下章预告

下一章我们将学习Postman,这是接口测试最常用的工具,从安装到精通!


"数据格式是接口的'语言',掌握它们,你就能读懂任何接口在说什么。"

相关推荐
weixin_4407305013 小时前
内置函数、json文本、pickle二进制
开发语言·python·json
念越15 小时前
接口自动化测试从入门到实战:接口用例设计、Requests、Pytest、YAML、JSON Schema 与 Allure 报告
python·测试工具·自动化·json·pytest
福兮说2 天前
前后端算的 MD5、SHA-256 对不上?编码、换行、BOM、HMAC、JSON 顺序,八个原因逐个实测
前端·javascript·node.js·json·哈希算法
网络毒刘2 天前
MCP 从 0 接入 Cursor:mcp.json 安装配置到最小调用与常见报错
json
小小龙学IT2 天前
Go 语言 encoding/json 标准库深度解析:从 Tag 反射到流式处理
golang·json
李游Leo3 天前
HarmonyOS 7 + Node.js-JSON Schema:审核测试路径与版本事实的一致性门禁【鸿蒙心迹】
node.js·json·harmonyos
泡海椒3 天前
JQuick-Excel JQuickRow 数据准备实战:JObjectConverter、JQuickRow.toRows 与 XML 导出链路
xml·windows·excel
ha_lydms4 天前
MaxCompute中JSON函数
大数据·数据库·阿里云·json·dataworks·maxcompute·odps
LeoCrawls4 天前
Python 读取 JSON 常见报错排查,附完整处理函数
python·json·php
测试者家园5 天前
不写测试用例也能做自动化测试?
自动化测试·软件测试·人工智能·测试用例·智能化测试