testing - 在 Kubernetes 堆栈上运行集成/e2e 测试

标签 testing kubernetes continuous-integration

我一直在深入研究人们在 Kubernetes 上下文中运行集成和端到端测试的方式,并且对缺乏文档和反馈感到非常失望。我知道有一些很棒的工具,例如 kind 或 minikube,可以在本地运行资源。但在 CI 的上下文中,并且有一堆服务,它似乎不是一个很好的选择,出于明显的资源原因。我认为运行测试有很大的机会:

  • 验证 list 或 helm 图表
  • 验证组件作为更大整体的一部分的良好行为
  • 验证产品的全局行为

这里的重点不是关于测试框架,而是更多关于可以在其上运行测试的环境。

你同意我的想法吗?您是否经历过运行此类测试?您对此有任何反馈或见解吗?

非常感谢

最佳答案

有趣的问题和我在过去几个月里为我现在的雇主所做的事情。本质上,我们将产品作为带有 list 的 docker 镜像发布。在编写端到端测试时,我希望在尽可能接近客户环境的情况下运行产品。

从本质上讲,为了解决这个问题,我们构建了与我们的标准云提供商 (GCloud) 交互的脚本,以创建集群、部署产品,然后对其运行测试。

对于主要的云提供商来说,这不是一项艰巨的任务,但可能很耗时。在开发测试时,我们通过艰难的方式学到了一些需要牢记的事情。

  1. 并发性,这听起来很明显,但请务必考虑您的 CI 可以运行的并发构建数量。
  2. 来自云的延迟,不要假设您会立即响应您在云中运行的每个命令。还要考虑超时。如果您提出具有大量 pod 和服务的产品,可接受的启动时间是多少?
  3. 导致构建失败的错误,这是一个有趣的问题。在与我们的测试部署通信时,由于网络错误,我们在构建中看到了错误。这些几乎总是可传递的。最好避免这些导致构建失败。

要注意的一件事是 GitLab 提供了一些 documentation关于如何在他们的 CI 管道中构建和测试图像。

关于testing - 在 Kubernetes 堆栈上运行集成/e2e 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58536038/

相关文章:

ruby-on-rails - 在集成测试中模拟/ stub 是个好主意吗?

continuous-integration - 如何在 GitHub Actions 上将 PNPM 工作区项目作为并行作业运行?

Jenkins:如何在 git 标签上触发管道

ios - FaSTLane import_certificate 找不到文件

testing - CMake:为 ctest 设置环境变量(或以其他方式自动从 ctest/make test 获取失败的测试输出)

linux - 文件系统测试套件

networking - 如何在 CoAP 一致性测试套件中对测试用例进行分组

kubernetes - 使用Google Container Engine,如何创建具有3个以上节点的集群?

kubernetes - 将 k8s 集群设置为使用主机名/IP 地址而不是 localhost

kubernetes - Google Kubernetes 私有(private)集群 : Google Compute Engine: Exceeded maximum supported number of secondary ranges per subnetwork