导读:浅谈 CI/CD 和软件测试知其然,知其所以然。相较于 DevOps 而言,CI/CD 是一个相对具象的概念。在IT 企业中,CI/CD 的应用愈加广泛,成为推动软件研发活动的重要基础设施服务,同时推动 DevOps 模式的实际落地。什么是 CI/CD在实践 CI/CD 相关内容之前,我们有必要先认识下什么是 CI/CD。—般传统或者狭义、普遍的 CI/CD,是指持续集成(ContinuousIntegration,CI)和持续交付(ContinuousDelivery,CD)。而更加广义、全面的理解,是指持续集成(ContinuousIntegration,CI)、持续测试(ContinuousTesting,CT)、持续交付(ContinuousDelivery,CD)和持续部署(ContinuousDeployment,CD)四个方面。通常,—个软件开发的流水线如下图所示。•Design:这一阶段完成软件开发的需求分析和设计。•Develop:这一阶段完成软件开发的功能代码,—个最佳实践是采用测试驱动开发(TDD)的方法,测试代码和功能代码的编写同时进行。需要注意的是,在 Develop 阶段也会运行单元测试和其他小型测试。•Test:这一阶段完成软件的各项大型或专项测试,比如界面测试、API 测试、性能测试和系统测试等。花 C•Release:这一阶段完成软件产品的发布,并交付给用户使用。持续集成(ContinuousIntegratjon随着敏捷开发的发展,持续集成在软件项目活动中也日益成为主流。顾名思义,持续集成是指每日频繁地(比如一天多次)将代码集成到主干分支中。强调通过集成和测试的速度,快速给出一个集成的结果(是失败还是成功),在代码集成之前,必须先通过自动化测试验证,只要有—个测试用例失败,就不能集成。MartinFowler 说过,"持续集成并不能消除 Bug,而是让它们非常容易被发现和改正”。这也正是持续集成的真谛所在。敏捷开发的核心是指整个软件开发活动被划分成一系列短的迭代过程,每个迭代完成一定数量的功能,迭代周期应该尽量短。在软件开发需求已经确定的情况下,迭代应该由测试驱动开发(TDD)和集成反馈来驱动。只有这样,才能为质量持续改进奠定一个良好的基础。持续集成是和单元测试结合在一起的,也就意味着,持续集成和单元测试需要并行工作。持续集成一般由代码每次gitpush/review 触发。先签入代码就先看到构建结果,后签入,则要排在后面。这就要求构建时间不能太长,否则在构建时容易引起混乱,很难知道是谁的代码破坏了集成,导致很难定位问题。可以说,持续集成是敏捷开发的重要基础环节,没有持续集成,所谓的敏捷开发便失去了赖以生存的土壤,其实施效果也会...