CI/CD流水线的理解

一、概念

单元测试:针对软件的基本单元(如:类、函数)所做的测试。

集成测试:将软件代码单元集成起来后,以组件、模块和子系统为单位进行的测试,主要测试接口间的交互关系。也称组件测试,子系统测试等。

CI/CD流水线总共包含三个阶段:持续集成、持续交付、持续部署。我整合了CSDN其他博主写的博客,在结合我的工作经验,具体的理解整理后如下:

二、持续集成CI(continuous integration)

持续集成的定义:       

        持续集成是一种软件开发实践,指的是团队成员频繁的将代码集成到主干分支的过程。一般每人每天至少集成一次,也可以多次。每次集成经过自动构建、自动(单元)测试,以尽快检测出集成错误,确认是否正确将新代码和原有代码集成在一起。

CI/CD流水线的理解_第1张图片

持续集成的目标:

        确保新增的代码能够与原先代码正确的集成,快速的提供一个可供测试的新版本(在测试环境中成功部署,软件可运行并且基本功能可用)。

持续集成的流程:build -> test -> result.

CI/CD流水线的理解_第2张图片

  1. 开发人员提交代码到Source Repository(源代码仓库),并通过git hook通知
  2. 出发 CI Server 的相关功能,执行 构建 -> 测试 -> 输出结果 的流程
  3. 生成并向开发人员发送反馈结果的report

持续集成的好处:

        1、持续集成频繁的集成可以把复杂的代码逻辑切割成小块,每完成一点更新,就集成到主干,这样可以快速发现错误,定位错误;

        2、节省人力成本,通过Jenkins自动构建和自动测试可以节省很多时间,加快软件开发进度,从而可以投入到更有价值的工作中去

        3、更细致的工作(代码)提交意味着可以更容易的判断当前的工作进度,开发流程变得易于管控。

三、持续交付CD(continuous delivery)

持续交付的定义:

        持续交付是一种能够使得软件在较短的周期中可靠地发布的软件工程方法,最终是通过手动部署到生产环境。指的是在持续集成的基础上,增加了test、staging、production 三个环节。在这个阶段,测试人员、PM在测试环境和预发布环境对最终要部署的项目进行全面且多轮的验证。

持续交付的目标: 

        拥有一个满足用户预期和质量要求的可随时部署到生产环境的代码库(新版本),确保新增的代码在生产环境中是可用的。

持续交付的流程:test -> staging ->production.

CI/CD流水线的理解_第3张图片

  1. Test环节,是在测试环境中对新增加的特性、功能进行全面的测试,包括了集成、功能、兼容性、安全、性能等系统测试。测试通过后,代码将自动部署到预发布环境。
  2. Staging指的是预发布环境,其尽可能模拟生产环境的真实网络拓扑、数据库及服务器硬件设备等资源,由测试人员验证代码在预发布环境中的可能表现。这个阶段,通常进行验收测试和全面回归测试(自动化测试的方式)。
  3. Production阶段将由相关人员(通常是运维)将新版本手动部署到生产环境。(如果发现问题,可以随时回滚)

四、持续部署CD(continuous deployment)

持续部署的定义:

        持续部署同样也是一种软件工程方法,通过自动化部署的方式将软件功能频繁的进行交付。

        持续部署的目标和持续交付是一致的,但实现方式上与持续交付的不同,最后部署到生产环境的过程是通过自动的方式实现的,所以说持续部署是持续交付的最高阶段。

        在持续部署下,开发同学只需提交代码,如果代码通过测试,可以全自动的部署到生产环境,所以持续部署的实现在很大程度上都得依赖精心设计的测试自动化。

CI/CD流水线的理解_第4张图片

你可能感兴趣的:(测试思维,持续集成)