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

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,这是接口测试最常用的工具,从安装到精通!


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

相关推荐
aluluka1 天前
《elisp 每日一练》——Process Sentinel 与 json集成
json·emacs·lisp·elisp
泡海椒2 天前
JQuick-SQL JQuickTable 模型:XML 动态 SQL 的表封装边界
xml·数据库·sql
supabc1232 天前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节
贾伟康2 天前
【健康菜谱助手|06】HarmonyOS ArkTS 烹饪计时器实战:处理倒计时、暂停、恢复和到期反馈
软件测试·移动开发·harmonyos·arkts·arkui
贾伟康2 天前
【健康菜谱助手|05】HarmonyOS ArkTS 购物清单实战:去重食材并同步勾选、数量与清空动作
软件测试·移动开发·harmonyos·arkts·arkui
zzu123zsw3 天前
当 GPU 加速渲染遇上无头组件:拆解 Yororen UI 在 GPUI 生态下的状态解耦与 XML 模板实践
xml·ui·rust·gui·gpui
贾伟康3 天前
【健康菜谱助手|01】HarmonyOS ArkTS 菜谱详情页实战:组织食材、营养、步骤和收藏状态
软件测试·移动开发·harmonyos·arkts·arkui
紧跟先前的步伐3 天前
Go AI Agent 实战 11|请求结构、响应结构与 JSON 解析
人工智能·ai·golang·json
贾伟康3 天前
【健康菜谱助手|04】HarmonyOS ArkTS 一周膳食计划实战:管理日期、餐次与菜谱替换的联动
软件测试·移动开发·harmonyos·arkts·arkui·1024程序员节
贾伟康3 天前
【健康菜谱助手|02】HarmonyOS ArkTS 烹饪步骤实战:把分步操作、完成状态和返回恢复做稳
软件测试·移动开发·harmonyos·arkts·arkui