持续交付(第七章)—提交阶段

在上一章中了解到如何将构建与部署脚本化,脚本通常都是帮助我们进行构建,测试,部署和发布应用的所有自动化命令集。并且在项目中脚本系统应该是一等公民。而本章的内容在之前的章节都有所提及,但是本章会更加详细的讨论如何创建有效的提交阶段和高效的提交测试。

提交阶段流程

当有人向版本控制系统的主干上提交了一次变更后,持续集成服务器会发现这次变更,并将代码签出,执行一系列的任务,包括:

  • 编译
  • 创建能部署在所有环境的二进制包
  • 执行必要的分析,检查代码库的健康状况
  • 创建部署流水线的后续阶段需要使用的其他产物

提交阶段的原则和实践

提交阶段的首要目标是要么创建可部署的产物,要么快速失败并将失败原因通知给团队,下面列出建立高效提交阶段的原则和实践。

1.提供快速有用的反馈
2.何时令提交失败
3.精心对待提交阶段
4.让开发人员也也拥有所有权
5.在超大项目团队中指定一个构建负责人

提交阶段的结果

与部署流水线的所有阶段一样,提交阶段既有输入也有输出,输入是源代码,输出是二进制包和报告。产生的报告包括测试结果和代码库的分析报告。分析报告可能包括测试覆盖率,圈复杂度,复制粘贴分析,输入输出分析。

而我们提交阶段的所有输出都会存放在制品库中,一般来说大家都会直接想到版本控制系统,但这并不是我们最好的选择,这样我们的硬盘容量会被快速的占领。我们可以使用持续集成服务器所自带的制品库进行存放。

提交测试套件的原则与重要实践

测试套件中占最多的应该是单元测试,因为它不牵扯外部系统的调用,能够及时反馈,测试覆盖率可达80%。
1.避免用户界面
2.使用依赖注入
3.避免使用数据库
4.在单元测试中避免异步
5.使用测试替身

总结

我的疑惑

  • 根据之前的章节,提交至版本控制系统的代码都应该是正确可运行的,那这个时候持续集成服务器发现变更后,签出代码会跑测试么?还有必要么?,其中我觉得测试下代码覆盖率,圈复杂度是有必要。
  • 构建不应该是系统自动的一个行为,为什么会有一个较差的构建系统会导致系统停止,是不是说构建也可以人为的来设计?
  • 圈复杂度

谷歌结果:在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数

  • 复制粘贴分析
    谷歌了没有找到合适的解释,个人理解是对项目中代码的相似性做以分析。

  • 输入输出分析是怎么进行分析的

  • 依赖注入和内存数据库

  • 桩技术和模拟技术是如何区分的,个人理解桩技术就是声明一个静可用数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,812评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,626评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,144评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,052评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,925评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,035评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,461评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,150评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,413评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,501评论 2 307
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,277评论 1 325
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,159评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,528评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,868评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,143评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,407评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,615评论 2 335

推荐阅读更多精彩内容

  • 提交阶段 当项目状态更改时,提交阶段就开始。当它结束时,你要么得到失败报告,要么得到后续测试和发布阶段可用的二进制...
    落花的季节阅读 421评论 0 0
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,038评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,490评论 18 139
  • 没听过道别还要专门写篇文的,我这么想着,写下这篇文。 不知道会写多长。 我对自己说,该做个有始有终的人,所以有开头...
    梅凉阅读 780评论 41 50