DEC培训Day-2 持续交付

持续交付

1. 导论

定义:从代码编写交付到测试

持续集成

内容涵盖:改动频繁的汇聚、频繁的质量验证
目的:减少冲突总量、越早发现越容易修复、对进度的感知、尽早发布
实现:版本控制、质量内建、自动化、过程可视化、加速

持续交付

内容涵盖:在测试环境中频繁测试;适度频繁地发布上线
目的:越早发现越容易修复、对进度的感知、尽早发布
如何实现:版本控制、质量内建、自动化、过程可视化、加速;测试环境管理;分阶段流水线;部署自动化延伸至发布上线、流水线延伸至发布上线、环境管理延伸至生产环境。

持续部署

完全自动化的测试
通过测试后自动部署上线
不同定义:集成、交付、部署、发布

特性及其隔离

特性:用户故事的实现;线上功能的修复;非功能的改进
特性隔离:完成后提交、特性开关、后端先行、特性分支
发布的最小概念

部署单元

可部署运营的最小单元
有时又称为应用、服务
通常对应一个代码库
dev<=代码库<=>部署单元=>ops

如何实现服务编排?

软件交付的目标
优先级排序:

  • 在满足好(适当的质量)的前提下
  • 不断深挖快(更快的响应速度)的潜力
  • 同时适当关注多(更高的产能)和省(合理的成本)

2. 软件交付过程

准备——>代码开发到开发提交——>特性开发到特性提交——>集成到发布

前传

  1. 工作项管理
    工作项:需求、缺陷、任务
    工作项管理工具
    特性要对应到工作项
    一般最佳实践:在特性分支命名中包含feature对应的任务ID。在MR的时候自动建立MR和对应feature工作项的关联。

  2. 工作项与代码的关联

工作项与代码改动的关联

  • 在提交说明中说明工作项ID
  • 在特性分支名称中包含工作项ID
  • 通过合入请求关联

工作项与版本的关联

  • 提测版本
  • 发布版本
  1. 工作项与测试活动的关联
  • 特性 <=> 测试用例
  • 测试发现的缺陷 <=> 测试版本、测试用例、特性
  • 测试报告 <=> 测试版本、特性、测试发现的缺陷

代码开发到代码提交

内容涵盖:本地提交 VS 提交到代码托管系统
代码提交颗粒度:适当频繁提交、不要僵化执行

构建并代码级测试:单元测试、代码扫描、制品分析
部署并在环境中测试:测试环境支持端到端的测试、调试能力、针对当前改动的自动测试

特性开发到特性提交

特性颗粒度:适当小、不要僵化要求
代码提交触发的测试:有一定价值,没有在集成分支上做价值大
随时进行测试:
在特性分支上测试做的越多越好,尽量将测试从集成测试前移到特性分支
需要降低测试的成本
主要挑战:测试环境的供给和回归测试的自动化

特性提交时进行的测试和提交门禁
典型方法:
合入请求:人工代码评审、自动构建&代码级测试

特性摘除,对应特性隔离
特性的完整性:

  • 特性涉及多个代码库的开发时
  • 特性分支上一起测试
  • 特性分支一起测试
  • 集成分支上一起测试

集成到发布

发布的颗粒度:包含尽量少的特性
理想情况:每个特性单独发布

测试的颗粒度:多阶段测试、门禁
制品尽量复用,通过晋级机制保证可重复性。

发布审批

  • 一级或多级人工审批的代价是等待
  • 改进
    • 没有明确价值的:移除
    • 有明确价值的:自动判断
    • 一时难以消除的:流程电子化
      管理角度上,尽量不需要特性团队之外的人审批

灰度发布
目的:避免故障、发现缺陷、用户需求
方法:按版本灰度 <=> 不同部署实例;按特性灰度 <=> 特性开发

发布窗口
代价:等待和影响团队幸福感
改进:自动化和自助化、其他降低风险的手段、零停机部署(可优先考虑)

发布问题
发布回滚:操作便捷、执行迅速、更新相关记录
紧急发布:便捷流程、避免版本覆盖
排期变成版本问题进行修复

交叠
尽量避免长期、多版本的交叠

通知功能
精准推动到直接处理人
一般不必设置固定协调人
渠道:电子邮件、即时通讯工具

相关信息查看

  • 流程实例及其中各个步骤的详情
  • 代码改动汇总信息
  • 帮助流程改进的统计信息

对多部署单元的支持
一起测试、一起发布

测试及其自动化

互联网下,移动端和服务端要单独分开。用户体验的重要性提升。
维度:功能(70%)、性能(10%)、安全性(较弱)、兼容性(20)

测试是手段,质量是目标。
质量是一种可度量的状态,是相对恒定的。
互联网模式下的测试一定是多元化的,devops下的测试就是尽最大可能通过技术手段提高软件验证的效率和效果。
质量目前不是第一位的,互联网公司追求的是效率。

更多依赖技术变革搞定,而不是依赖人去提升。

软件质量都是设计出来的,测试只是为了验证是否可以工作。

测试一定要结合流水线。

测试过程

测试定位从纯粹的测试变化为质量把控人员。

需求——>测试用例
测试工程师共同识别出具体的需求涉及的端,考虑兼容性变化,选择测试策略。
用例设计:用例评审;开发自测用例选择;自测集初始化;接口测试脚本化。
开发提测:提测前自测,进行局部单元测试,CR。
尽量让每个人都在唯一的轨道上运行
CI流水线:代码静态扫描,自动单元测试,构建FVT环境,FVT环境健康扫描,运行猫眼测试集,模块级接口层持续测试
需求级测试(UAT):移动端测试;PC端测试;特定数据层测试;特定埋点测试;服务端性能测试;
CD流水线:应用分支合并至主干,自动构建SIT环境,自动化回归测试集,主干向其他应用分支合并,移动端稳定性测试
回归测试:局部回归测试,探索性测试,移动端性能测试;移动端安全测试;服务端安全测试;兼容性测试。
CD流水线:代码安全扫描,自动构建上线包,自动生成部署清单,灰度上线,正式上线。
上线验证:灰度包回归测试,自动包回归测试,渠道包验证,接口监控集配置。
生产监控与反馈:移动端监控;服务端监控;生产事件管理;用户反馈管理。

互联网测试过程下的质量门禁
高级:CR记录、冒烟测试结果、开发自测用例结果;功能测试通过情况、安全性情况、关联BUG解决情况。
中级:代码规范性扫描、单元测试覆盖率;专项测试通过情况、移动端性能情况、服务端性能情况、兼容性情况

经典的测试方法论在互联网下依然有用,但效果有限。重要的还是测试人员的思维能力。互联网场景下对测试效率的极致追求,迫使精准性测试的出现。

测试覆盖率——>需求覆盖率+代码覆盖率。测试的覆盖率一定要使用工具作为依托。
从纯技术的角度追求覆盖率,会极大消耗人力和成本。没有太大的必要。核心代码可以考虑

代码级软件测试的意义和必要性

  • 以最小成本保证局部代码的质量
  • 最严格的软件测试手段
  • 尽可能在早期发现问题
  • 自动化回归带来的高收益
  • 测试的同时改善设计
  • 提供函数使用示例

质量团队的高管,更注重在团队建设,将开发、测试拧成一股力量。

单元测试可面向敏感类、关键业务,底层逻辑的适度性覆盖,避免形象工程

自动化测试

前提

  • 不能取代手工测试
  • 自动化测试本身的脆弱性
  • 开发工作量远大于手工执行脚本
  • 发现的缺陷远远少于手工测试
  • 不稳定的自动化测试笔没有实现自动化更糟糕
  • 自动化代码也要不断重构
  • 业务测试和自动化测试是完全不同的两种技能

适用场景

  • 需求稳定,不会频繁变更
  • 研发和维护周期长,需要频繁执行回归测试
  • 需要在多种平台上重复运行相同测试的场景
  • 某些测试项目通过手工测试无法实现,或者手工成本太高
  • 被测软件的开发较为规范,能够保证系统的可测试性
  • 测试人员已经具备一定的编程能力
  • 以技术的维度来看,很大程度上取决于软件架构设计

互联网自动化测试领域
测试报告绝大多数应该是自动生成的,测试报告中可包含效率型结果。

接口层自动化测试要点

  1. 充分性
  • 对接口的基本验证可实现脚本全自动生成,并执行
  • 对接口的测试逻辑需透明展示,可采用代码形态和界面形态混合式
  • 根据生产监控回溯接口测试充分性
  1. 常态性
  • 接口测试是互联网全栈测试下最普遍的模式,必须持续性测试
  • 基于持续交付流水线封装冒烟级、全量回归级,以便持续集成
  • 接口的功能与性能可兼顾,且纳入常态化压测流水线
  • 接口性能作为质量交付门槛
  1. 监控性
  • 需把生产环境下的接口机监控纳入到正常的测试工作范畴,但需考虑不让测试人员重复工作,达到一次编写多处可用
  • 通过监控推动测试右移工作模式,减少用户投诉。

度量点:

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

推荐阅读更多精彩内容