嵌入式软件的开发测试要点

嵌入式测试 一、嵌入式软件测试的方法   嵌入式软件测试分为4个阶段,即模块测试、集成测试、系统测试、硬件/软件集成测试。前3个阶段适用于任何软件的测试,硬件/软件集成测试阶段是嵌入式软件所特有的,目的是验证嵌入式软件与其所控制的硬件设备能否正确地交互。   在嵌入式软件测试中,常采取折中的方式。基于目标的测试消耗较多的经费和时间,而基于宿主的测试代价较小,但毕竟是在模拟环境中进行的。目前的趋势是把更多的测试转移到宿主环境中进行,但是,目标环境的复杂性和独特性不可能完全模拟。   在两个环境中可以出现不同的软件缺 阅读详情

嵌入式开发的现状

  • 嵌入式软件从业者小众

     

    • 嵌入式开发可能是目前软件开发中的小众开发者了吧。我经常到一些论坛上逛,感觉最多的开发者是集中在Web应用的开发上,其次是Windows应用程序开 发,再次才是嵌入式系统。目前无论是从公司规模还是产品线的多少上来说,嵌入式开发都还只是小部分人的游戏。在我看来,嵌入式开发测试可能是最近几年可能 要快速增长的一个行业。因为从嵌入式的行业规模上来说,嵌入式应用应该仅次于网络应用排第二位的产业,至少从目前来看,这个产业还没有进入大规模的发展阶 段。所以我本身对这个行业才会如此看中。

  • 嵌入式开发入门门槛高

    • 感觉这个说法是一个仁者见仁,智者见智的说法。从平台上说,嵌入式平台硬件系统规范等等一切都不统一,导致了这个看似门槛高的局面。一套相同的东西,从一个平台移植到另外一个平台,至少要花费的1/4的开发量,这其中还不包括产品在不通平台的测试时间。可以说,嵌入式开发没有一套好的东西能真正做到"一次开发,到处运行",现在仍然是"一次开发,到处调试"的局面。这个局面也就是造成嵌入式开发门槛高的最主要的原因。所以平台的虚拟一致性和规范化成了现在阻碍嵌入式开发的最大门槛

  • 嵌入式产品存在过多问题

    • 嵌入式产品的开发,由于其过程的曲折性,导致很多时候对开发的工作量不能正确的估计。我看到的很多项目都有很好的PRD,但是作出来的产品,确实是惨不忍睹。这是为什么?究其根源,不仅仅是开发的问题,测试和流程的控制上,没有一套好的监控措施。产品的开发和设计,最终落实到代码上就有了差距。

基于以上的几点,引入了本文:

 

嵌入式开发中的测试和流程管理

首先指出一部分人的对测试的看法存在的偏差:

  • 测试一定能帮助产品减少bug

         这部分人的论调是:"测试为发现更多的bug,等这些bug被发现解决之后,bug自然就减少了"。看似对的命题,但是仔细推敲,我们会发现,bug不会减少,有可能增多。为什么这么说呢?

         了解软件工程学的同学肯定对“bug收敛曲线"记忆深刻,bug从测试开始时候到项目中期的时候,可是一直增长的,在步入到后期以后才会收敛。所以说,产品在项目进行到中期的时候实际上是发现bug最多的时候,此时,代码存在大量的不稳定处,同时修改的bug数越多,对于开发来说,本身是一个考验,只有对产品各个模块比较熟悉的开发人员才会在此时修改bug得心应手,否则1个bug变成4,5个的事情发生的太多了。

         "产品测试了,bug反而增多了?"

         所以产品的开发测试进入到中期的时候,是产品最容易出现问题的时候,这个时候控制的好,可以迅速让bug收敛,也就是说帮助产品进入稳定阶段。如果处理的不好,bug只会越来越多,开发的时间自然也一拖再拖。

  • 测试人员没必要技术好的,差一点的开发人员可以转作测试

         很多管理人员在潜意识中仍然有这样的看法,这个看法无论从哪个角度上看都是不可接受的。

         我们先说这句话的前半句:测试人员没必要技术好。测试的团队管理从人员配备来说也需要有三个梯队:高,中,初。高级测试人员的能力中我最看重的一点就是要有"独立的分析问题的能力",其中这种能力最重要的一点基础就是对产品的深入了解。为什么现在测试人员这么多,每次招聘总是高级的不好找。还是因为目前的测试人员来看,还只是停留在“看数据,用工具”的阶段。这只是我对初中级人员的要求。高级的测试人员,在发现问题之后,需要去深入的分析问题,找到引发代码或者是产品模块的更深层次的原因,从而能避免有同类问题的再次产生,换句话说,高级测试人员,需要对代码或者模块的功能有深入剖析的能力,发现一个bug的同时,也能通过分析找到同类问题所有可能的出现点,从而加以验证。从这个角度上看,测试人员必须要有不输于开发人员的系统架构能力和开发能力。

         再看后面半句:差一点的开发人员可以转作测试吗?从我上面的观点来看,一个好的测试人员也需要很好的分析问题的能力。有一部分开发人员,本身只对自己开发的模块关注,对整个产品了解过少。这部分开发人员我觉得就是技术再好,也不能转作测试,否则只会让问题出现的几率加大。因为这部分的人,对整个产品模块的了解太窄,导致了他们会出现,他了解的模块测试的过细,不了解的模块测试不够的现象。从而把一些问题的发现推到后期集成测试的时候才暴露出来,这是最要命的。



 

嵌入式软件测试的测试策略方法

我们现在回到嵌入式产品中来,嵌入式产品的开发,本身具有一定的专有性和业务针对性。针对特定平台的开发和优化,需要对平台和产品都有着深入的了解才可 以。而且,测试人员在测试的过程中,要知道产品针对的目标用户群和这些目标用户群的习惯,才能更好的制定自己的测试计划和流程。

嵌入式应用程序开发在开发的过程中,主要分为下面几个阶段:

  • 产品硬件模拟器的开发
  • 模拟器上的开发
  • 开发板上的开发
  • 项目验收

上面的几个阶段,各个需要不同的测试方法和策略方法与之对应,我也把嵌入式的测试分成下面四个阶段。

嵌入式测试的准备阶段:

  • 测试好环境模拟器
  • 保证PC和板子的依赖库的一致性

模拟器的开发阶段,应该是产品立项的初级阶段,因为产品可能也不是从0开始,所以很多公司在开发的时候可能没有什么模拟器,或者是使用的底层图形库提供的模拟器。因为此时产品的概念还未成熟,很多想法还在试验中,所以这个时候测试人员应该首先关注的就是这个模拟器的产品测试。

这个是很重要的一点。后期测试的时候会发现过一些问题,是由于模拟环境的问题导致了一些bug在板子上重现,但是在pc上无法重现。而这些无法重现的bug会给开发和测试人员增加很多沟通成本和调查成本。因为在嵌入式环境中,”永远最恶劣的环境是板子“。

同理,保证开发环境和板子环境的一致性,也是需要特别注意的。因为嵌入式开发,或多或少都会使用到一些开源的第三方库。在没有了解这些库的特性的情况下就盲目的测试是要不得的。你要首先通过上网查找或者是其他方式,了解到你这个版本的库目前是否还存在一些bug,而这些bug是否会对产品的各个模块产生影响。

嵌入式测试的前期阶段:

 

流程管理能给软件测试带来什么新的变化

 

 

 


 


简单聊聊嵌入式软件测试 简单聊聊嵌入式软件测试,帮助小伙伴们找到方向,认清大门,然后进行较好的职业发展! 阅读详情

相关推荐

嵌入式软件安全设计指南(V2.0)

本指南需配合《嵌入式系统安全架构白皮书》和《安全编码规范》使用,建议每半年更新安全基线要求。验证Bootloader签名。RSA-3078验证。

bifudoph的博客 1901

嵌入式测试阶段及解析测试流程

嵌入式测试阶段: 根据软件开发阶段不同,可分为平台测试、单元测试、集成测试和系统测试。 1.平台测试 包括硬件电路测试、操作系统及底层驱动程序测试等等。硬件电路测试需要所对应的测试工具来进行测试。操作系统和底层驱动程序的测试主要关注多任务调度、实时性能、数据传输等指标。 2.单元测试 将测试系统分成若干个单元模块,对每个单元模块进行测试,测试环境主要在宿主机上进行。 3.集成测试 将所有模块进行组...

ABC983465239的博客 4665

嵌入式开发入门指南:从STM32点灯到Linux驱动与自动化测试

嵌入式系统是专用计算机系统,其核心在于通过软件控制硬件,实现实时、可靠、低功耗的特定功能。其工作原理基于微控制器或应用处理器,通过编程操作寄存器、管理中断与外设,使硬件能够感知环境并做出响应。该技术的核心价值在于在资源受限的硬件上实现极致的性能与可靠性,广泛应用于智能家居、工业控制、汽车电子等领域。以STM32为代表的微控制器开发是嵌入式领域的基石,涉及C语言、硬件接口与实时操作系统等技术栈。随着系统复杂度提升,开发者会进一步接触嵌入式Linux,进行系统构建与驱动开发,并运用自动化测试(如单元测试与硬件在

weixin_29163797的博客 272

浅析嵌入式系统软件的可靠性测试难点

本文原文链接如下:https://www.jianshu.com/p/f6f5c3cd3fab 目前,嵌入式软件的可靠性评价主要依赖测试,因为嵌入式软件的开发环境和软件在嵌入式系统中的运行环境是不同的,因此嵌入式软件测试的最大特点在于一个嵌入式软件的测试可以分为基于宿主机和基于目标机的不同环境进行测试,这往往也是嵌入式软件测试与一般软件测试最大的不同之处。 一、基于宿主机和基于目标机的环境测试...

tanguohua_666的博客 2111

从零到一:MBD开发者的成长路径与实战避坑指南

本文详细介绍了MBD(Model-Based Design)开发者的成长路径与实战避坑指南,涵盖从基础技能搭建到工业级模型设计的全流程。通过Simulink和Matlab工具链的实战经验,帮助开发者快速掌握嵌入式软件开发中的MBD技术,避免常见陷阱,提升开发效率。

7h6j5k4l3的博客 837

从基础软件到工业软件:一文搞懂CNAS认可的14类软件测试领域代码

本文深入解析CNAS认可的14类软件测试领域,涵盖基础软件到工业软件的技术要点与实践指南。重点探讨三级代码分类体系下的测试方法论,包括操作系统内核稳定性、数据库ACID验证、工业软件数字孪生测试等核心场景,为测试工程师提供标准化框架和实战解决方案。

weixin_29310605的博客 443

什么是嵌入式测试?嵌入式测试项目有哪些?

在进行嵌入式测试时,需要根据具体的系统和需求来选择适当的测试项目,并结合使用不同的测试技术和工具来进行测试。6. 可靠性测试:测试嵌入式系统在长时间运行和各种环境条件下的可靠性和稳定性。可靠性测试可以帮助发现系统中的潜在故障和问题,并进行相应的修复和改进。4. 性能测试:测试嵌入式系统在不同负载和压力下的性能表现,例如响应时间、吞吐量和资源利用率等。3. 硬件/软件接口测试:测试嵌入式系统的硬件和软件之间的接口,以确保它们之间的通信和交互正常。7. 用户界面测试:测试嵌入式系统的用户界面的易用性和友好性。

Adelineyoung8的博客 3014

汽车嵌入式软件构建高效技术团队的全面思考

构建一个高效的通用技术团队是一个系统工程,需要从技术能力、角色分工、标准化与复用、流程管理与质量保证、工具和测试体系、培训与能力提升、团队协作与沟通机制以及创新与技术积累等多个方面进行综合考虑。只有全面地关注这些方面,并不断地进行改进和优化,才能打造出一支高绩效的通用技术团队,为汽车嵌入式软件开发提供坚实的基础和强大的支持。构建这样的团队需要从技术能力、角色分工、标准化与复用、流程管理与质量保证、工具和测试体系、培训与能力提升、团队协作与沟通机制以及创新与技术积累等多维度进行综合考量。

1302

嵌入式软件调试方法

在嵌入式软件开发过程中,一般来说,花在测试和花在编码的时间比为3:1(实际上可能更多)。这个比例随着你的编程和测试水平的提高而不断下降,但不论怎样,软件测试对一般人来讲很重要。很多年前,一位开发人员为了对嵌入式有更深层次的理解,向Oracle询问了这样的一个问题:我怎么才能知道并懂得我的系统到底在干些什么呢? Oracle面对这个问题有些吃惊,因为在当时没有人这么问过,而同时代的嵌入式开发人员问的

mycareer_2011的专栏 754

58、嵌入式软件开发:并发、检查、评审与测试的全面指南

本文全面探讨了嵌入式软件开发中的关键环节,包括并发控制(如互斥锁和可重入代码)、静态检查与编译器警告、同行评审流程、测试类型与策略(如单元测试、系统集成测试、白盒测试、黑盒测试)以及问题跟踪与分析。通过详细解析这些主题,文章旨在帮助开发者提高软件质量和开发效率,规避常见问题,确保嵌入式系统的稳定性和可靠性。

kite3的博客 109

53、嵌入式软件开发:全局变量、并发问题、静态检查与测试策略

本文探讨了嵌入式软件开发中的关键问题,包括全局变量的合理管理、数据并发问题及其解决策略、静态代码检查的重要性以及测试策略的制定。文章还详细介绍了如何通过可重入代码设计、编译器警告处理、同行评审和多种测试方法(如单元测试、集成测试、验收测试等)来提升软件的质量和稳定性。通过流程图和表格,总结了数据保护策略的选择流程和不同开发方法对软件质量的影响,为嵌入式开发实践提供了全面指导。

kite3的博客 69

嵌入式软件开发十大实战技巧与经验总结

嵌入式系统开发是软件与硬件深度结合的技术领域,其核心在于实时性处理和资源优化。通过状态机设计、模块化开发等工程方法,开发者可以构建稳定可靠的嵌入式系统。在工业控制、智能家居等场景中,合理运用流程图设计、全局变量管控等技术手段,能有效提升代码质量和系统性能。本文基于十年嵌入式开发经验,详解包括中断优化、版本控制、低功耗设计等在内的十大核心技巧,特别分享在STM32、NXP等平台上的实战案例,为开发者提供从基础到进阶的全方位指导。

weixin_42513870的博客 353

65、嵌入式软件开发:从错误日志到测试与问题追踪的全面指南

本文深入探讨了嵌入式软件开发中的关键环节,包括运行时错误日志记录、同行评审、测试策略以及问题追踪与分析。通过详细阐述每个环节的重要性、方法和实际应用,文章旨在帮助开发者提高软件质量和系统稳定性。此外,还分析了这些环节之间的协同关系,并通过实际案例展示了它们在开发过程中的作用。最后,文章展望了未来发展方向,强调持续改进在嵌入式软件开发中的重要性。

kite3的博客 94

嵌入式开发中Unity Test框架的实践:从单元测试到持续集成

单元测试是软件工程中保障代码质量的核心实践,通过隔离被测代码、模拟依赖,实现对函数或模块的独立验证。其原理在于构建可控的测试环境,利用断言库检查预期行为,从而在开发早期发现逻辑错误。这一技术能显著提升代码可靠性、支持安全重构,并为持续集成提供自动化验证基础。在嵌入式开发领域,资源受限和硬件依赖使得传统测试方法面临挑战。通过引入硬件抽象层和模拟层,结合Unity Test等轻量级C语言框架,开发者可以在PC上高效运行测试,覆盖边界条件和异常场景,最终自然收敛到构建可持续、可移植的嵌入式测试体系,实现即时反馈与

weixin_30566111的博客 371

15、嵌入式软件开发中的测试驱动开发与应用建模

本文深入探讨了嵌入式软件开发中测试驱动开发(TDD)与应用建模仿真的关键作用。介绍了TDD的基本流程、CppUTest测试框架的使用方法及在Docker环境下的配置,强调通过先写测试再写代码的方式提升代码质量与可维护性。同时,阐述了应用建模与仿真的重要性,包括使用UML工具进行状态机建模、模型仿真和代码自动生成的优势与挑战。文章还提供了实施步骤、工具选择建议以及与CI/CD集成的方法,帮助开发者提高开发效率、早期发现缺陷并降低调试成本。

wdx01234567的博客 81

41、嵌入式软件组件部署与架构设计

本文探讨了嵌入式软件组件的部署方式与基于RTOS的微控制器软件架构设计。介绍了软件包的本地安装、团队发布和公开下载三种分发模式,并分析了超级循环、时间触发、事件触发及RTOS四种常见架构的特点与关系。重点提出了一个基于CMSIS标准的分层架构模型,涵盖引导加载程序、应用层、RTOS层、服务层和CMSIS驱动层,强调模块化、可复用性、可测试性和可移植性等关键设计目标。通过可复用线程(如监督线程)和系统头文件的设计,提升开发效率与代码质量,支持早期开发与团队协作,为小型嵌入式系统提供了一套结构清晰、易于维护和扩

a1b2c3d的博客 72

55、嵌入式软件开发中的测试、数据保护与代码审查

本文深入探讨了嵌入式软件开发中的关键环节,包括测试策略、数据保护机制、代码审查方法等内容。详细介绍了测试的不同类型和风格、数据保护策略的选择、可重入代码的实现、静态检查工具的使用,以及同行评审的重要性。同时,通过流程图和表格形式,展示了测试计划的制定、不同测试类型的应用场景及数据保护策略的决策流程。文章强调了建立持续改进的软件开发流程的重要性,旨在帮助开发者提高嵌入式系统的质量和可靠性。

h6j7k8l9p0的博客 77

CKAD-CN 考试知识点分享(2) CronJob

成功创建 CronJobppi,每 5 分钟执行一次计算任务;配置了和;设置,超时自动终止;确保 Pod 不重启;手动创建ppi-testJob 验证功能正常;所有任务要求均已满足。

轻的博客 331
上一篇: MiniGUI和其他嵌入式图形系统的优势比较 - 个人见解
下一篇: Android操作系统在Ubuntu8.04LTS上的编译步骤和遇到的问题 (1)
测试九宸
博客等级 码龄23年 21粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值