测试是软件开发的标准动作。没有测试,开发者既无法确认产品能用,也无从发现和根除 bug。无论是完整应用,还是支撑应用的软件组件,都应纳入测试流程。API 也不例外——它已是当下最流行应用与平台的底层组件,让不同软件模块用标准化语言互相通信,大幅降低「让它们对话」的成本。既然 API 如此关键,理应与任何其他软件一样被严格测试。
API 不是写完就完事——它掌管了应用大半功能,理应像其他组件一样被严格测试。本文编译自 Nordic APIs(2019-10-02,作者 Cassy Hathaway)的 9 条 REST API 测试最佳实践,覆盖工具选型、冒烟/健全测试、生产环境模拟、响应留存、负面测试、Mock、去依赖、安全与 SLA。
测试是软件开发的标准动作。没有测试,开发者既无法确认产品能用,也无从发现和根除 bug。无论是完整应用,还是支撑应用的软件组件,都应纳入测试流程。API 也不例外——它已是当下最流行应用与平台的底层组件,让不同软件模块用标准化语言互相通信,大幅降低「让它们对话」的成本。既然 API 如此关键,理应与任何其他软件一样被严格测试。
REST(Representational State Transfer)是一种 API 架构风格,是 Web 应用与服务的主流设计范式。符合 REST 的 API 称为 REST API,它们通过 HTTP 让应用与服务访问服务器上的资源,常用方法包括:GET(取资源)、POST(建资源)、PUT(改资源)、DELETE(删资源)。例如 Instagram API 里,GET 拉取某张图、POST 发布内容、PUT 更新、DELETE 删除。理解这套基础,才有下面 9 条测试实践。
测试 API,专业工具必不可少。好的测试工具能轻松测量、追踪 API 的性能与功能;强大的工具还提供「多步测试场景」「自动化文档」等附加能力。许多工具可免费下载,也有需付费的。常见选择包括 Postman、SoapUI、REST Assured、Karate 等。关键不是工具本身,而是用它能跑通「功能 + 性能 + 文档」的闭环。
新 API 上测试台,理想的第一步是冒烟测试(smoke test):快速验证代码、确认基本关键功能可用。典型冒烟步骤:调用 API 看是否响应;用常规量数据看是否返回正确 schema 的负载;再用更大量数据重复;最后测它与该交互的其他 API/组件。先冒烟再全测,能快速定位大错、缩短整体测试时间。接着是健全测试(sanity test):确认冒烟结果在 API 主用途语境下「说得通」——比如汇率 API 不该返回一个离谱的数值。
测试阶段应尽量模拟 API 在正式发布后会遇到的真实条件。只有这样,测试结果才能真实反映 API 能否正确工作、能否在目标环境里达标。这也能提前暴露性能问题。
很多开发者在测试时随手丢弃 API 的响应,这是错误做法。这些响应实质上是「该构建版本下 API 行为的基准」。将来 API 改了很多次、某次改动引出错误时,你可以回看旧版本的保存响应,精准定位是哪次修改惹的祸。把响应留档,就是给未来排错留线索。
对「正向响应」(输入合法数据、看请求是否完成)的测试是家常便饭;但负面测试应同等认真。它检验 API 面对错误/非法数据时能否优雅处理——比如返回错误码而非硬崩或卡死。这既关乎应用的完整与优雅,也照顾了用户的误操作。
测试常要拉上一堆关联组件才自然,但有时某些组件甚至其他 API 在测试期缺失或不可用,导致意外延误。用 Mock 替身顶上即可化解:模拟组件不仅能站岗,还能被定制出「刚好需要的理想响应」来完成测试流程。这正是前后端并行开发、契约测试的核心手段。
除了组件到位,API 测试还可能依赖第三方服务、遗留系统、服务器乃至网络连通性。这些外部依赖也应尽量解除,让测试更快更稳。把不稳定因素挡在测试回路之外,结果才可信。
当下网络犯罪无孔不入,所有 API 都必须查安全漏洞与利用面。许多测试工具把安全扫描作为附加功能,但它们未必能抓到零日漏洞这类严重风险。此时应请安全专家介入。安全不是上线前才补,而要在测试期就纳入。
当 API 已功能完备,测试期就应当强制执行服务等级协议(SLA)。这能让测试者轻松判断 API 是否出现性能问题并及时修复;把问题挡在发布前,正式上线后才更可能守住 SLA、而非违约。
9 条里最易被忽视的是「④ 保存响应留档」与「⑥ Mock」——它们恰好是 YesApi Pro 的强项:网关层统一记录每一次调用(请求/响应/耗时/错误),天然就是「响应留档」;开放平台内置 Mock 与文档自动生成,可让前后端在后端就绪前就并行联调。把测试左移,比上线后救火便宜得多。