开发代理与单元测试

开发代理和单元测试在测试策略中提供不同的用途。 虽然两者都是有价值的,但它们以完全不同的方式测试应用程序。 结合使用它们可以全面了解应用程序的行为。

不同的测试方法

单元测试 使用模拟依赖项测试独立代码片段。 为调用 API 的代码编写单元测试时,通常会模拟 HTTP 客户端以返回预定义的响应。 使用此方法可以验证代码是否正确处理特定方案。

开发代理 使用模拟 API 行为测试正在运行的应用程序。 开发代理不会模拟代码,而是截获实际的 HTTP 请求,并模拟实际情况,例如错误、限制和延迟。 此方法以整体方式测试应用程序,包括代码和 API 之间的所有层。

何时使用

在以下情况下使用单元测试

  • 测试特定的函数行为和边缘事例
  • 在隔离中验证业务逻辑
  • 在开发过程中快速获取反馈
  • 实现高代码覆盖率
  • 测试特定的错误处理路径

想要使用Dev Proxy时:

  • 测试正在运行的应用程序端到端
  • 模拟难以再现的问题,例如带宽限制或网络故障
  • 在所有层中测试真正的重试逻辑和错误处理
  • 在负载条件下运行应用程序,可能会出现随机故障。
  • 在不更改代码的情况下验证复原能力

开发代理的优点

相对于传统的模拟方法,开发代理服务器具有多项优势。

  • 无需更改代码。 无需修改应用程序以使用开发代理。 它在网络级别工作,以透明方式截获 HTTP 请求。
  • 适用于任何 HTTP 库。 某些 HTTP 库难以模拟。 使用开发代理时,使用哪个库无关紧要 - RestSharp、HttpClient、Axios 或任何其他库。 无论使用哪个库,开发代理都会截获所有 HTTP 流量。
  • 测试实际应用程序。 使用模拟 HTTP 客户端的单元测试不会测试实际的重试逻辑、连接处理或超时行为。 Dev Proxy对你的实际应用程序及其所有依赖项进行测试。
  • 更易于理解失败。 在正在运行的应用程序中按需触发故障时,可以更轻松地理解和调试应用程序如何处理故障。
  • 模拟复杂条件。 开发代理服务器可以模拟用模拟器无法再现的条件,例如在负载下随机出现的故障、逐步的限速处理或间歇性的网络问题。

补充测试策略

最有效的方法结合了两种测试方法:

  • 对逻辑使用单元测试。 编写单元测试来验证业务逻辑、数据转换和特定的错误处理代码路径。
  • 使用 Dev Proxy 增强弹性。 使用开发代理服务器验证应用程序是否正确处理真实场景中的 API 条件,例如限流、错误和响应速度缓慢。
  • 在 CI/CD 中使用。 为每次提交快速运行单元测试以获取反馈。 在集成测试中使用开发代理以在部署之前识别出系统弹性问题。

单元测试会告诉你代码是否正确。 开发代理会告诉你应用程序是否具有复原能力。 两个都需要。

后续步骤