我们的团队正计划在遗留代码base.Its中重构一些模块,这是一个用java编写的web应用程序。它根本没有单元测试。
我要求开发人员在重构之前为现有功能编写一个junit,但我相信这不会很广泛。
我还可以采取哪些其他措施(黑盒/白盒/进程)来确保重构不会干扰任何现有功能。
目前的系统相当稳定,已经运行了8年多。
谢谢,格雷
发布于 2010-11-23 22:57:47
在你开始之前,先读一读迈克尔·费瑟斯的Working Effectively with Legacy Code。
处于当前状态的代码很可能无法进行有效的单元测试(因为它可能不在单元中)。我所看到的工作良好的是集成级测试,只需使用一些合理的输入并记录输出即可;web应用程序使这一点特别合适。编写这些,然后产生小的方法和类-单元测试所有新的东西-同时保持这些高级别测试工作。这比从一开始就正确地做TDD要多得多,但这绝对是可行的。
发布于 2010-11-23 22:18:42
您可能会面临两个问题:代码在现代意义上不是单元可测试的,并且代码中存在尚未被捕获的bug。面对这种情况,我强烈建议您尽可能多地使用黑白盒测试。我理解,这是一个痛苦的过程,但有一种方法可以减轻它。
您的工程师是否可以提取一些接口,以便您可以创建一些集成测试。也就是说,如果它们正在重构,它们是否可以围绕一些公共区域进行固化,并将应用程序划分为较小的块,这些块在可预见的未来将在开发周期内基本保持不变?这将允许您至少使用一些更大的方法来执行更多的测试。它还将允许您,qa人员,对现有代码进行询问,以获得它所期望的结果。
发布于 2010-11-23 22:16:14
除了编写更多的junit之外,您还可以始终record test scripts with JMeter. Include断言,以确保获得预期的结果。
https://stackoverflow.com/questions/4256820
复制相似问题