韩师傅就是我

测试开发工程师

为什么新版本发布通常要加班

前言

发版要加班通常有3个原因,

  • 排期的问题
  • 代码合并的问题
  • 如何判断质量是否达到发布标准的问题。

一个技术团队的工程能力越强,后两个原因导致的加班就会越少。无论什么岗位,新同学进入技术团队以后,其实首先要了解的就是这个团队的工程能力(因为要上手干活)

排期,引发的加班

  • 我们假设一个需求,开发一周,测试一周。
  • 测试一周,意味着第5个工作日,测试仍然在提bug(如果运气加上规划的不好,这一天还有可能提出来致命bug)
  • 那么,第6个工作日的工作量见下图
  • 所以,如果我们要在这一天出一个正式的版本,那通常是要加班的。

  • 如何解决呢?没有好办法,只能尽量做到
    • 砍需求
    • bug发现的越早大家越轻松;测试要提前做好规划,设计好冒烟测试,先测高风险用例,避免第5天还出大量bug,严重bug。
    • bug越少大家越轻松;和开发团队沟通,商量着如何提高代码质量和debug能力。少写bug、解bug不要引入新bug。

合并代码,引发的加班

现代源代码控制系统提供了强大的工具,可轻松在源代码中创建分支。但最终这些分支必须合并在一起,许多团队花费了大量时间来处理错综复杂的分支

—马丁 福勒

在集成或者发布的当天,开发最重要的工作是合并代码,如果合并了很久还没合并完,你去问了一下,大概率得到这样的回答(不同团队,术语可能不一样,但是意思差不多)

  • 在等xxx团队或者xxx模块合并,我们依赖他们,他们进了我们才能进。(关键词:等依赖)
  • 在解决冲突(关键词:冲突)
  • 所以,依赖和冲突,是代码无法顺利合并、引发加班的主要原因

一次不顺利的发布

什么是冲突?

代码冲突,是指在多人协作开发软件时,当多个开发者修改了同一份代码文件的相同部分,导致代码合并时出现的不一致性。这种不一致性需要人工介入才能解决,否则会导致程序无法正常运行。

代码冲突可以分为两种主要类型:

  • 文本冲突
    • 例如,例如两个开发者将同一个变量修改成了不同的名字。
  • 语义冲突
    • 逻辑冲突,后边会结合依赖一起举一个例子。

什么是依赖

模块 B 调用了模块 A 的函数,那么模块 B 就依赖于模块 A

一个依赖导致语义冲突的例子

  • 一个新需求,需要B和A两个团队配合完成
  • B团队计划新增函数func B
  • A团队计划新增函数func A
  • func B需要调用func A(func B依赖func A)
  • 项目完工合并代码时,B团队必须等待A团队先合并代码到master后,自己才能合并代码到master,否则在master上就会产生冲突。

无法判断版本质量是否达到发布标准,引发的加班

待续

为什么新版本发布通常要加班

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top