在棕地应用程序中实施单元测试的首要任务是什么?
-
09-06-2019 - |
题
你首先重构你的SQL吗?你的建筑?或者你的代码库?你会改变语言吗?你会抛弃一切并从头开始吗?[不重构]
解决方案
我正在向大型遗留意大利面条代码库添加单元测试。
我的方法是,当被要求解决问题时,我尝试围绕与我当前任务相关的代码库部分创建一个新的包装器。这个新的包装器是使用 TTD(首先编写测试)开发的。有的时候打电话 进入 未经单元测试的遗留代码。有时我会制作现有模块的新副本并开始对其进行严重的破坏。有时我会从头开始重写功能。
但当我对其进行了相当好的测试时,我感觉一切都在掌控之中。
我发现这个代码库是通过太多的复制和粘贴而开发的,一旦我理解了特定的部分,并从中提取了一些功能(首先进行测试)......这些函数通常可以在许多其他地方使用,因此用我自己的单元测试库替换遗留代码的速度会增加。
我不会(也没有权力)尝试重写或添加测试到当前问题未触及的代码部分(通常是我试图修复的错误),但我确实有相当积极主动的立场任何涉及到的并且可能相关的事情。
更新 :企鹅问:“你们用什么语言工作?您有推荐的特定测试工具吗?”
现在我在...工作呃……腮腺炎!但同样的原则在任何地方都适用。
MinUnit 改变了我对 UT 的理解: http://www.jera.com/techinfo/jtns/jtn002.html
当我看到 MinUnit 时,这对我来说是一种“禅宗”的启蒙时刻。它消除了我对单元测试的误解,认为单元测试是复杂的事情,需要复杂的 OO 框架等。我知道 UT 只是编写一堆测试。您可以自己用任何您喜欢的语言在大约 3 分钟内编写“工具”。只要行动起来就可以了。
其他提示
这实际上取决于代码库的状态......有大量的课程吗?一堂课有多种方法吗?类之间紧密耦合吗?配置是负担吗?
考虑到这一点,我建议阅读 有效地处理遗留代码, ,找出您的问题,并应用建议。