硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

创业公司如何成功实施持续交付?一个 10 年测试老兵的经验谈

  • 2016-05-02
  • 本文字数:1593 字

    阅读完需:约 5 分钟

正如 Kurt Bittner 说的那样,如果敏捷仅仅是个开始的话,那持续交付则是头条!(我则更喜欢理解成高潮)。

“If Agile Was the Opening Act, Continuous Delivery is the Headliner!”——Kurt Bittner

现代企业要求软件开发过程保持最大的工作效率,传统的瀑布式开发早已跌入历史洪流,甚至敏捷宣言也已超过 10 年的历史,软件开发在经历了敏捷开发、持续集成后,正逐步迈入到持续交付的时代

持续交付是持续集成的延伸,强调以自动化、可视化的手段更快的将产品交付到客户手中。持续交付的一个重要衡量指标就是从代码提交直到客户能使用这个功能所花费的时间,通过实行持续交付,这个时间往往可以从原先的几天、几周缩短到几分钟。当然,快速交付并不意味着不可靠。

那么我们如何实施自己的持续交付?以我们实际项目为例,与大家进行一个探讨,归纳起来,总共经历了以下 3 个过程:

(点击放大图像)

搭建持续集成环境

以Jenkins 为核心搭建持续集成平台,每天定时从代码库中检出最新的代码进行编译、构建。构建结果通知到项目组,开发人员只需要关注每天的集成结果是否是绿的就可以了,同时加入测试环境部署及自动化测试。

(点击放大图像)

图1. 自动部署测试环境

(点击放大图像)

图2. Selenium 自动测试

代码规范及单元测试

简洁统一风格的代码有利于大家更好的理解及进行走查,而单元测试则是为了前期高质量的交付。

(点击放大图像)

图 3. 单元测试统计
通过 SonarQube+JaCoCo 的引入,可方便的定位到存在问题的代码行及单元测试情况。

(点击放大图像)

图 4. 问题定位

自动化测试流水线

持续交付讲究 Automate almost everything 将一切过程自动化起来,减少人工的干预。这里我们主要加入了以下环节。

自动化的接口及集成测试
测试进入的越早,发现问题修复的成本越低,通过引入 TestNG 等测试框架,对接口以及模块集成进行测试,有效的降低 Bug 流入后续环节的风险。

测试分级

将测试用例拆分成 SmokingTest、AllTest 等多套用例集,一方面快速反馈代码更新可能引起的风险,同时保证测试的有效覆盖,同时通过分布式集群并发执行等方式,加速执行效率,最终形成以下的流水线。

(点击放大图像)

图5. 管道流水线

自动化交付及全平台工具整合

在传统模式下开发、测试、运维往往比较独立,测试完成后由运维人员进行部署上线,但是由于运维人员能力水平存在高低,复杂环境下的发布往往只有固定的几人才能搞得定,从而导致上线发布周期被拉长。我们通过自建交付自动化工具,同时整合平台让运维对外提供服务,消除开发、测试与运维之间的边界,大大降低了自动化运维的门槛,让运维效率有了很大的提升。

(点击放大图像)

图6. 交付自动化

通过作业流程的编排,沉淀标准化作业封装,让普通运维人员快速实现相应的自动化脚本,同时通过整合资源/ 环境,对开发测试提供资源申请、部署等服务,加速自动化发布的验证,避免在正式发布时导致问题。

持续的反馈

上线发布完成并不意味着交付结束,当今社会是一个以服务取胜的社会,我们交付给用户的不再是简单的产品,更多的应该是服务。通过自动化的监控获取用户的反馈快速做出响应,不断提升我们的服务,才能提高用户的满意度和粘性。

总结

持续交付是一套方法论,通用的并不一定适合自己。希望仅以本文做一个引子,让大家寻找到适合自身的持续交付之路!附上一张交付过程中的工具集供大家参考。

(点击放大图像)

作者介绍

葛成远,10 年测试老兵,掉入运维领域而无法自拔。热衷于研究虚拟化、自动化等各种高逼格技术,努力让自己成为测试里最会运维,运维里最懂测试的牛B 攻城狮。广通软件十多年来耕耘于运维管理软件研发和服务咨询,面向数据中心、互联网、物联网三个领域提供整合化的运维工具和服务。微信公众号: broada_ops。


感谢郭蕾对本文的策划和审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-05-02 17:376329

评论

发布
暂无评论
发现更多内容

五项满分,天翼云息壤智算一体机斩获佳绩!

天翼云开发者社区

人工智能 AI训练一体机

忘掉Ollama! 将GPT OSS私有部署推理性能提升100倍的部署教程

GPUStack

大模型 GPT GPU集群 vLLM

Awesome ChatGPT Prompts - 提升AI对话体验的精选提示库

qife122

开发者工具 ChatGPT

AI正在悄悄学坏?Anthropic首次披露潜意识微调的风险——慢慢学AI161

AI决策者洞察

大模型,意识

表格数据深度学习算法NODE技术解析

qife122

机器学习 深度学习

GPT OSS 双模型上线,百度百舸全面支持快速部署

Baidu AICLOUD

GPT 开源大模型 推理部署

使用观测云打造企业级监控告警中心

观测云

监控告警

Context Engineering: 基于 OceanBase 的代码文档检索引擎

老纪的技术唠嗑局

AI+ OceanBase 社区版 文档检索

AI/ML工作负载的可持续性优化实践

qife122

机器学习 云计算

实时检测机器人广告点击的深度学习技术

qife122

深度学习 实时检测

国产大模型Qwen3-32B完全本地化实战:LangChain + vLLM 构建企业级智能体核心引擎

测吧(北京)科技有限公司

硅芯片创新如何成为某中心云服务的"秘密武器"

qife122

云计算 机器学习加速

k8s集群添加master节点报control plane 错误

天翼云开发者社区

容器

MatrixOne存储优化:HTAP场景下的智能存储优化策略

MatrixOrigin

一键上云不是梦!Apache Dubbo 发布微服务集群部署与全新控制台

阿里巴巴云原生

Apache 阿里云 微服务 云原生 dubbo

Fabarta个人专属智能体:三维搜索链+动态大纲重构教材开发范式

Fabarta

人工智能 智能体 agent

MCP+LLM+Agent:企业AI落地的新基建设计

测吧(北京)科技有限公司

基于生成式AI的设备维护推荐系统构建指南

qife122

知识库 生成式AI

快看!百度提前批的面试难度,你能拿下吗?

王磊

MES系统是什么?从核心功能到行业应用,打造智能制造新引擎

万界星空科技

数字化 制造业 mes 万界星空科技mes 智能制造数字化转型

HarmonyOS SDK助力讯飞听见App能力建设

HarmonyOS SDK

HarmonyOS NEXT HarmonyOS SDK应用服务

我是如何操纵Bugcrowd平台排名的 - 漏洞挖掘技术解析

qife122

漏洞挖掘 平台安全

【跨国数仓迁移最佳实践5】MaxCompute近线查询解决方案助力物流电商等实时场景实现高效查询

阿里云大数据AI技术

人工智能 大数据 查询优化 批处理 数据迁移

[鸿蒙征文]鸿蒙 ArkTS AppStorage 数据同步失效:五大原因与高效解决策略

谢道韫

鸿蒙 HarmonyOS HarmonyOS NEXT

统一平台全面保护:NinjaOne收购Dropsuite的技术意义

qife122

数据备份 IT管理

Labubu 免费送 | 认证、答疑、交流一站搞定!TDengine 开发者新据点上线

TDengine

tdengine 时序数据库

Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理

Apache Flink

大数据 flink 实时计算

Ansible部署Node_exporter

天翼云开发者社区

ansible 应用自动化运维

基于加密数据的机器学习模型构建

qife122

同态加密 数据隐私

怎么用AI完成海报设计?3个常用AI工具盘点推荐!

职场工具箱

AI 海报生成 AIGC AI绘画 效率软件

从多引擎到统一平台:去哪儿网的 StarRocks 实践

StarRocks

数据库 OLAP StarRocks 数据查询 MPP 分布式数据库

创业公司如何成功实施持续交付?一个10年测试老兵的经验谈_语言 & 开发_葛成远_InfoQ精选文章