在短时间内,我将启动基于Windows Azure的项目。我想知道测试Windows Azure项目的经验是什么(在连续集成中(使用TFS构建服务器))? (最终使用TDD)
我想知道的一些事情:
提前提醒!
答案 0 :(得分:4)
适用于为Windows Azure以外的应用程序编写单元测试的相同优良做法。如果您对实际测试的内容有外部依赖性,那么应该模拟该依赖项并为您的粒度单元测试注入。
例如,当我使用Windows Azure存储队列时,我将使用一个用于与队列本身交互的接口,因此在我的代码中使用队列服务我可以使用接口模拟子系统并使用依赖注入注入模拟。这消除了在单元测试期间实际处理仿真器的必要性。在大多数情况下,使用队列的代码的实际具体实现只不过是一个非常薄的包装器。
我个人不会针对100%的测试覆盖率进行拍摄,因此我可能没有直接的单元测试来利用包装器的具体实现。在许多情况下,我尝试进行集成测试,这些测试将运用这些包装器并将系统的多个方面协同工作。在某些情况下,我可以在模拟器中运行集成测试(例如,用于存储操作),但在某些情况下,只需运行访问Windows Azure环境(在使用ACS或Service Bus的情况下)。
理想情况下,您希望有一组脚本可以运行以在Azure中启动最少的测试服务器集,部署您的解决方案并执行无法在内部完成的集成测试。然后获取结果并让脚本关闭所有内容(或者如果需要,可以选择让它保持运行)。然后运行经常使用这些脚本的集成测试套件来检测问题,但是每次检查时都不需要运行它们,除非您对运行测试环境感到满意。如果您对Azure中运行的半永久性测试环境的成本没有问题,那么只需确保将脚本安装到更新部署而不是删除并重新部署以降低成本(节省的时间相对于部署发生)。
我认为这个问题非常主观,因为你可能会得到几个不同的意见。