一、了解什么是DevOps
DevOps的目标是实现软件系统的快速交付、并且提升系统稳定性和获得用户良好的反馈。不知道是不是有些同学和我一样,仅仅靠单纯概念性的描述比较难以理解什么是DevOps。
就好像我们常常说要养成“良好的生活习惯”,那这个“良好的生活习惯”可能会包含:早睡早起、健康饮食和合理锻炼锻炼等等具体的行为。其实DevOps这个有点抽象的概念也是由一系列具体的行为和软件工程实践组成的。包含:基础设施即代码、CI/CD、自动化测试、容器化、服务编排、自动化部署和软件度量等。
CI/CD流水线是决定系统能否实现快速交付的关键所在,也是DevOps实践中关键的一环。
二、自动化测试的困境
而在研发团队的实践过程中,自动化测试往往是一个比较难啃的硬骨头。我列出其中两个困难点:
(1)自动化测试需要持续不断投入,自动化测试脚本和代码的开发工作量不小于实际业务代码的开发工作量;
(2)构建CI/CD流水线系统的团队往往是独立于业务研发团队而存在的,而其中自动化测试环节却需要业务研发团队的配合才能够良好实施。
在众多的研发团队中,有一些负责质量效能的团队是自动化测试的先行者。他们能够抽出专门的资源来编写自动化测试用例;并通过自己搭建Jenkins来实现自动化测试用例的夜间定时执行;还有些团队自己开发了测试平台实现自动化测试用例管理、执行和度量等功能。但是这种各自独立的自动化测试平台又存在以下问题:
(1)按照各自平台标准开发的自动化测试用例,由于技术框架不同等原因,并不能实现资源共享和重用。
(2)自动化测试相关数据都是存在各自的平台中,当需要在更大范围内对不同应用或系统的自动化测试程序进行度量和评估时,由于标准不统一和数据不互通而导致难以实现。
(3)自动化测试的机器资源有限,常常由于执行资源受限而影响自动化测试的运行效率。而且不时