转子泵 展览搭建 洗地机 金属激光切割机 套标机 MBA学位 旅游策划 杭州代理记账 淋浴房厂家 发电机 压力传感器 涂覆机 耐火窗 污泥处理 醋酸钠
咨询电话:15358169580/025-86200639
在线客服
 工作时间
周一至周五 :8:30-17:30
周六至周日 :9:00-17:00
 联系方式
电话咨询:18550619817
邮箱联系:1259438299@qq.com

可测试性设计:SAFe 中系统架构师角色的一个重要方面

2


可测试性设计:SAFe 中系统架构师角色的一个重要方面

作者:Alex Yakyma


注意:本文是社区贡献系列的一部分,该系列根据 SAFe 扩展专家社区的经验和意见提供了更多观点和指导。


系统越大,开发和维护就越困难,测试就越困难。不容易测试的系统不能轻易改变。无法更改的系统无法以敏捷方式开发和交付。此外,在处理遗留系统时,添加单元或功能测试可能非常困难,因为系统在设计时没有考虑到可测试性。在本文中,我们建议 SAFe 系统架构师可以在帮助敏捷团队设计可测试性方面发挥关键作用,我们将考虑系统设计如何影响可测试性以及如何开始改进它的许多方面。


背景


可测试性设计 DFT 并不是一个新概念。它已与电子硬件设计一起使用超过 50 年。原因很简单:如果你想在设计阶段和以后的生产阶段都能测试集成电路,你必须设计它以便可以测试它。当你设计它时,你必须把钩子放进去。你不能简单地在以后添加可测试性,因为电路已经在硅中了;你现在无法更改它。DFT 是一个关键的非功能性要求,影响着电子硬件设计的方方面面。同样,复杂的敏捷软件系统在设计和生产过程中都需要测试,并且适用相同的原则。你必须设计你的软件的可测试性,否则你将无法在完成后对其进行测试。


DFT的经济价值


敏捷测试涵盖了两个特定的业务角度:一方面,它提供了对产品进行批评的能力,从而最大限度地减少了缺陷对用户的影响。另一方面,它通过在持续集成过程中提供快速反馈来支持迭代开发。如果系统不允许进行简单的系统/组件/单元级测试,则这些因素都无法发挥作用。这意味着敏捷程序,通过每个设计决策来维持可测试性,将使企业能够实现更短的业务和架构史诗跑道。


DFT 有助于减少大型系统范围的影响,并为敏捷团队提供更易于管理的东西。这就是为什么系统架构师的角色在大规模敏捷中如此重要,但它也反映了一个不同的动机:敏捷架构师不是定义一个大设计前期(BDUF),而是通过确保开发的资产是高质量的,不需要重新审视,来帮助建立和维持有效的产品开发流程。这降低了开发延迟的成本,因为在为可测试性而设计的系统中,所有作业都需要更少的时间。


对系统架构的影响


经验告诉我们,当我们设计可测试性时,我们最终会实现更好的设计。事实上,DFT 通常推动关注点、分层架构或面向服务、代码中实体的高度内聚性等的明确分离。我们的测试的行为非常类似于系统客户端”——单元测试模仿调用目标类方法的相应客户端类的行为;组件测试模仿客户端组件的行为;功能测试模仿最终用户,即整个系统的客户端。如果我们在所有这些层面上设计可测试性,我们还在类、组件、服务之间以及最终的用户界面和系统的其余部分之间提供清晰易懂的接口。


文化影响


可测试性设计不能仅仅被视为系统架构师的责任。所有敏捷团队都必须进行 DFT,这是一个支持开发人员、测试人员和系统架构师之间产品开发工作的持续旅程。它创造了一种对产品开发流程负有共同责任的文化,所有人都积极为系统设计和可测试性做出贡献。


系统架构师角色和 DFT


在可测试性设计方面,系统架构师可以在 DFT 中发挥主要作用:


技术选择
除了其主要目的外,软件库、框架、存储库和服务还应该支持可测试性。例如,支持控制反转的技术可能很有用,不仅在设计灵活的系统方面,而且在可测试性方面也是如此。
实施决定
例如,在数据库端有太多的逻辑(这是许多产品的常见问题)使得测试几乎不可能。系统内异步消息队列的不合理使用也是如此。
设计约定
外观、网关或观察器等设计模式可促进可测试性。然而,像使用 Web 服务代理类这样常见的事情可能并非如此。一个好的约定是使用一些抽象接口,它将与代理交互,从而允许在必要时用模拟对象替换一个。
创建假对象和模拟的方法
应该应用哪些工具和方法来在代码中创建存根、模拟和间谍,以支持单元和组件测试?
日志记录和转储
在大型系统中,通常一些系统级测试失败,但所有单元测试都通过。因此,如果没有良好的日志记录方法和检索彻底内存(或协议)转储的能力,可能很难诊断问题的根本原因。
配置灵活
这允许简单地部署到测试环境,并通过简单地更新配置文件轻松链接测试数据源和外部模拟对象。



1.系统架构师在促进系统可测试性方面的作用。

从哪里开始?

上表旨在提供一组初始想法,这些想法可能会为 DFT 生成一些新的架构史诗。当然,渐进式方法始终是最好的,因为团队可以继续专注于新功能和故事的价值交付,同时增加可测试性。此外,DFT的文化方面最好通过实施渐进式步骤来实现,这些步骤向团队表明,在每一个小小的设计计划之后,在不同的抽象级别上编写新的测试更容易,从而提高团队速度。


让团队获取一些当前的用户故事,并确定最少的重新设计工作量,让他们在以前无法编写的领域编写一些单元测试。然后,他们可以与他人分享研究结果和实际方法(例如,在最近的设计工作委员会会议上)。在表 1 中,您可以看到上述哪些方面可能会受到这些发现的影响——是否为所有团队提供了新的设计指南或对系统配置进行了更改等?


我们建议在系统级别使用类似的方法:让系统团队或功能团队尝试自动执行系统级测试,他们以前会失败,但让他们在当前的一两个功能的上下文中这样做。DFT是一项艰巨的工作。但就像其他所有事情一样,我们可以逐步接近它。


当我们谈论敏捷测试以及立即开始自动化测试的重要性时,我们必须考虑到当前的软件系统通常是不利于测试的。一方面,这是该行业的一个可悲事实;另一方面,通过为可测试性而设计,敏捷企业有了超越竞争对手的新机会,因为公司增强了其能力,能够为用户提供更多价值,并且做得更快。


分享到:
树脂排水沟 锅炉除尘器 喷码机