这些概念之间的主要区别在于:重新设计意味着你修改软件以改变它的功能,而重构是修改它的工作方式。
重新设计和重构软件有什么区别?
这些概念之间的主要区别在于:重新设计意味着你修改你的软件来改变它的功能,而重构是修改它的方式。
重新设计工作有多种原因。例如,由于硬件更改,软件需要在不同的CPU上工作,或者必须处理新的外围设备,因此需要修改或扩展代码以解决这些物理修改并提供新功能。当软件需要与新的或更新的软件接口时,也可能会发生重新设计 3RD-提供新服务的派对库,这些服务将使您的应用程序受益。您可能会发现重新设计的许多其他原因,但在大多数情况下,在此上下文中执行的软件更改会影响修改后的应用程序提供的一般行为或功能。
与重新设计相反,重构是一种优化代码内部实现的努力,以提高其可维护性并降低其总体运营成本。和许多人一样,我相信软件重构的最佳定义之一是由Martin Fowler在他的“重构书”中写的:
“对软件的内部结构进行了更改,使其更易于理解且修改成本更低,而无需更改其可观察的行为。
根据此定义,重构通常由开发人员在以下情况下执行:
需要将技术债务控制在可接受的水平,即低于从头开始重建整个代码似乎更经济的线。
降低复杂性和内部依赖性,使软件更模块化,更易于扩展,更易于开发团队中的新手阅读和管理等。
确保随着时间的推移,原始设计保持可理解和清晰,并保留其预期功能。..。..
鉴于我们现在对重新设计与重构工作有了更清晰的理解,
哪些情况需要重新验证您的软件?
好吧,软件测试的本质是它们主要检查代码是否符合其目的。换句话说,它们根据应用程序的功能要求验证组成系统的每个软件单元是否按预期运行。话虽如此,如果您尝试重新设计代码,则必须对其进行测试以确保根据新引入的要求验证新功能,同时确保这些新扩展不会在现有的通过测试中引入回归。
您可能会争辩说,重构工作只影响软件内部结构,因此不一定影响代码接口和根据应用程序要求交付的一般服务。是的,但是。..像任何其他开发活动一样,重构是引入新错误的一种非常简单的方法,因此您必须重新测试您的软件。维护一组完整而详尽的通过测试将确保重构不会导致代码中的回归错误未被检测到。事实上,每当你做一个小的改变时,你应该重新执行现有的测试作为安全网,以检查你没有修改预期的行为。经过一系列增量更改后,您将以安全的方式达到最初面向的重构状态。
大多数组织希望通过在源代码更改时更新这些测试来保留以前测试投资的价值。但这可能会导致高昂的测试维护成本。该解决方案并不像仅确定受代码更改影响的受影响测试的子集(有时称为测试影响分析或基于更改的测试)那样简单。测试维护的昂贵部分是开发人员花费在识别依赖项和更新相应测试以确保它们与修改后的软件同步上的努力。
那么,适当的测试自动化如何降低这些测试维护成本呢?
1)通过对代码更改和测试依赖关系的初步分析:
·了解对正在测试的代码的更改(通过保留上次测试时的代码信息并将其与更改的代码进行比较)
·确定哪些测试受代码更改的影响
·在单个视图中识别代码中影响测试的所有更改
·识别可能影响现有测试实现的代码覆盖率的代码更改
2) 通过为开发人员提供自动测试更新的指导选择,以便重新同步源代码和测试:
• 对于每个代码更改,建议对测试脚本和案例进行适当的更新
• 自动重构测试脚本,以便节省时间和成本效益
3)对于主要影响软件内部结构的代码更改,自动生成通过测试的安全网或基线,以便:
• 在回归测试或持续集成期间查明故障
• 识别可测试性问题,例如无法访问的代码
审核编辑:郭婷
-
cpu
+关注
关注
68文章
10859浏览量
211698 -
代码
+关注
关注
30文章
4786浏览量
68563
发布评论请先 登录
相关推荐
评论