遗留系统的自动化策略

简介: 遗留系统的自动化策略


维基百科:遗留系统是一种旧的方法、旧的技术、旧的计算机系统或应用程序,“属于或与以前的、过时的计算机系统有关” ,但仍在使用中。通常,将系统称为“遗留系统”意味着它可能已经过时或需要更换。


什么样的系统是遗留系统


Martin Fowler说过Let’s face it, all we are doing is writing tomorrow’s legacy software today.这句话说出了残酷的现实,我们团队现在写的每一行代码最后都会变成遗留系统的代码,这也变相的说明每一个研发工程师都脱离不了改造遗留系统的宿命。从Martin Fowler对遗留系统的描述中我们不难看出来,遗留系统并不是单靠系统的第一行代码距离现在的时间来衡量的,还包含了代码的质量、架构设计、DevOps流水线、支持系统等。很多遗留系统的代码质量都非常差,没有单元测试、API自动化测试、UI自动化测试等自动化的质量保障活动;架构设计混乱,各种设计方式、技术交织在一起;没有交付流水线,所有的交付流程仰仗于某几个研发工程师等等问题才是遗留系统需要面对的痛点。


Michael Feathers在他的书《Morking Bfectively with Legacy Code》中给出了遗留系统的定义:没有自动化测试的系统就是遗留系统。虽然这个定义并不是所有人都认同,但是已经足以看出没有自动化测试的遗留系统对于参与修改的开发工程师是一个灾难。那么对于一个遗留系统,并不是每次都可以启动重构大法完成项目的改进,通过弥补自动化测试解决遗留系统变更的痛点也是不失是一个好办法。



没有自动化测试的遗留系统如何弥补


遗留系统弥补自动化测试实践的首要原则就是”让自动化测试那些你修改的代码“。这句话指导我们所有自动化测试的解决方案,包含了单元测试、API自动化测试、UI自动化测试,甚至也覆盖了静态代码扫码(技术债)。


在面对一个没有任何自动化测试的系统的时候,往往束手无策,尤其是面对几百个小时的技术债务的时候。依据上面的首要原则,要完成所有变更部分的技术债务偿还,也就是修改了那个Class,就要修复该类中的技术债务(也就是静态代码扫码的问题)。并针对变更代码完成单元测试的补充,目标可以定的高一些,例如单元测试增量代码行覆盖率为80%(这个指标也并不是通用的,但是更期望于定一个增量代码行覆盖的高指标,这样可以促使快速还清自动化测试缺失的债务)。


在API自动化测试部分,对应代码变更的API要完成APi自动化测试的开发,并加入到DevOps流水线中发挥增量接口覆盖率100%的门禁检查(很多开源的流水线并不支持这个指标,因此要靠二次开发)。UI自动化则是站在主要业务之上,如果流程中有对一个逻辑的代码发生了变更,那么对应的UI自动化测试就要完成开发并交由流水线触发,并且设置100%成功的质量门禁约束制品晋级。


通过如上的办法,逐渐地将有变更、常变更的代码用自动化测试建立起质量保障的门禁。其他的没有发生过变更的代码,可以在需要变更的时候再补充自动化测试,这样既能发挥自动化测试的优越性也不会给制品团队太大的自动化测试的债务压力,最重要的是不会让开发工程师不敢修改遗留系统的代码。













目录
相关文章
|
22天前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
46 3
|
1天前
|
jenkins 测试技术 持续交付
软件测试中的自动化测试策略
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和效率的关键工具。本文将探讨自动化测试的重要性、实施策略以及面临的挑战,旨在为软件开发团队提供实用的指导和建议。
|
4天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
19天前
|
机器学习/深度学习 人工智能 机器人
智能废物管理系统:城市垃圾的自动化处理
【10月更文挑战第24天】智能废物管理系统利用物联网、大数据、人工智能和自动化机器人等技术,实现城市垃圾从分类、收集到处理的全过程自动化,提高处理效率,优化资源配置,提升居民参与度,降低运营成本,推动城市可持续发展。
|
2天前
|
运维 监控 网络协议
自动化运维的魔法——打造高效、可靠的系统
【10月更文挑战第32天】在数字化时代的浪潮下,运维不再是简单的硬件维护和故障排除。它已经演变成一场关乎效率、稳定性和创新的技术革命。自动化运维,作为这场革命的核心,正引领着企业走向更加智能和高效的未来。本文将带你探索自动化运维的世界,揭示其背后的原理和实践,让你领略到自动化带来的无限可能。
8 0
|
27天前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
147 5
|
29天前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
1月前
|
测试技术 持续交付 数据安全/隐私保护
软件测试中的自动化策略:提升效率与准确性
【10月更文挑战第2天】本文深入探讨了软件测试自动化的重要性,并提供了实用的自动化测试策略。文章首先概述了自动化测试的优势,然后详细解释了如何设计有效的测试用例和选择恰当的自动化工具。通过实例演示,我们展示了如何在软件开发周期中整合自动化测试,以提高产品质量和开发效率。最后,文章讨论了自动化测试面临的挑战及应对策略,为读者提供了一套完整的解决方案。
|
1月前
|
运维 Prometheus 监控
运维中的自动化实践每月一次的系统维护曾经是许多企业的噩梦。不仅因为停机时间长,更因为手动操作容易出错。然而,随着自动化工具的引入,这一切正在悄然改变。本文将探讨自动化在IT运维中的重要性及其具体应用。
在当今信息技术飞速发展的时代,企业对系统的稳定性和效率要求越来越高。传统的手动运维方式已经无法满足现代企业的需求。自动化技术的引入不仅提高了运维效率,还显著降低了出错风险。本文通过几个实际案例,展示了自动化在IT运维中的具体应用,包括自动化部署、监控告警和故障排除等方面,旨在为读者提供一些实用的参考。
|
1月前
|
测试技术 持续交付 Python
软件测试中的自动化策略与实践
【10月更文挑战第2天】在软件开发的海洋中,自动化测试如同一座灯塔,为追求高效率和高质量的航程提供方向。本文将深入探讨自动化测试的策略与实践,从基础理论到实际应用,带领读者领略自动化测试的魅力和挑战。