我公司在市场上有几种产品,在欧洲和美国的多个办事处开发,使用相同的公共图书馆。这个公共库封装了许多特定于行业的细节,并添加了一些增强的用户控件、扩展方法、数学位等。
当QA带着某个产品的bug或产品所有者回来时会出现问题,而该bug或更改需要对共享库中的代码进行更改。因为这是对我们所有产品所使用的库的一种改变,这种变化可能会产生深远的影响。缺陷/缺陷报告/更改请求通常放在“原始”产品的产品待办事项中,即由QA测试的产品或请求更改的PO拥有的产品。这意味着在其他产品中对于这些更改几乎没有什么可见性,而且当库在这些其他产品中被更新时,事情可能会中断(很明显是编译时错误,或者更微妙地是由于不同的运行时行为)。其他产品的QA可能会将变化视为回归失败。
这个库在这一点上相当成熟,所以所做的大部分更改都是错误修复的结果。变更是通过请求提交的,每个区域办事处的代表都可以对其进行审查(尽管只有一个需要批准);已知的高影响更改通常通过电子邮件进行交流,但在某一项目恢复开发时可能会被遗忘。
如何管理这样的库,以确保QA产品所有者和开发人员具有良好的可见性?
发布于 2016-12-24 05:41:09
根据您的描述,公共库似乎是许多项目所共有的业务功能和实用程序的集合。由一个产品的修改引起的回归可能不会立即出现在其他产品中。
一些核心建议是:
正如你提到的,图书馆相当稳定。如果您还没有对这个库进行版本化,这是防止副作用的第一步。一旦发布,版本工件就被认为是不可变的。
每个消费项目都应该锁定到库的一个已知的好版本。QA只需要担心,当他们选择更新到更新的库版本时,就会中断更改。在这一点上,他们应该运行完全回归测试。
语义版本化 (主要小补丁)是一种基于兼容性的版本控制方案,可能适用于您的情况。库版本可以通过工件管理工具(如NuGet )轻松管理。源代码可以使用分支、标记或类似机制来维护。
发行说明:有了版本控制,您就有了发行说明的额外优势。每个版本都可以描述该版本中的bug修复和增强。这使得产品所有者、开发人员和QA更容易看到,这样他们就可以做出明智的决定。
根据历史数据,您可能会很好地了解库的哪些区域发生了最大的变化或变化。您也可能在同一个库中有相当独立的功能区域。
将这些区域划分为独立的库和模块可能是个好主意,每个库和模块都有自己的版本和锁定的依赖版本。这有助于减少版本升级的影响,并将涟漪效应隔离到更明确的区域。
产品所有者现在可以跟踪哪些子模块最需要关注,并能够创建一个专门的团队来管理或QA这些特定的领域,如果必要的话。
定义您的“单位”的功能。在大多数实用程序中,单元是单个类或单个函数。在某些情况下,它可能是一个模块。
设计单元测试以涵盖单个功能。使用80-20条规则来决定哪些单元最需要测试。此外,根据需要设计端到端测试,模拟示例库使用者并测试预期的行为。
这将是第一道防线,应该提醒开发人员他们正在进行不兼容的更改,并且需要更新版本。
https://softwareengineering.stackexchange.com/questions/338311
复制相似问题