0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在重构或重新设计时验证你的代码

星星科技指导员 来源:嵌入式计算设计 作者:Pierre-Henri 2022-06-06 09:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

这些概念之间的主要区别在于:重新设计意味着您修改软件以更改其功能,而重构则是努力修改其工作方式。

一切都是为了改变。

“当源代码被修改时,我有哪些选择来维护我现有的测试?” 这是我在与客户交谈时遇到的一个非常常见的问题。

我的一些对话者指出他们必须重构他们的软件,其他一些人会谈论重新设计的努力。

首先,我注意到这两个与软件更改相关的概念在人们的头脑中并不总是很清楚,有时会在错误的环境中使用。这些概念对您来说可能非常清楚,但如果不是,这里有一些提示可以帮助您理解差异。

重新设计和重构软件有什么区别?

这些概念之间的主要区别在于:重新设计意味着您修改软件以改变它的功能,而重构则是努力修改它的工作方式。

出于多种原因进行重新设计工作。例如,由于硬件更改,软件需要在不同的 CPU 上运行或必须处理新的外围设备,因此需要修改或扩展代码以解决这些物理修改并提供新功能。当软件需要与新的或更新的 3 rd方库交互时,也可能发生重新设计,这些库提供了有益于您的应用程序的新服务。您可能会找到许多其他重新设计的原因,但在大多数情况下,在此上下文中执行的软件更改会影响一般行为或修改后的应用程序提供的功能。

与重新设计相反,重构是努力优化代码的内部实现,以提高其可维护性并降低其总体运营成本。和许多人一样,我相信 Martin Fowler 在他的“重构书”中写了软件重构的最佳定义之一:

“对软件的内部结构进行了更改,使其更易于理解且修改成本更低,而不会改变其可观察到的行为。”

鉴于此定义,重构通常由开发人员在以下情况下执行:

需要将技术债务控制在可容忍的水平,即低于从头开始重新构建整个代码看起来更经济的线以下。

降低复杂性和内部依赖,使软件更模块化、更容易扩展、对开发团队中的新人更易读和更易管理等。

确保随着时间的推移,原始设计保持可理解和清晰,并保留其预期功能。。.。。.

鉴于我们现在对重新设计与重构工作有了更清晰的了解,

哪些情况需要重新验证您的软件?

好吧,软件测试的本质是它们主要检查代码是否符合其目的。换句话说,他们根据应用程序的功能需求验证组成系统的每个软件单元的行为是否符合预期。话虽如此,如果您尝试重新设计代码,则必须对其进行测试以确保新功能已根据新引入的要求进行验证,同时确保这些新扩展不会在您现有的通过测试中引入回归。

您可能会争辩说,重构工作只会影响软件内部结构,因此不一定会影响代码接口和根据应用程序需求交付的一般服务。是的,但是…… 像任何其他开发活动一样,重构是引入新错误的一种非常简单的方法,因此您必须重新测试您的软件。维护一组完整且详尽的通过测试将确保您的重构不会导致代码中的回归错误未被检测到。确实,每当您进行小的更改时,您都应该重新执行现有的测试作为安全网,以检查您没有修改预期的行为。经过一系列增量更改后,您将以安全的方式达到最初目标的重构状态。

大多数组织希望通过在源代码更改时更新这些测试来保留先前测试投资的价值。但这会导致高昂的测试维护成本。该解决方案并不像仅仅识别受代码更改影响的受影响测试的子集以重新运行(有时称为测试影响分析或基于更改的测试)那么简单。测试维护的昂贵部分是开发人员花费在识别依赖关系和更新相应测试以确保它们与修改后的软件同步的工作。

那么适当的测试自动化如何降低这些测试维护成本呢?

1) 通过 对代码变更和测试依赖的初步分析:

· 了解正在测试的代码的更改(通过保留上次测试时的代码信息并将其与更改的代码进行比较)

· 识别哪些测试受到代码更改的影响

· 在单个视图中识别影响测试的所有代码更改

· 识别可能影响现有测试实现的代码覆盖率的代码更改

2) 通过为开发人员提供自动测试更新的指导选择,以便重新同步源代码和测试:

• 对于每个代码更改,建议对测试脚本和用例进行适当的更新

• 自动重构测试脚本以节省时间和成本

3) 对于主要影响软件内部结构的代码更改,自动生成安全网或通过测试的基线,以便:

• 在回归测试或持续集成期间查明故障

• 识别可测试性问题,例如无法访问的代码

作为专业的软件供应商,QA Systems 敏锐地意识到在软件修改的情况下控制测试维护成本的重要性。为了解决这个问题,我们开发了作为我们的测试解决方案 Cantata的一部分,一个代码更改分析和管理功能以及一个AutoTest生成框架,它们是在您的软件项目的整个生命周期中自动化单元和集成测试维护的独特技术。当您需要管理测试时,重新设计或重构您的软件不再是(烦人的)问题!

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11327

    浏览量

    225903
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

    70647
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MESA 重新编译后 GUI 非常慢,如何恢复?

    LLVM 源代码修复了“通用”CPU 问题之后),并仅针对 RISCV 目标重新编译它。 然后我需要重新编译 MESA(21.3.8 可以避免 RISCV 目标上的 JIT 功能
    发表于 03-31 08:11

    安川伺服驱动器警报代码说明

    的警报代码按故障类型整理如下: 安川伺服驱动器常见警报代码速查表 电源、参数与硬件类 警报代码 警报名称 简要含义/原因 A.02 参数和数检查异常 伺服单元内部参数数据异常,可能需要重新设
    的头像 发表于 03-13 07:35 1681次阅读
    安川伺服驱动器警报<b class='flag-5'>代码</b>说明

    Cadence 推出 ChipStack™ AI Super Agent,开辟芯片设计与验证新纪元

    解决方案——ChipStack™ AI Super Agent,标志着重新定义半导体设计方式上迈出了变革性的一步。Cadence® ChipStack AI Super Agent 是全球首个用于自动化
    的头像 发表于 03-02 13:40 308次阅读

    全球产业链重构下:中国气密性检测企业的角色变化与出海破圈路径

    全球产业链正在经历一场深刻的重构。这场重构的表象是工厂的地理迁移,本质却是质量控制权的重新分配。在这个过程中,一个看似边缘的行业——气密性检测设备制造,正站在变革的中心位置。以深圳市精诚工科
    的头像 发表于 02-27 11:54 377次阅读
    全球产业链<b class='flag-5'>重构</b>下:中国气密性检测企业的角色变化与出海破圈路径

    小型自重构机器人能不能帮忙做一个?

    :ESP32S3 小主板 多个这样的模块**对接 → 形成自重构机器人**。 要的话,我可以**直接给你 3D 图纸(STL)**。 --- # 四、控制方案(我给你现成代码) ## 核心逻辑
    发表于 02-21 19:24

    深入解析rk平台Android Bootloader核心代码:从启动流程到AVB验证

    作为Android设备启动的第一道“闸门”,Bootloader(以U-Boot为主)承担着初始化硬件、加载内核、验证镜像完整性的核心职责。今天我们拆解Rockchip平台
    的头像 发表于 01-22 07:06 489次阅读
    深入解析rk平台Android Bootloader核心<b class='flag-5'>代码</b>:从启动流程到AVB<b class='flag-5'>验证</b>

    高压放大器激励低频可重构磁电天线中的应用

    根据磁电天线的机械振荡原理,本研究提出了一种基于机械调节方法的超低频可重构磁电天线。该磁电天线的多维性能,如工作频率、带宽和品质因数(Q),可以不破坏天线结构的情况下在很大的动态范围内进行调整
    的头像 发表于 01-16 16:32 230次阅读
    高压放大器<b class='flag-5'>在</b>激励低频可<b class='flag-5'>重构</b>磁电天线中的应用

    嘉楠科技与Bitforest加拿大启动3MW算力余热回收概念验证项目

    新加坡时间2026年1月6日, 加密货币挖矿领域的创新企业嘉楠科技 (纳斯达克股票代码:CAN,以下简称“嘉楠科技”“公司” ) 宣布,与 Bitforest Investment Ltd. 加拿大曼尼托巴省联合启动 3 M
    的头像 发表于 01-09 14:15 441次阅读

    Cadence Conformal AI Studio三大核心引擎重塑IC验证

    Cadence 以 Conformal AI Studio 结合强化学习与分布式架构,全面升级 LEC、低功耗验证和 ECO, AI 设计时代开创新范式。
    的头像 发表于 01-05 10:12 701次阅读

    分析嵌入式软件代码的漏洞-代码注入

    ,实现自己的目标。当函数返回时,攻击者还可以将指令要被送达的地址覆盖重写。 2、避免代码注入 避免代码注入的最佳方法是通过设计。 如果可以使用一种***不会出现漏洞的语言,那么这是最好的因为
    发表于 12-22 12:53

    ZeroNews basic auth policy: 0代码的HTTP站点追加安全可控的基本权限验证能力

    basic auth (基本权限验证)是HTTP标准协议 RFC 7235 条中定义的一层基本权限控制规范,当外部请求访问设定了basic auth 规则的站点或者url时,会强制要求输入指定
    的头像 发表于 11-04 18:27 2007次阅读
    ZeroNews basic auth policy: 0<b class='flag-5'>代码</b>为<b class='flag-5'>你</b>的HTTP站点追加安全可控的基本权限<b class='flag-5'>验证</b>能力

    AES和SM4算法的可重构分析

    相似的实现过程,可以进行可重构设计。同时,这两种算法加解密过程中会频繁使用寄存器来存储数据 二、可重构S盒设计思路 GF下,AES的S盒输出公式为 Z=M(X^-1)+V,
    发表于 10-23 07:26

    技术解读 | 光庭信息虚拟ECU技术赋能SOA化MCU软件的早期验证与集成加速

    。当前,传统ECU开发面临两大核心挑战:   1 功能重构后的验证需求: ECU功能经服务化分层重构后,其实现方式发生根本性变化,必须进行全面的重新
    的头像 发表于 07-21 15:43 929次阅读
    技术解读 | 光庭信息虚拟ECU技术赋能SOA化MCU软件的早期<b class='flag-5'>验证</b>与集成加速

    LE Classic BT断开连接后需要重新连接多少时间?

    我们正在做一个使用 CYW20819 模块的项目,所以我们想问一些信息,如下所示: 1。BLE Classic BT 断开连接后需要重新连接多少时间? 2。有支持自动重新连接的示例吗? 3。
    发表于 07-03 07:05

    Linux中,用新设置对CY7C65215重新编程后,如何启用新设置?

    Linux 系统下,如何 1.用 Linux 中的编程新设置配置 CY7C65215? 如\"USB 串口配置实用程序\" 命令行 fwDownload.exe。 2.
    发表于 05-26 08:23