在云端应用测试驱动开发

云应用开发中的测试驱动开发(TDD)与基础设施整合

在云环境中,应用开发可以与其基础设施作为一个整体进行处理。这种方法使得测试驱动开发(TDD)和重构能够应用于整个应用,从而降低维护成本。

Michal Svoboda 将在 XP 2023 会议上发表关于云应用测试驱动开发的演讲。该会议将于6月13日至16日在荷兰阿姆斯特丹举行。

云应用开发与基础设施的整合

云应用可以与其基础设施作为一个整体的代码块进行开发和部署。Svoboda 认为,将“基础设施”作为一个独立元素去除,可以使敏捷工程实践如 TDD 和重构应用于整个应用,包括其云资源。

云环境中的挑战与解决方案

云的延迟和异步特性可能成为问题。等待资源供应或超时会影响快速的 TDD 周期。Svoboda 建议采用增量更新模型,即不在每次测试结束时销毁资源,仅在集成时进行干净的部署。

TDD 的优势

TDD 降低了应用维护成本,这是软件总成本(TCO)的主要部分。使用 TDD,可以轻松添加功能或重构代码,无论是自有代码还是云资源的使用,甚至在多年后。

访谈摘要

InfoQ: 云如何影响我们提供基础设施的方式?

  • Svoboda: 通过 API,云资源可以完全自动化地创建和销毁。云提供商使这一功能非常易于访问。我们不再需要将“基础设施”视为独立于应用的服务器和网络。

InfoQ: 如何为云应用进行测试驱动开发?

  • Svoboda: 云应用的 TDD 与其他应用的 TDD 类似。我们通过 API 调用在云中创建资源,而不是在内存中创建对象。一个简单的功能测试示例如下:

    1. 部署流和读写角色
    2. 使用写角色将数据放入流中
    3. 使用读角色轮询流,断言接收到正确的对象或超时
    4. 移除流和角色

InfoQ: 你遇到了哪些挑战,如何应对?

  • Svoboda: 工具是一个问题。为了使这种 TDD 方法有效,资源部署代码必须在所选编程语言中是一等公民。当前的工具提供了命令行接口,遵循“独立基础设施”范式,这可能变得繁琐。这促使我们在开发早期调整工具和提供商选择。

InfoQ: 除了降低成本,TDD 为云应用带来了哪些其他好处?

  • Svoboda: 测试使我们能够考虑边缘情况,应用稳定且可预测。我们甚至在原型阶段也受益,因为这种方法使我们能够快速设置和测试资源,快速失败。

InfoQ: 对于想尝试 TDD 的云应用开发者,你有什么建议?

  • Svoboda: 从小规模项目开始,逐步适应。确保积极重构,并从反馈中学习。祝你好运!
阅读 22
0 条评论