使用 Postman 自动化 API 测试

2025年2月3日 | 阅读 18 分钟

引言

API 测试

API(应用程序编程接口)是一组指南和过程,应用程序可以通过使用 API 相互交互。API 指定了可用的方法和数据格式,应用程序可以使用它们来请求和共享信息。API 作为数据的通道,促进了不同软件系统之间顺畅的通信和交互。

API 测试在软件开发中的重要性

API 测试是软件开发过程中不可或缺的一部分,它确保 API 正常、可靠且安全地运行。与专注于用户界面和用户交互的传统 UI 测试不同,API 测试处理的是软件架构的业务逻辑层。这种测试的必要性有多种原因。

  • 早期发现问题: 通过在开发早期进行 API 测试,开发人员可以在问题影响最终用户之前发现并解决它们。
  • 增强测试覆盖范围: 通过直接的 API 测试,测试人员可以覆盖更多的测试场景,包括 UI 测试可能忽略的边缘情况。
  • 提高性能和可靠性: 对 API 进行广泛测试可确保其在各种场景下都能有效运行,并能承受预期和意外的负载。
  • 安全保障: API 测试涉及评估安全机制,包括权限和身份验证,以确保敏感数据的安全。

自动化 API 测试的好处

在现代软件开发中,自动化 API 测试是一种重要的方法,因为它比手动测试提供了多种优势。

  • 效率和速度: 自动化测试比手动测试快得多,可以实现快速反馈和缩短测试周期。
  • 一致性和可重复性: 自动化测试可产生可重复的结果,并消除了手动测试中出现的潜在人为错误。它们可重复执行,以便您根据需要获得一致的结果。
  • 持续集成和交付 (CI/CD): 自动化有助于将 API 测试无缝集成到持续集成和交付 (CI/CD) 管道中,从而实现持续测试和代码变更部署。
  • 可扩展性: 自动化测试适用于复杂的系统,因为它可以轻松扩展以适应大量的测试用例和不同的测试环境。
  • 成本效益: 随着自动化测试的积累,与手动测试相关的成本会降低,使测试人员能够专注于更重要的任务。

Postman 简介

Postman 是一款流行的 API 开发和测试工具,可简化 API 的开发、测试和维护过程。Postman 最初是 Chrome 浏览器的一个插件,现已发展成为一款功能丰富的桌面程序,可在 Windows、macOS 和 Linux 上运行。它对开发人员和测试人员都很有用,提供了一个易于使用的界面来创建和执行 API 调用。

Postman 的主要功能

  • 请求构建器: 使用 Postman 用户友好的界面,可以通过各种 HTTP 方法(GET、POST、PUT、DELETE 等)快速轻松地创建和自定义 API 请求。
  • 集合: 通过将 API 请求分组到集合中,用户可以更好地管理和重用他们的测试用例。
  • 环境和变量: Postman 支持使用环境和变量,使用户能够将值注入请求并动态管理不同的设置。
  • 测试自动化: Postman 强大的脚本功能允许用户创建 JavaScript 测试脚本,以自动执行 API 响应的验证。
  • 模拟服务器: Postman 可以使用模拟服务器来模拟 API 响应,使开发人员即使在实际 API 不可用时也能测试他们的应用程序。
  • 协作工具: Postman 的协作功能包括共享工作区、版本控制和实时通信,这些功能可促进团队合作并提高生产力。

使用 Postman 进行 API 测试的优势

  • 易用性: Postman 用户友好的界面使非技术人员也能轻松创建和管理 API 调用。
  • 全面的测试能力: Postman 的全面测试能力涵盖了各种测试场景,从基本的验证检查到复杂的自动化测试套件。
  • 与 CI/CD 管道集成: Postman 的命令行伙伴 Newman 可以轻松地与持续集成和开发管道集成,以便将自动化测试作为该过程的一部分。
  • 丰富的文档和社区支持: Postman 为用户提供大量工具,包括教程、丰富的文档和一个活跃的社区,以帮助他们学习和解决问题。
  • 免费和专业服务: 个人开发者、小型团队和大型公司都可以使用 Postman 的免费和付费服务。

发送请求和接收响应

使用 Postman 发送请求和查看响应是一个简单的过程。

  • 发送请求: 在请求构建器中,选择“发送”按钮。
  • 查看响应: 响应将显示在请求构建器下方的响应查看器中。

理解响应状态码

状态码可洞察 API 请求的结果。

  • 2xx(成功)
    • 200 OK:请求成功。
    • 201 Created:资源已成功创建。
  • 4xx(客户端错误)
    • 400 Bad Request:请求无效。
    • 401 Unauthorized:需要身份验证。
    • 404 Not Found:未找到请求的资源。
  • 5xx(服务器错误)
    • 500 Internal Server Error:服务器遇到错误。
    • 503 Service Unavailable:服务不可用。

查看响应数据和标头

Postman 提供响应的详细信息。

  • 响应正文: 显示 API 返回的 JSON 或 HTML 数据。
  • 标头: 要查看响应标头,请在响应查看器中选择“标头”选项卡。
  • 其他信息: Postman 还提供大小、状态码和响应时间。

在 Postman 中组织 API 测试

仔细组织您的 Postman API 测试对于保持测试套件的整洁、可管理和可扩展至关重要。

集合和文件夹

创建集合和组织请求

Postman 中的集合用于对 API 请求进行分组。这使得您可以与团队成员共享请求,按顺序处理多个请求,并保持工作井井有条。

  • 打开 Postman 程序。
  • 创建一个新的集合。
  • 从左侧边栏选择“集合”选项卡。
  • 点击“新建集合”按钮。
  • 为您的集合输入名称和描述。
  • 点击“创建”按钮。

将请求添加到集合

  • 在新建的集合中选择“添加请求”按钮。
  • 确保请求的正文、标头、HTTP 方法和 URL 都正确。
  • 为请求输入一个相关的名称并保存。

添加文件夹以获得更好的结构

  • 集合中的文件夹可以将相关的请求链接在一起,这有助于进一步组织请求。对于拥有多个端点的较大项目尤其有用。
  • 创建文件夹
    • 右键单击要添加文件夹的集合。
    • 选择“添加文件夹”。
    • 输入文件夹的名称和描述。
    • 点击“创建”。
  • 在文件夹中组织请求
    • 将现有请求拖放到相应的文件夹中。
    • 或者,通过右键单击文件夹并选择“添加请求”来直接将新请求添加到文件夹中。

使用集合的优势

使用文件夹和集合有以下好处:

  • 更好的组织: 保持工作区整洁,并更容易查找和管理相关请求。
  • 可重用组件: 导出集合并与他人共享可以促进团队合作。
  • 自动化: Postman 的集合运行器或 Newman 需要集合才能自动化测试。
  • 版本控制: Postman 与 Git 等版本控制系统集成,以实现集合的版本控制和管理。

环境和变量

Postman 环境允许您为各种设置(如生产、暂存和开发)创建一组唯一的变量。这使得切换上下文变得简单,而无需更改您的请求。

1. 创建新环境

  • 从左侧边栏选择“环境”选项卡。
  • 点击“添加”选项。
  • 为环境命名。

2. 添加环境变量

  • 要添加新变量,请在环境设置中单击“添加”。
  • 设置变量的名称和值(例如,`base_url` 和 `https://api.dev.example.com}`)。
  • 继续添加所需的变量。
  • 选择“保存”。

3. 激活环境

  • 在 Postman 的右上角环境菜单中,选择所需的环境。

使用环境和全局变量

  • 引用变量: 在请求中引用变量时(例如 `{{base_url}}/endpoint`),请使用双大括号。
  • 测试脚本和预请求: 使用预请求或测试脚本动态设置或修改变量。

管理变量的最佳实践

  • 有意义的名称: 为变量指定有意义的名称,以避免混淆。
  • 正确作用域: 将全局变量用于跨上下文使用的值,并将环境变量用于与特定环境相关的值。
  • 保护敏感信息: 请勿将密码或令牌明文存储在变量中。而是使用 Postman 内置的秘密管理功能或环境加密功能。
  • 文档中的变量: 清楚地说明每个变量的目的,尤其是在与其他团队成员共享集合时。

在 Postman 中编写测试

Postman 脚本

Postman 中的脚本是可以在请求之前和之后执行的小段 JavaScript 代码。这些脚本可用于执行复杂逻辑、验证响应和设置先决条件。Postman 脚本主要分为两类。

  • 预请求脚本: 这些脚本在实际发出请求之前运行。通常,它们用于设置请求所需的任何先决条件或预处理,例如创建令牌、修改请求内容或设置动态变量。
  • 测试脚本: 这些脚本在请求完成之后执行。它们验证响应是否满足预定的标准。这可能包括检查标头、响应正文、状态码、响应时间等。

用于 Postman 脚本的 JavaScript

JavaScript 是一种灵活且流行的编程语言,适用于 Postman 脚本。即使您不是 JavaScript 专家,也可以编写有效的 Postman 脚本。您只需要掌握一些基础知识。

  • 变量: 用于存储数据值。例如:`var statusCode = pm.response.code;`
  • 条件: 使用 `if` 语句根据特定条件执行操作。
  • 函数:将代码封装到可重用的块中。

创建基本测试

为响应状态码编写断言

断言是 Postman 测试的基础。它们用于确认响应满足特定要求。

在此脚本中,使用 Postman 函数 `pm.test` 来编写测试。测试的描述性名称是第一个参数,测试逻辑包含在第二个参数的函数中。

验证响应数据和标头

除了状态码,您可能还想验证响应和标头中提供的数据。

  • 验证响应正文
  • 验证标头

常用测试代码片段

Postman 提供了许多内置的代码片段,以帮助您开始编写常见的测试场景。

  • 响应时间
  • 响应正文包含字符串

高级测试技术

循环遍历数据集

在更复杂的情况下,可能需要使用不同的数据集多次执行相同的请求。您可以使用数据文件(CSV 或 JSON)和 Postman 的集合运行器来实现这一点。

  • 数据文件 (data.json)
  • 测试脚本

在测试中使用动态变量

使用动态变量可以增强测试的灵活性和能力。您可以定义自己的动态变量,也可以使用 Postman 随附的变量。

请求和测试链式调用

将一个请求的信息用于后续请求称为“链式调用”请求。当您需要执行一系列步骤时,这非常有用。

1. 第一个请求(登录)

2. 第二个请求(使用令牌)

这些方法使您能够在 Postman 中编写全面可靠的测试,以确保您的 API 在各种场景和环境中按预期运行。

使用 Postman 自动化测试

Newman 简介

Newman 是 Postman 的命令行集合运行器。借助它,您可以从命令行启动和自动化 Postman 集合。此工具支持计划和自动化的 API 测试,对于将 API 测试集成到持续集成 (CI) 和持续部署 (CD) 管道中特别有用。

安装 Newman

在安装 Newman 之前,您需要在计算机上安装 Node.js。安装 Node.js 后,使用以下命令通过 npm(Node 包管理器)安装 Newman。

通过全局安装 Newman,您可以从任何位置在终端访问它。

使用 Newman 运行 Postman 集合

要使用 Newman 运行 Postman 集合,您需要将集合导出为 JSON 文件。获取 JSON 文件后,使用以下命令在 Newman 中运行它。

您可以定义其他选项,例如报告器和环境变量。例如,您可以使用环境文件运行集合并生成 HTML 报告,

CI/CD 集成

  • 将 Postman 测试集成到 CI/CD 管道: 将 Postman 测试集成到持续集成和交付 (CI/CD) 管道中是自动化 API 测试作为构建和部署流程一部分的一种方式。这可以确保您的 API 保持可靠和高效,并且对代码库的任何更改都不会干扰现有功能。
  • 设置自动化测试工作流: 要设置自动化测试工作流,您需要配置您的持续集成/持续交付解决方案,在构建或部署时执行 Newman 命令。例如,Jenkinsfile、.gitlab-ci.yml 或 GitHub Actions 工作流 YAML 文件是您会添加 Newman 命令的 CI/CD 配置文件。

常用 CI/CD 工具示例

  • Jenkins:在 Jenkins 中,您可以添加一个构建步骤,在 Jenkins 管道中运行 Newman。
  • GitLab CI:在 GitLab CI 中,您可以配置您的 .gitlab-ci.yml 文件,包含一个用于运行 Newman 的作业。
  • GitHub Actions:在 GitHub Actions 中,您可以定义一个工作流 YAML 文件,在 CI/CD 管道中运行 Newman。

计划和监控测试

Postman 监控允许您定期计划和执行您的集合。这有助于您定期验证 API 的可靠性和性能。通过转到 Postman 应用程序并设置监控器,选择您要监控的集合。

  • 从菜单中选择“监控器”,然后选择“创建监控器”。
  • 根据需要调整环境、时间表和其他变量。
  • 通过保存监控器,您可以设置它在指定的时间间隔运行您的集合。

为测试失败设置警报和通知

可以将 Postman 监控器设置为在测试失败时发送通知和警报。您可以连接到 Slack、PagerDuty 或 Microsoft Teams,或者设置电子邮件通知,以获取实时警报。要设置警报,

  • 选择监控器的设置。
  • 点击“通知”,然后选择您喜欢的通知渠道。
  • 设置将触发警报的参数(例如,每次运行都触发,仅在失败时触发)。

监控 API 健康状况的最佳实践

  • 频繁更新测试: 确保您的测试反映最新的 API 更改。
  • 使用有意义的测试名称: 为您的测试命名,以便于故障排除。
  • 监控关键端点: 密切关注对应用程序运行至关重要的端点。
  • 检查趋势: 定期查看报告,以发现性能模式和任何问题。
  • 优化测试频率: 选择一个既能充分测试又能平衡系统资源使用的监控频率。

遵循这些准则将有助于确保持续、自动化和彻底的 API 测试,从而提高 API 的性能和可靠性。您还可以从 Newman 和 Postman 监控中受益。

Postman 中的报告和分析

生成测试报告

Postman 具有集成的报告功能,可让您以易于理解和结构化的方式查看测试结果。集合完成后,Postman 会提供测试结果的概述,其中包括响应时间、发现的任何问题的详细信息以及每个测试的状态(通过或失败)。这种实时反馈对于及时发现 API 问题至关重要。

自定义 Newman 报告

Postman 的命令行伙伴 Newman 允许您直接从终端运行和管理 Postman 集合。创建自定义报告的功能是其强大的一个方面。Newman 提供多种报告格式,如 JSON、HTML 和 CLI。您可以使用 Newman 的报告器来自定义报告。

  • HTML 报告器: 创建全面且具有视觉吸引力的报告,您可以与相关方共享。为了获得更多定制,您可以使用 npm 包安装更多 HTML 报告器。
  • JUnit 报告器: 有助于与 CI/CD 工具集成 JUnit XML 格式。
  • 自定义报告器: 如果预安装的报告器不满足您的需求,您可以使用 Newman 创建自己的报告器。

要使用 Newman 生成报告,

此命令将为指定集合生成 HTML 和 CLI 格式的报告。

导出和共享测试结果

导出数据对于与利益相关者和团队成员共享测试结果或将其集成到其他工具中至关重要。使用 Postman 和 Newman,有几种方法可以导出测试结果。

  • 从 Postman 导出: Postman 应用程序允许您手动导出集合运行的结果。这对于即时报告和共享很有用。
  • 使用 Newman: 在使用 Newman 运行集合时,您可以将输出路由到文件。
  • 集成到 CI/CD 管道: 将 Newman 报告集成到 CI/CD 管道中,可以实现测试结果的自动化报告和监控。

此命令允许您以 JSON 格式导出测试结果,以便进行处理或与其他人报告系统集成。

分析测试结果

如何解读测试报告中的数据对于理解 API 的功能和状态至关重要。

  • 通过/失败状态: 对已成功或失败的测试进行高级总结。这有助于快速识别问题区域。
  • 响应时间: 通过检查响应时间可以定位性能瓶颈。

识别常见问题和趋势

  • 频繁失败: 反复失败的测试表明存在需要解决的持续问题。这被称为频繁失败。
  • 性能下降: 随着响应时间的延长,可能会出现需要调整的性能问题。
  • 间歇性问题: 行为不定的测试,时而通过时而失败,可能是网络或环境稳定性的问题。

基于测试结果的持续改进

分析测试结果的最终目标是促进持续改进。

  • 根本原因分析: 深入调查以确定重复失败的根本原因,并实施纠正措施。
  • 优化性能: 应用从响应时间分析中获得的见解来提高 API 性能。
  • 重构测试: 考虑重构被证明有问题的测试,以提高其稳定性。
  • 修订文档: 与团队讨论任何更新或更正,并将其包含在 API 文档中。

使用 Postman 进行 API 测试的最佳实践

设计有效的测试用例

  • 在目标中清楚地说明每个测试用例的预期结果。这包括定义预期的输入、预期的输出和 API 端点。
  • 简单性: 创建易于理解和更新的测试用例。避免在一个测试用例中使用过多的逻辑。
  • 描述性名称: 为测试用例提供描述性名称,以帮助您立即理解其目的。例如,“Test_User_Creation_With_Valid_Data”比“Test1”更具信息量。
  • 详细描述: 在测试用例中包含描述以提供上下文。这将帮助其他人理解测试的目的和预期行为。

覆盖不同的测试场景

为了确保 API 的可靠性,请尽可能多地覆盖场景。通过正面测试验证有效输入是否导致 API 按预期运行。例如,可以创建具有准确信息的客户。

  • 负面测试: 检查 API 如何处理无效或意外的输入。这可能包括使用错误的数据类型、丢失的字段或未经授权的访问尝试进行测试。
  • 边界测试: 使用边界值来测试 API 的限制。例如,如果端点支持 1 到 100 个字符的字符串,则测试 0、1、100 和 101 个字符。
  • 性能测试: 评估 API 在负载下的性能。发送大量请求以查看 API 是否保持合理的响应时间可能很重要。

避免 API 测试中的常见陷阱

要提高测试的可靠性,请避免这些常见问题。建议避免在测试脚本中硬编码数据。而是使用环境和变量来提高测试的灵活性和可重用性。

  • 忽略错误处理: 确保您的测试考虑了各种错误场景,并确认 API 提供了正确的错误消息和状态码。
  • 忽略依赖性: 认识到测试之间的相互依赖性。确保测试可以独立执行,而不管先前测试建立的条件如何。
  • 忽略安全性: 检查与未经授权访问、SQL 注入和跨站脚本 (XSS) 相关的漏洞。

维护测试脚本

随着 API 的发展,保持测试脚本的更新至关重要。

  • 定期更新:定期审查和更新测试脚本以反映 API 中的更改。这包括添加新端点、更新请求参数和修改预期响应。
  • 自动化:使用自动化工具检测 API 架构中的更改并相应地更新测试脚本。Postman 内置的 API 架构支持可以帮助实现这一点。

重构和优化测试脚本

通过优化和重构,您的测试脚本将保持可管理和有效。

  • 可重用代码: 将共享逻辑分解为可重用的模块或函数。这减少了重复,并简化了脚本维护。
  • 简化逻辑: 简化复杂的测试逻辑,使其更易于理解。将复杂的测试分解为更小、更易于管理的组件。
  • 性能优化: 使测试脚本尽可能高效。这可能包括简化数据处理或减少不必要的查询。

测试脚本的版本控制

当涉及到对测试脚本的修改时,维护版本控制至关重要。

  • 使用 Git: 使用 Git 等版本控制系统跟踪测试脚本的修改。这使您可以更有效地与团队成员协作,并在需要时回滚到早期版本。
  • 分支策略: 使用分支策略来组织和管理不同的测试脚本迭代。例如,使用独立的分支用于开发、测试和生产。

与团队成员协作

与团队共享资源是高效团队合作的必要部分。

  • Postman 工作区: 与您的团队共享环境和集合。工作区为您的团队提供了一个协作进行 API 测试的中心位置。
  • 导出和导入: 导出环境和集合以与其他团队成员共享。这确保所有用户都可以访问最新的测试脚本和设置。

通过 Postman 工作区协作

Postman 工作区简化了团队的协作。

  • 实时协作: 工作区促进团队成员之间的实时协作进行 API 测试。一个团队成员的更改会立即对其他成员可见。
  • 基于角色的访问: 通过在工作区内分配角色和权限,限制谁可以查看、更新或管理测试环境和脚本。

有效利用 Postman 的协作功能

利用 Postman 的协作工具来改善团队动态。

  • 注释和文档: 使用 Postman 的注释和文档为您的测试脚本提供背景信息和理由。这有助于团队成员理解每个测试的目的和功能。
  • 变更跟踪: Postman 的变更跟踪功能可监控对测试脚本和集合所做的更改。这有助于审核修改并了解您的测试是如何发展的。
  • 通知: 配置警报以接收共享集合和环境修改的更新。这可确保团队中的每个人都了解任何进展,并能做出适当的响应。

结论

总之,Postman API 测试自动化提供了一种快速有效的方法来确保 API 的运行和可靠性。通过遵循最佳实践,包括设计有效的测试用例、维护测试脚本以及与团队成员协作,组织可以获得广泛的测试覆盖范围、改进的测试维护和增强的团队沟通。通过创建简单明了的测试用例并保持测试脚本与 API 更改同步并进行性能优化,测试人员可以准确地评估 API 在各种情况下的行为,确保它们继续按预期运行。使用 Postman 工作区与团队成员协作可以实现实时协作,促进资源共享和高效沟通。采用这些推荐的实践可以提高 API 测试的整体质量,并有助于软件开发项目的成功。团队可以自信地使用 Postman 强大的功能和协作能力来实现 API 测试的自动化,最终实现更快的发布周期、更短的上市时间和更高的客户满意度。