广州电脑培训_电脑培训班_电脑培训课程-北大青鸟电脑学校
当前位置:网站首页 > 电脑培训网-电脑学校 > 佛山电脑学校 > 正文

学习嵌入式软件开发测试有什么方法?

作者:广州电脑培训刘发布时间:2020-11-29分类:佛山电脑学校浏览:648


导读:今天为大家分享准备的内容充满了嵌入式软件开发测试技术、干货。如果还不知道如何进行嵌入式软件开发测试,如果还不知道嵌入式软件开发测试有什么秘诀,那么这篇文章值得一看。1.掌握工具的使...

今天为大家分享准备的内容充满了嵌入式软件开发测试技术、干货。如果还不知道如何进行嵌入式软件开发测试,如果还不知道嵌入式软件开发测试有什么秘诀,那么这篇文章值得一看。


1.掌握工具的使用方法

嵌入式系统安全的失败会造成致命的结果,因此嵌入式系统通常对可靠性要求很高。需要对嵌入式系统、嵌入式软件进行严格的测试、验证和验证。在这个过程中,我们应该学会使用工具来提高效率,提高测试的可靠性。下面介绍一些测试工具。


源代码级调试器:此调试器通常提供单阶段或多阶段调试、设置断点、检测内存、查看变量等功能,是嵌入式调试中最有效的调试方法。例如,VxWorksTornadoII提供的gdb就是这种类型。


简单实用的打印显示工具:printf或其他类似的打印显示工具被认为是最灵活最简单的调试工具。在代码执行过程中打印各种变量,可以知道代码是如何执行的。但是,由于printf对一般代码执行的干扰很大(通常printf需要CPU很长时间),因此建议您小心使用,因此最好设置打印开关来控制打印。


ROM监视器:ROM监视器是驻留在嵌入式系统ROM上的小程序,通过串行或网络连接和工作站上运行的调试软件进行通信。这是便宜的方法,当然是最低水平的技术。除了需要一个通信端口和少量内存空间外,不需要其他专用硬件。提供代码下载、执行控制、断点、单步步进、观察、寄存器和内存修改等功能。ROM监视器是操作软件的一部分,因此只有在应用程序运行时才能正常工作。要检查CPU和应用程序的状态,必须停止应用程序进入,然后重新尝试ROM显示器。


数据监视器:该监视器不仅可以在不停止CPU执行的情况下显示指定变量的内容,还可以收集单个变量的更改过程,并以图形方式显示。


操作系统监视器:操作系统监视器可以显示任务切换、发送/接收信号、中断等事件。另一方面,这些显示器可以显示事件之间的关系和时间关系。另一方面,还提供了对信号量优先级反转、死锁和中断延迟等问题的诊断。


性能分析工具:可用于测试CPU消耗的地方。使用profiler工具,您可以知道系统的瓶颈、CPU利用率和需要优化的地方。


内存测试工具:可以发现内存使用问题,如内存泄漏、内存碎片、内存冲突等。如果系统发现不可预测或间歇性问题,则应使用内存测试工具进行测试。


运行跟踪器:可以显示CPU执行的函数、正在调用的函数、参数、调用时间等。此工具主要用于测试代码逻辑,您可以在许多事件中找到异常。


复盖工具:主要是通知CPU具体运行相应的代码,并且没有运行相应的代码分支。这有助于提高代码质量和删除不必要的代码。


GUI测试工具:很多嵌入式应用程序与某种形式的图形用户界面交互,一些系统性能测试是以用户输入响应时间为基础的。GUI测试工具可用作脚本工具,用于在开发环境中运行测试使用案例,包括未来分析和比较、测试过程的设置和管理、活动记录和回放、屏幕显示捕获等。许多嵌入式设备没有GUI,但通常可以插入嵌入式设备来运行GUI测试脚本。在这种情况下,可能需要更改测试的代码,但可以节省功能测试和回归测试时间。


自建工具:嵌入式应用程序有时需要为特定目的编写自己的工具,以实现特定的测试目的。


2.内存问题

内存问题非常危险,不能轻易解决。有三种主要类型:内存泄漏、内存碎片和内存冲突。对内存问题的态度必须明确。那就是早期发现“治疗”。内存泄漏问题通常是隐藏的,很难通过代码读取发现。库中可能会出现一些内存泄漏。这本身可能是库中的bug,也可能是程序员不正确理解界面说明书而误用的。


内存冲突是最严重的内存使用结果,包括阵列访问限制、已禁用的内存写入、指针计算错误、访问堆栈地址限制等。这种内存冲突导致系统故障随机发生,难以找到,目前几乎没有解决问题的工具。

总之,使用内存管理单元要注意,要严格遵守使用规则(例如,谁分配了释放等)。


深入理解代码优化

关于系统稳定性,代码效率对嵌入式系统太重要了,所以对实时性和速度想得更多。知道如何优化代码是所有嵌入式软件开发人员必须具备的技术。代码优化的前提是找到实际需要优化的部分的代码。前面提到的配置文件(性能分析工具、部分功能的IDE提供的内置工具)可以记录各种情况,包括每项任务的CPU利用率、是否分配每项任务的优先级、数据复制次数、磁盘访问次数、是否调用网络收发程序、代码是否关闭等。


4.不要自己在海里捞针

调试半死的时候,你有没有想过,为了找到捷径,你可能没有好好遵守,没有检测到假设条件或算法的正确性,或者没有标记出可能有问题的代码?为了最大限度地暴露和捕捉问题的根本原因,可以设计更全面的错误跟踪代码。处理每个函数调用失败,并尽可能检测每个参数输入输出的有效性,包括检测指针、过程调用是否超出或超出。


5.再现和隔离问题

对于与模块无关的大型项目,使用隔离方法通常会处理隐藏非常深的错误的最后一个项目方法。如果问题间歇性发生,则需要记录再现和再现问题的整个过程,以便下次使用这些条件再现问题。如果确信可以使用记录的条件再现问题,就可以隔离问题。


6.以退为进

跟踪并记录过去代码的修改,有助于以后出现问题后的调试。如果有一天,你最近修改的程序跑了很长时间,突然死亡,你的第一反应是,我到底改变了什么。因为上次修改前很好。那么,与上次相比,如何检测这次修改呢?是的,代码控制系统SCS或版本控制系统VCS(ConcurrentVersionControl,CVS是VCS的进化版本)。


7.检查测试的完整性

你的测试有多全面?复盖测试工具会告诉您CPU是否实际运行了相应的代码。好的复盖工具通常会通知大约20%到40%的代码没有问题,剩下的可能会有错误。叠加工具有不同的测试级别,用户可以根据需要选择级别。


8.提高代码质量意味着节省时间

研究结果显示,80%以上的软件开发时间用于自身代码调试(单位测试)。调试自己和其他相关代码(模块间测试)。整个系统调试(系统测试),更糟的是,查找bug可能需要10-200倍的时间,这个bug一开始很容易找到。小bug可以让你付出很大的代价,即使对整个系统的性能没有太大影响,但也会影响到你能看到的部分。因此,为了缩短调试代码,需要开发好的编码和测试手段来提高代码质量。


9.发现它,分析它,解决它

一些隐藏的问题,即使使用完所有工具,也可能找不到其根源。这时,我们能做的就是通过这些问题所代表的外在现象或部分数据输出来发现其规律或理想。一旦发现任何异常,就要深刻理解其根源并追溯到解决为止。


10.利用初学者的思维

有人这样说。“初学者的头脑中可能会有各种情况,但专家的头脑中可能会非常单一。”有时一些简单的问题会被认为很复杂,有些简单的系统会因为“专家思考”而被设计得很复杂。当你遇到问题时,关掉电脑,出去走走,把你的问题告诉你的朋友,甚至你的小狗,也许他们能给你意想不到的灵感。



佛山电脑学校排行
最近发表
标签列表