基础设施测试全解析:从集成到端到端
1. 集成测试资源特性
集成测试为中级模块(如工作负载编排器)创建的资源,可能是持久的,也可能是临时的,这取决于模块和资源的大小。模块越大,越有可能需要长期存在。对于高级模块(如应用程序部署或 SaaS),可以运行集成测试,并每次创建和删除资源。
持久测试环境有其局限性。集成测试通常需要很长时间才能运行,因为创建或更新资源需要时间。一般来说,应保持模块较小,资源较少,这样可以减少模块集成测试所需的时间。
即使保持配置和模块较小且资源较少,集成测试也常常会导致基础设施提供商的账单费用增加。许多测试需要长期存在的资源,如网络、网关等。需要权衡运行集成测试和发现问题的成本与配置错误或基础设施资源损坏的成本。
可以考虑使用基础设施模拟来降低运行集成测试(或任何测试)的成本。一些框架可以复制基础设施提供商的 API 进行本地测试,但不建议过度依赖模拟。因为基础设施提供商经常更改 API,并且常常有复杂的错误和行为,而模拟通常无法捕捉到这些。
2. 端到端测试
2.1 端到端测试的定义与作用
集成测试可以动态分析配置并在资源创建或更新期间捕获错误,但它不能表明基础设施资源是否可用。可用性需要用户或团队成员按预期使用该资源。
端到端测试是一种与集成测试不同的动态分析测试,它验证基础设施的最终用户功能。其定义为:动态分析基础设施资源和端到端系统功能,以验证它们是否受到基础设施即代码更改的影响。
例如,在 Google Cloud Platform (GCP) Cloud Run 上使用模块创建一个名为服务的应用程序,集成测试通过表明模