rest - 在端到端测试中处理第三方 API 请求

标签 rest api testing e2e-testing

我想通过端到端测试来测试我的 Rest API。据我了解,集成测试之间的区别在于我们不进行内存系统配置,而是使用真实的测试数据库和网络请求。

但我无法理解如何处理第三方 API 请求(如 GitHub 或 Bitbucket API)。

用我的测试获取的虚假数据创建一个虚假的 Github 帐户是正常做法吗?

以及如何处理访问 token ,并非所有服务都是公共(public)服务,甚至公共(public)服务也会因速率限制而失败。

最佳答案

Is it a normal practice to create a fake Github account with fake data that would be fetched by my tests ?

是的。 E2E 测试(相对于集成测试)的目的是验证整个系统是否与所有实际系统组件一起工作,包括您控制的和您不控制的组件。这可能很难设置并且很难维护;但其中许多痛点将暴露您的生产服务中真正的潜在问题。您的服务如何应对这种不稳定性本身就是一项需要测试的功能:您的系统会崩溃和燃烧,还是会优雅地显示错误消息并支持良好的重试处理?

这也为您提供了一种 mock 无法提供的覆盖范围:如果您使用的第三方 API 不正常并引入了某种破坏性变更,您的 E2E 测试将捕捉到它。这是持续运行 E2E 套件的正当理由;不仅仅是在部署期间。

此类测试的下一级是 chaos engineering您不仅要测试生产系统,还要有目的地引入故障(是的,引入产品中),以确保您的服务能够真正应对压力。

And what to do with access tokens, not all services are public and even public services can fail with rate limit.

您的暂存环境应该为外部服务配置单独的沙箱帐户。我不确定您所说的“并非所有服务都是公共(public)的”是什么意思,只是努力使您的登台环境(或生产测试用户)尽可能与真正的生产用户相同。对于不支持多个访问 token 的服务,您可以发挥创意并尝试在他们的系统中清楚地描述您的测试数据。

速率限制可能很烦人,但如果您已经接近到足以让您的测试超过限制,那么您应该采取一种策略来解决这个问题(与服务协商,获得多个帐户,... ).

关于rest - 在端到端测试中处理第三方 API 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52626983/

相关文章:

javascript - 获取 XMLHttpRequest 无法在第二次 api 调用 Instagram 上加载

testing - 有没有一种方法可以对 Jasmine 测试进行分类并管理排除项

testing - 安卓 WebView SSL 'Security Warning'

c# - 是否可以创建多个 Swagger 文档 URL?

javascript - Instagram API,/media/recent 只显示当年的图像?

ruby-on-rails - link_to 使用 Rails 中的资源路由进行销毁

.net - WCF 400 大数据错误请求

java - 如何在 Java 中测试文件系统操作

django - 使用 Rest Framework 强制解析没有 Content-Type 的请求

rest - 如何从JSP以编程方式提交Hive Jobs