我正在研究一个非常大的数据密集型遗留应用程序。代码库和代码都是数据库规模庞大。大量的业务逻辑遍布所有层,包括存储过程。
是否有人建议如何开始将“单元”测试(技术上的集成测试,因为他们需要跨层级测试几乎任何给定过程的单个方面)以有效的方式应用到应用程序中?当前的架构不容易支持任何类型的注入或模拟。正在编写新代码以便于测试,但遗留代码呢?由于数据库本身和业务逻辑的强烈依赖性,我目前正在使用内联sql来查找用于测试的数据,但这些都非常耗时。创建视图和/或存储过程是不够的。
您采取了哪些方法(如果适用)?什么有用?什么没有&为什么?任何建议,将不胜感激。感谢。
答案 0 :(得分:11)
获取Michael Feathers的Working Effectively with Legacy Code副本。对于使用大型未经测试的代码库,它提供了很多有用的建议。
另一本好书是Object Oriented Reengineering Patterns。本书的大部分内容并非针对面向对象的软件。全文可以PDF格式免费下载。
根据我自己的经验:尝试......
要避免的事情:
答案 1 :(得分:0)
“测试传统应用程序现代化”,重点介绍:
如何在AscentialTest中创建测试的高级概述
将遗留对象转换为新平台的方法对象定义的组件
如何确保应用程序的现代化版本产生相同的结果
有关测试遗留应用程序使用的更多详细信息,请查看此处:
答案 2 :(得分:0)
如前所述,那里有一些非常好的书。强烈建议您看一看有效使用旧版代码。
您可以做的事情就是遵循数据驱动的方法,观察您的应用程序,并在其中更“痛苦”的地方引入测试。半确定性方法可能会有用:https://link.medium.com/zY9Tysfne9