2022年智能运维:浅谈持续集成、持续交付和软件测试 .pdf
《2022年智能运维:浅谈持续集成、持续交付和软件测试 .pdf》由会员分享,可在线阅读,更多相关《2022年智能运维:浅谈持续集成、持续交付和软件测试 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、导读:浅谈CI/CD 和软件测试知其 然,知 其所 以然 。相较 于 DevOps而 言,CI/CD是一 个相 对具 象的概念 。在IT 企业 中,CI/CD的应 用愈 加 广泛 ,成 为推 动软 件 研发 活动的重 要基 础设 施服 务 ,同 时推 动DevOps 模式 的实 际落 地。什么是CI/CD 在实 践CI/CD 相 关 内容 之前 ,我 们有 必 要先 认识 下什 么是CI/CD 。一 般 传 统 或 者 狭 义 、 普 遍 的CI/CD , 是 指 持 续 集 成 ( Continuous Integration,CI)和持 续交 付( Continuous Delivery,
2、CD )。而 更加广义 、 全面 的理 解, 是指 持 续集 成( Continuous Integration, CI) 、持续 测试( Continuous Testing, CT) 、 持续交 付 ( Continuous Delivery,CD)和持 续部 署( Continuous Deployment,CD )四个 方面。通常 ,一个 软件 开发 的流 水 线如 下图 所示 。?Design : 这一 阶段 完成 软件 开发 的需 求分析 和设 计。?Develop:这一阶 段完成 软件 开发 的功 能 代码 ,一个最 佳实 践 是采用测 试驱 动开 发( TDD )的方 法,测
3、试 代码 和功 能代 码的 编 写同 时进行。 需要 注意的 是,在Develop 阶段 也会 运行 单元 测试 和 其他小型 测试 。?Test :这 一 阶 段完 成 软件的 各 项大型 或 专项 测试 ,比 如界 面 测 试、API 测试 、性 能测 试和 系统 测试 等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - ?Release :这 一阶 段完成 软件 产品 的发 布 ,并 交付 给用 户使 用 。持续集成(
4、Continuous Integration)随着 敏捷 开发 的发 展 ,持续 集成 在软 件项 目活 动中 也日 益成 为 主流。顾名思 义,持续 集成 是指每 日频 繁地(比 如 一天 多次 )将 代码 集 成到 主干分支 中。强调 通过 集成和 测试 的速 度,快 速给 出一 个集 成的 结 果( 是失败还 是成 功),在代码集 成之 前,必须 先 通过 自动 化测 试验 证 ,只 要有一个 测试 用例 失败 , 就不 能集 成。Martin Fowler 说过 ,“持续 集成 并不 能 消除 Bug ,而 是让 它 们非 常容易被 发现 和改 正” 。 这也 正是 持续 集成 的 真
5、谛 所在 。敏 捷开 发的 核心 是 指 整个 软件 开发 活 动 被 划 分成 一 系 列 短 的 迭代 过程 ,每个 迭代 完成 一定 数 量的 功能,迭代周期 应该 尽量 短。在 软件 开发 需求已经 确定 的情 况下 ,迭代 应该 由测 试驱 动 开发( TDD )和集 成 反馈 来驱动。 只有 这样 ,才 能 为质 量持 续改 进奠 定 一个 良好 的基 础。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 持续 集成
6、 是和 单元 测 试结 合在 一起 的,也 就意 味着,持续集成 和单 元测试 需要 并 行 工作。 持 续集成 一般 由代码 每 次git push/review 触发 。先签 入代 码就 先看 到 构建 结果 ,后 签入 ,则要 排在 后面 。这 就 要求 构建时间 不能 太长,否则在构 建时 容易 引起 混 乱,很 难知 道是 谁的 代码 破坏了集 成, 导致 很难 定 位问 题。可以 说,持续 集成 是敏捷 开发 的重 要基 础 环节 ,没 有持 续集 成 ,所 谓的敏捷 开发 便失 去了 赖 以生 存的 土壤,其实施效 果也 会大 打折 扣 。持续 集成是 一种 软件 开发 实 践,
7、团 队成 员频 繁集 成他 们开 发的 代码,每次集成都会 经过 自动 构建 自动测试 的验 证,以尽 快发 现集 成错 误 。使用 这种方 法可 以显 著减 少 集成 引起 的问 题,并加快 团队 合作 开发 软 件的 速度。( 1)持 续集 成过 程持续 集成 的工 作阶 段 比较 明确,主要有三 个大 的阶 段:持 续集 成准 备阶段、 持续 集成 使用 阶 段和 持续 集成 测试 阶 段。持续 集成 准备 阶段 的 工作 主要 包括 :?通过 代码 评审 系统 ( 比如Gerrit ), 实现代 码审 查和 集成 反馈。?通过 版本 控制 系统 ( 比如Git 或GitLab)建 立源
8、 码仓 库。?通过 构 建 工 具 运 行 相 关 构 建 和 测 试 ( 比 如Python 项目 的Tox 和Pytest )。?通过CI 系统( 比如Jenkins)建立Job ,将版本 控制 和构 建 工具整合 ,并 设置 构建 触 发条 件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 持续 集成 使用 阶段 的 工作 主要 包括 :?开发 人员 向代 码评 审 系统 (比 如Gerrit)提 交代 码。?通过CI
9、 系统监 听代 码的 提交 ,运 行单 元测试 ,反 馈集 成结 果 。?通过 构建 工具 对代 码 进行 编译 、打 包和 部署。?通过 版本 控制 工具 实 现版 本控 制与 管理 。持续 集成 测试 阶段 的 工作 主要 是,CI 系 统根 据集 成结 果进 行不同 操作,如果 成功 ,则 将代 码合并 到主 分支 ;如 果 失败 ,则 反馈 给开 发 人员 修改重新 提交 。从中 我们 可以 看到 , 持续 集成 涉及 的主 要 工具 类别 包括 :?版本 控制 工具 实 现源 代码 管理 、版 本 控制 。?构建 工具 实 现代 码的 自动 化编 译、打 包等 ,这是持 续集 成 的
10、核心工 具。?测试 工具 实 现代 码的 自动 化测 试, 以 及大 型测 试或 专项 测 试。?CI 系统 整 合版 本控 制、构建 工作 和 测试 工作 ,实 现持 续 集成。( 2)持 续集 成的 好 处主要 有以 下几 点:?易于 定位 错误 。比 如当持 续集 成失 败时 ,说明 新提 交的 代码 引 起了错误 ,这 样也 很容 易 知道 是谁 犯了 错误 ,可以 找谁 来讨 论。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - -
11、- - - ?提高 团队 的开 发信 心 。虽 然整 个系 统还 不 是那 么可 用,但至 少 可以看到 功能 已经 在一 点 点被 集成 了。?提高 对进 度的 控制 和 把握。这点非常 明显 ,如果 每天 都在 集成 ,当然每 天都 可以 看到 哪 些功 能可 以使 用,哪 些功 能还 没有 实现 。如果你是 开发 人 员 , 则 不用 为在 每 日Scrum 晨 会 时 说 自 己 完 成 了 多少开 发而 烦恼 ;而如 果你 是Scrum Master,那么 也不 用再 烦 恼开发人 员说 完成 了代 码 的 40% 到底是 个什 么概 念。?有助 于代 码开 发的 质 量评 估。比如
12、 从开 发 质量 的评 估图 表中 ,找出经常 出错 的测 试和 源 码等 。?与测 试工 具结 合, 做 到每 次提 交都 进行 测试。?快速 发现 错误 。每 完 成一 点开 发,就提 交 评测 、代 码审 查,可 以快速发 现错 误, 及时 修 复, 越尽 早解 决, 成本越 低。持续测试( Continuous Testing)持续 测试 作为 软件 持 续集 成中 的重 要组 成 部分 ,为软件 项目 的 成功 提供了保 证软 件质 量持 续 改进 的重 要手 段。在 持续 集成 中,更 多的 是运 行小型的 单元 测试 ,因 此 ,关 于其 他测 试将 在 后续 章节 中阐 述。持
13、续 测试 是指 开发 人 员提 交代 码后 自动 运 行相 关单 元测 试,给 出测 试结果的 反馈 ;如 果失 败 ,则 会在 测试 结果 的 详情 页面 中输 出错 误提示 。有了 持续 测试 ,我们 才能 实现 真正 的测 试 驱动 开发( TDD )。举 一 个例子,当开 发人 员向 代码评 审系 统提 交了 代 码后 ,Jenkins hooks 监听 到名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 有 代码 提交
14、 ,自 动 运 行单 元测 试, 然 后 在 页 面视 图 上 显 示 测 试的 结果 ;如果 测试 失败 ,开 发 人员 需要 重新 修改 并 再次 提交 测试 ,直 至成功 。这也 需要 开发 人员 在 编写 功能 代码 时,同 时编 写测 试代 码,这 样几 乎能够在 问题 产生 之时 就 将其 发现。不经常运 行测 试通 常就 不怎 么 有效,因为从 产生 缺陷 到发 现 该缺 陷相 隔时 间很 长 ,但持 续地( 即每 一 次代 码改变时 )运 行测 试能 确 保快 速地 发现 症结 。持续 测试 应当 输出 测 试报 告,报告 是将 持续集 成的 运行 情况 以 适当 的形式展 现
15、给 相关 人员 的 基本方式。报告是持 续集 成的 晴雨 表,所 以它 必须直 观、 易懂 ,比 如 开 发人 员从 错误 日 志 中 找 到代 码 出 错 的 位 置和 原因 ;QA 测 试人 员发 现测 试的 覆盖 率和 执行 情 况;管 理人 员从 持续 集成 通过率的 趋势 中了 解到 项 目的 进度 和质 量。持续交付( Continuous Delivery)持续 交付 和持 续部 署 是两 个非 常容 易混 淆 的概 念。持续 交付 指 的是 频繁地将 软件 的新 版本 交 付给QA 测试 团队 或者 运营 团队 ,如 果评审 通过,代码 就进 入发 布、 生 产阶 段。为 了更
16、 加符 合 国 内软 件行 业的 实 际 情况 ,我 在这里 将QA 和 测 试 统称为“ QA 测试 ”。持 续交 付可 以看 作是 持 续集 成、持续 测试 的 延续 ,它强调 的是 不管 怎么 更 新,软 件是 随时 随地 可以 交付 的。通 过严 格的 自动化测 试,可 以确 保软 件开 发的 质量 和进 度 。因为 通过 完全 的自 动化 过程名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 把每 个变 更自 动提 交
17、 到测 试环 境中,所以当功 能开 发完 成时,就有信心只需 要点 击一 次按 钮 就能 保证 发布 和部 署 应用 的质 量。( 1)选 择持 续交 付 工具 集在没 有制 定出 工作 流 程时,便考虑选 择持 续交 付工 具集,是最不重 要的决策。实际上,在 设计好 工作 流程 和业 务流程 之后 再选 择相 匹 配的 工具集即 可。考 虑到 满足 实际 业务 和工 作流 程 的情 况,开 发一 些诸 如Shell 、Python 等脚 本程 序 是非 常理 性的 做法 。更重 要的 是,无论是CI 还是CT、 CD 等,都可 以使 用众 多 的开 源工具, 这样 做没 有被 锁 定的 风
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年智能运维:浅谈持续集成、持续交付和软件测试 2022 智能 浅谈 持续 集成 交付 软件 测试
限制150内