身处软件开发行业的人们或多或少都听说过DevOps、微服务架构和自动化测试。这三者旨在提升项目或产品的交付效率,最终提升产品的竞争力。
DevOps是一套实践方法论,它提倡打破原有组织和限制,让职能团队拥抱和接受DevOps所倡导的高度协同,以及开发、测试、运维与交付一体化的思维。随着DevOps和敏捷的热度不断提升,无论是互联网企业还是传统企业都开始拥抱敏捷,实践DevOps。作为DevOps的最佳实践,持续集成(Continuous Integration,CI)、持续交付(Continuous Delivery,CD)越来越受到重视。图1-1所示为DevOps的流程。
图1-1 DevOps的流程
微服务架构(microservice architecture)起源于DevOps意识形态和工程实践。微服务架构带来了一系列好处,例如可部署性的简化、可靠性和可用性的提升等。虽然原则上可以使用任何架构来实践DevOps,但是微服务架构正在成为构建持续部署系统的标准软件架构。由于每项服务的规模都很小,因此微服务架构不仅允许通过连续重构来形成单个服务的体系结构,从而降低对大型项目前期设计的要求,还允许尽早发布软件并且实现持续交付。微服务架构和DevOps是天然的共同体,两者共同推进了软件开发行业的变革。
微服务架构在解决软件大小、软件开发规模等问题的同时也带来了一些新的问题,如微服务数量增多、服务间调用关系复杂等。复杂的依赖导致即使是项目资深开发人员也很难全面梳理出所有服务之间的关系。微服务和传统的单体应用在测试策略上有一些不太相同的地方。简单来说,在微服务架构中,测试的层次变得更多,需要测试的服务和应用的数量也会呈指数级增长。手动执行所有的测试是低效的,无法满足互联网快速迭代的要求。这时就需要引入自动化测试来减轻测试团队的压力,提高测试效率和测试质量。
随着敏捷和微服务架构的引入,持续集成和持续交付成为构建和部署项目的标准,即使在没有采用微服务架构的项目中也是如此。为了保证已定义的流程和事务按照预期运行,测试必不可少。而在应对现代软件产品频繁的变化和发布时,传统的手动测试方式在人力和效率上都存在严重不足,因此自动化测试就成为现代软件开发过程中的一个关键环节。自动化测试是打通持续集成和持续交付的核心环节,没有有效的自动化测试作为保障,持续集成和持续交付就变成了空壳。