Postman相关

1 minute read

Postman API开发与测试 完整学习大纲

一、 Postman 概述与核心价值

  • 1.1 Postman是什么?
    • 定义:一个功能强大的API协作平台,用于设计、开发、测试、记录和监控API。
    • 从API客户端到API平台:单体应用、工作区、API网络、公网。
  • 1.2 核心功能模块
    • API客户端:发送HTTP请求。
    • API设计:遵循OpenAPI/Swagger规范。
    • 自动化测试:编写测试脚本。
    • Mock服务器:模拟API响应。
    • 监控:计划任务与API运行状况检查。
    • 文档:自动生成与发布API文档。
    • 协作:团队工作区、版本控制、权限管理。
  • 1.3 核心概念
    • 工作区 (Workspace):个人、团队、私人和公共工作空间。
    • 集合 (Collection):请求和相关元素的分组容器。
    • 环境 (Environment):包含变量的键值对集合,用于不同上下文(开发、测试、生产)。
    • 变量 (Variables):在不同作用域(全局、集合、环境、局部、数据)中存储和重用值。

二、 入门与环境搭建

  • 2.1 获取与安装Postman
    • 桌面应用(推荐) vs Web版。
    • 下载与安装。
    • 注册Postman账户(启用同步与协作功能)。
  • 2.2 用户界面导览
    • 侧边栏:历史记录集合API环境Mock服务器监控器Flows
    • 主工作区:请求构建器、响应查看器。
    • 顶部栏:新建导入Runner启动协作同步
  • 2.3 创建第一个请求
    • 新建请求选项卡。
    • 选择HTTP方法:GET, POST, PUT, DELETE, PATCH等。
    • 输入请求URL。
    • 点击“Send”并查看响应。

三、 构建与发送HTTP请求

  • 3.1 HTTP方法详解
    • 安全与幂等方法GET(幂等), HEAD(幂等)。
    • 非幂等方法POST, PUT(幂等), DELETE(幂等), PATCH
    • 其他方法OPTIONS, TRACE, CONNECT
  • 3.2 请求组件详解
    • 参数 (Params)
      • Query参数:URL中?后的键值对。
      • Path参数:URL路径中的变量(如/users/{id})。
    • 授权 (Authorization)
      • 无认证、API Key、Bearer Token、Basic Auth、Digest Auth、OAuth 1.0/2.0、AWS Signature、NTLM等。
    • 请求头 (Headers)
      • 常用头:Content-Type, Authorization, Accept, User-Agent
      • 管理头:复制、批量编辑、预设。
    • 请求体 (Body)
      • none: 无正文。
      • form-data: 表单数据,可传文本和文件。
      • x-www-form-urlencoded: 编码的URL表单数据。
      • raw: 原始数据,支持Text, JSON, XML, HTML, JavaScript
      • binary: 上传二进制文件(如图片、PDF)。
      • GraphQL: 发送GraphQL查询。
    • 预请求脚本 (Pre-request Script):在发送请求前执行的JavaScript代码。
    • 测试脚本 (Tests):在收到响应后执行的JavaScript代码。

四、 变量与环境的强大功能

  • 4.1 变量的作用域与优先级
    • 局部变量 (Local):仅在一个请求的迭代中有效,优先级最高。
    • 数据变量 (Data):从外部文件导入,在集合运行时有效。
    • 环境变量 (Environment):在所选环境中有效。
    • 集合变量 (Collection):在整个集合中有效。
    • 全局变量 (Global):在所有请求中有效,优先级最低。
  • 4.2 定义与使用变量
    • 语法:``。
    • 定义方式
      • 在“环境”或“集合变量”编辑器中手动定义。
      • 通过脚本动态定义:pm.environment.set("var", value); pm.collectionVariables.set(...)
    • 访问方式:通过语法引用,或通过脚本:pm.environment.get("var"), pm.variables.get(...)
  • 4.3 环境管理
    • 创建和管理多个环境(如Dev, Staging, Prod)。
    • 快速切换环境。
    • 导出/导入环境配置。

五、 测试与自动化

  • 5.1 测试脚本基础
    • 编写位置:请求/集合的“Tests”标签页。
    • 沙箱:Postman Sandbox(一个Node.js环境)。
    • pm对象:Postman JavaScript API的核心对象。
  • 5.2 常用断言函数
    • 状态码pm.response.to.have.status(code)
    • 响应体包含字符串pm.expect(pm.response.text()).to.include("string")
    • JSON响应检查
      • pm.response.to.have.jsonBody()pm.response.json()
      • pm.expect(pm.response.json().key).to.eql(value)
    • 响应头pm.response.to.have.header("header-name")
    • 响应时间pm.expect(pm.response.responseTime).to.be.below(200)
  • 5.3 更复杂的测试逻辑
    • 使用pm.test(testName, function) 定义测试用例。
    • 使用pm.expect(基于Chai.js BDD语法)进行断言。
    • 动态设置变量(如从响应中提取Token)。
  • 5.4 集合运行器 (Collection Runner)
    • 批量运行集合中的请求。
    • 配置执行顺序、迭代次数、延迟。
    • 使用数据文件(JSON, CSV)进行数据驱动测试。
    • 查看运行结果摘要和详细报告。
  • 5.5 监控器 (Monitors)
    • 创建计划任务,定期运行集合。
    • 设置频率(如每5分钟、每小时)。
    • 配置失败通知(邮件、Webhook)。
    • 查看监控历史与性能趋势。

六、 集合与工作流

  • 6.1 集合的深入使用
    • 创建文件夹以组织请求。
    • 在集合和文件夹级别添加预请求脚本测试脚本(对下属所有请求生效)。
    • 为集合和请求添加描述(支持Markdown)。
  • 6.2 请求的链式调用与工作流
    • 在测试脚本中获取响应数据,并设置为环境/集合变量。
    • 后续请求通过{{variable}}引用该值,实现接口依赖。
    • Postman Flows(Beta):可视化地编排API工作流。
  • 6.3 导入与导出
    • 导入:cURL命令、OpenAPI/Swagger规范、RAML、WADL等。
    • 导出:集合(v2.1推荐)、环境、全局变量。

七、 API设计、Mock与文档

  • 7.1 使用Postman进行API设计
    • 在“API”模块中定义API。
    • 遵循OpenAPI 3.0规范。
    • 定义模式(Schema)、请求、响应、参数。
  • 7.2 Mock服务器 (Mock Server)
    • 作用:前端/客户端开发不依赖后端真实API。
    • 创建:基于集合或API定义生成Mock服务器。
    • 配置示例
      • 为不同请求方法/路径设置Mock响应。
      • 使用动态变量(如{{$guid}}, {{$timestamp}})。
      • 设置响应状态码、头和Body。
  • 7.3 自动化文档
    • 发布文档:为集合或API一键生成美观的Web文档。
    • 实时更新:更改集合后,文档自动同步。
    • 文档定制:添加描述、示例。
    • 评论与反馈:文档查看者可以发表评论。

八、 团队协作与API网络

  • 8.1 工作区协作
    • 个人工作区:仅自己可见。
    • 私人工作区:邀请特定成员。
    • 团队工作区:团队成员共同编辑。
    • 公共工作区:公开分享集合。
  • 8.2 版本控制与更改历史
    • 分支与合并:为集合和API创建分支,提交变更请求。
    • 查看更改历史:回滚到任意版本。
  • 8.3 角色与权限
    • 查看者、编辑者、管理员。
  • 8.4 API网络 (Private/Public API Network)
    • 在组织内或全球范围内发布、发现和复用API。

九、 高级主题与集成

  • 9.1 编写高效的预请求与测试脚本
    • 使用外部库(如Lodash,在沙箱中默认可用)。
    • 处理加密、签名(如HMAC-SHA256)。
    • 生成随机测试数据。
  • 9.2 Newman - 命令行运行器
    • 安装npm install -g newman
    • 运行集合newman run collection.json -e environment.json
    • 生成报告newman run ... -r cli,html,json,junit
    • 与CI/CD集成:Jenkins, GitLab CI, GitHub Actions等。
  • 9.3 代理与捕获请求
    • 配置代理以捕获浏览器/移动设备的HTTP流量。
    • Postman Interceptor 扩展。
  • 9.4 性能测试 (Beta)
    • 使用Postman进行简单的负载测试(注意:非专业压测工具)。
  • 9.5 WebSocket 与 GraphQL 支持
    • WebSocket:建立连接、发送/接收消息。
    • GraphQL:发送查询和变更,自动补全。

十、 实战、最佳实践与资源

  • 10.1 典型工作流程
    • 设计API -> 创建Mock服务器 -> 前端并行开发 -> 后端实现 -> 自动化测试 -> 监控与文档。
  • 10.2 最佳实践
    • 命名规范:为集合、请求、变量使用清晰的名称。
    • 模块化:将通用函数写入集合级的预请求/测试脚本。
    • 善用环境:严格区分不同环境的配置。
    • 文档驱动:为每个请求和参数添加描述。
    • 版本控制:对集合和API使用内置的版本控制。
  • 10.3 常见应用场景
    • API验收测试、回归测试。
    • 微服务接口调试。
    • 第三方API集成验证。
    • 团队间API契约定义与Mock。
  • 10.4 学习资源
  • 10.5 项目实践想法
    • 为一组RESTful API创建完整的集合,包含所有CRUD操作。
    • 实现带有OAuth 2.0授权的自动化测试流程。
    • 使用数据文件驱动,测试一个用户注册-登录-操作-退出的完整流程。
    • 为你的项目API生成并发布一份在线文档。