变频器实习DAY41 单元测试介绍

目录

变频器实习DAY41

一、工作内容

1.1 硬性平台空转测试和代码阅读

  • 在测试的过程中发现另一个bug,在电机的运行过程中切换电机的旋转方向会导致点击无法通过手操器停止的问题
  • 虽然最后也没有发现解决问题的办法,但是实际工作场景中一般不会有这样的情况,再加上领导很忙还有很多事情要做,于是就不了了之了

二、学习内容

2.1 smartrocket软件介绍

SmartRocket是上海工业控制安全创新科技有限公司推出的一系列工业软件工具的品牌名称,旗下包含多种功能各异的工具,用于满足软件安全、测试、建模等多方面的需求。以下是对其主要产品的概括介绍:

  • SmartRocket Scanner:这是一款开源组件成分资产安全与合规分析管理工具。它基于左移安全、DevSecOps、实时监控的安全理念,可在软件生命周期中对开源软件和依赖组件进行持续自动化识别、组件清单管理、安全风险分析与漏洞修复、许可证风险分析等。它能与第三方开发工具无缝集成,实现自动化的安全分析、策略执行、持续集成以及实时监控,帮助企业规避开源风险,确保产品和服务的安全。
  • SmartRocket TestGrid:这是一款嵌入式软件智能化测试工具,支持静态分析,可根据国军标、MISRA标准对源码进行质量分析。它还支持C/C++语言的单元测试,采用人工智能算法,利用自动推理与符号执行技术,分析程序路径,产生满足覆盖率的测试用例并在后台自动执行。此外,它还支持不同程度的集成测试,用户可自主控制调用函数是否打桩,并且能够自动生成静态分析、单元测试和集成测试的报告。
  • SmartRocket Modeler:这是一款可视化建模开发工具,支持嵌入式软件模型的设计与开发,能够从系统需求出发,为用户提供基于Lustre模型语言的图形化建模、模型静态检查、模型仿真与调试、模型在环测试、C代码自动生成等功能。同时,该工具支持全系列国产操作系统,可降低开发成本、缩短开发周期、减少开发风险。
  • SmartRocket Unit:这是一款单元测试工具,可以自动生成满足语句、分支、MC/DC准则的测试用例,自动执行测试驱动。通过使用SmartRocket Unit,用户可快速对安全攸关的代码进行单元级别的白盒测试和回归测试,从而进一步提升单元测试的效率。

2.2 单元测试

  • 单元测试是软件开发中最基础、最早期 的测试环节,核心是对软件中最小的可测试"单元"(通常是单个函数、方法、类或模块)进行独立验证,确保其在隔离环境下能按照设计预期正确执行,是保障代码质量、降低后续维护成本的关键实践。
1. 单元测试的核心定义与关键特征
  • 测试对象"小而独立":测试的最小单元不依赖外部系统(如数据库、网络接口、其他模块),需通过"打桩(Stub)""Mock(模拟)"等技术隔离外部依赖(例如,测试"计算订单金额"的函数时,不实际调用支付接口,而是用Mock模拟支付状态返回)。
  • 执行"自动化优先":单元测试通常由开发者编写代码实现自动化执行(而非手动测试),可集成到开发流程(如编译后自动运行),快速反馈结果。
  • 验证"单一职责":每个单元测试用例聚焦一个具体场景(如"输入合法参数时返回正确结果""输入异常参数时抛出指定错误"),不覆盖复杂业务流程。
2. 单元测试的核心作用

单元测试的价值贯穿"开发-测试-维护"全流程,核心作用可概括为4点:

  1. 早期发现代码缺陷,降低修复成本

    单元测试在代码编写完成后立即执行,能最快发现"逻辑错误""边界值处理异常""参数校验缺失"等问题(例如,函数未处理"输入为0"的边界情况)。缺陷发现越早,修复成本越低(据行业数据,单元测试阶段修复缺陷的成本,仅为上线后修复成本的1/10~1/5)。

  2. 保障代码修改安全,支持"放心重构"

    软件开发中常需迭代(如优化性能、修改逻辑)或重构(如调整代码结构但不改变功能),单元测试可作为"安全网":若修改后单元测试全部通过,说明核心功能未被破坏;若测试失败,可快速定位修改引入的问题(例如,修改排序算法后,通过单元测试验证"空数组""重复元素"等场景是否仍正确)。

  3. 提升代码设计质量,倒逼"低耦合"

    为了让单元能被独立测试,开发者需在设计时避免模块间过度依赖(例如,若一个函数强依赖另一个模块的内部逻辑,会导致无法隔离测试),这种约束会倒逼代码遵循"高内聚、低耦合"的设计原则,从源头提升软件可维护性。

  4. 替代"文档",明确代码用途

    优质的单元测试用例本身就是"活文档":通过测试用例的输入、预期输出,其他开发者能快速理解该单元的功能(例如,看到"test_calculate_discount_when_user_is_vip"的测试用例,可直接明确"VIP用户的折扣计算规则"),比传统文档更易维护、更贴近实际代码行为。

附学习参考网址

  1. <>

欢迎大家有问题评论交流 (* ^ ω ^)

相关推荐
苏纪云4 小时前
Ajax笔记(下)
前端·javascript·笔记·ajax
要做朋鱼燕5 小时前
【C++】 Vector容器操作全解析
开发语言·c++·笔记·学习笔记
wb1896 小时前
CICD的持续集成与持续交付和Zabbix
运维·笔记·ci/cd·云计算·zabbix
mysla6 小时前
嵌入式学习day40-硬件(1)
学习
三天不学习6 小时前
从零开始学习C#上位机开发学习进阶路线,窥探工业自动化和物联网应用
学习·c#·自动化
油炸自行车6 小时前
【Qt】bug排查笔记——QMetaObject::invokeMethod: No such method
c++·笔记·qt·bug
新子y7 小时前
【小白笔记】使用 robocopy 解决大文件复制难题:从踩坑到精通
笔记
EchoSam7 小时前
【Linux笔记】命令行与vim基础
linux·笔记·vim
武子康7 小时前
AI-调查研究-67-具身智能 核心技术构成全解析:感知、决策、学习与交互的闭环系统
人工智能·科技·学习·程序人生·ai·职场和发展·职场发展