提高嵌入式软件质量的重要方法―软件代码检查

作者: CreatFuture

2007年9月13日

目前嵌入式系统的应用领域越来越广泛,与人们的生活也越来越密切。随着嵌入式产品更新换代的加快,软件规模急速膨胀,软件的开发周期却越来越短。硬件发展日益稳定,而软件故障却日益突出,这些故障不仅会造成重大经济损失,甚至危及人的生命安全。软件的重要性逐渐引起人们的重视,提高嵌入式软件的测试质量势在必行。

为什么嵌入式产品发布后,还残留了许多软件缺陷?原因可能很多,我们试列举以下几种:

①嵌入式软件本身特点,如实时性,与硬件结合紧密等导致软件测试难度大。 ②在代码规模巨大、开发周期短等客观条件下,软件测试不足。

③在测试阶段,要动态覆盖所有条件、所有状况的测试几乎是不可能的。

④嵌入式软件开发主要使用C语言,而C语言非常灵活,容易造成编码错误。 ⑤项目团队未有效建立/遵守编码规范,留用有缺陷代码等导致可移植性、可维护性方面存在缺陷。

⑥项目团队的惯性思维,不良编码/测试习惯等因素的影响等。

软件测试的分类方法有很多种,如静态测试、动态测试;单元测试、集成测试、系统测试、确认测试;模拟测试、实机测试等。各种测试方法其对测试阶段、测试环境等要求也各具特点,本文就软件代码检查这种静态测试方法进行探讨。

1.什么是代码检查

代码检查团队以第三方的角度,运用工具/人工的方式对代码进行静态检查。

软件开发团队根据代码检查团队的检查报告,进行缺陷原因分析、影响范围调查、缺陷修改、修改后验证、缺陷预防措施实施及效果确认活动。

2.代码检查种类

①代码规范(MISRA等C、C++规范)符合性检查

使用MISRA、QAC等代码规范检查工具,对代码规范的符合性进行检查,然后人工对工具输出的警告进行确认。

②代码逻辑检查

针对代码规范检查工具不能检查的项目,如公用变量的初始化、函数返回值的使用等方面进行人工检查。

③中断冲突检查。

对因中断或多任务共同访问全局变量而引起的冲突进行人工检查。 ④功能符合性检查。

对看门狗、AD/DA转换等与硬件相关部分的代码进行人工检查。

3.代码检查的特点

①可在编码~产品发布这一期间内的任何阶段进行。在项目前期通过代码检查

可尽可能多地发现缺陷,从而可削减开发成本,提高产品质量。

②利用第三方的经验、看问题的角度,可以找出自己开发团队因惯性思维、不良编码/测试习惯等因素造成的而自己难于发现的缺 陷。

③不受测试环境、测试设备等客观因素的制约,费用较低。

4.从事代码检查业务的要求

①拥有一套检查理论、方法和流程。

②需要一些辅助工具的配合,以提高检查质量和效率。

③代码检查人员应熟练掌握C/C++编码规则,熟悉编译器原理。对于功能性检查还应熟悉芯片等硬件知识及通信、汽车等领域产品知识。

④拥有嵌入式产品代码缺陷库,可进行更有针对性的检查。

5.有关代码检查的疑问

①代码检查与开发团队自己进行的交叉走码有什么区别?

代码检查虽然从形式上来说类似于交叉走码,但交叉走码基本上是属于代码规范符合性检查;而代码检查除代码符合性检查外,更着重逻辑、中断冲突和功能符合性检查。

②连熟悉开发系统的开发团队都检查/测试不出来的缺陷,不熟悉系统第三方可以吗?

事情有时候就是“成也萧何,败也萧何”。正是由于项目开发团队熟悉自己的系统,但由于惯性思维,有时候会想当然地将缺陷作为正确。第三方代码检查团队虽然对系统不熟悉,但是完全从检查观点的角度来进行判断是否有问题,这样不会轻易使缺陷漏网。

检查团队将不符合检查观点的程序指摘出来,项目开发团队对指摘出的问题进行进一步确认,这样结合两种思维方式,即从该系统的特殊性及检查观点共性两个方面,能够发现开发团队自己发现不了的隐藏缺陷。

另外,有些缺陷是只在极端条件下才发生,通过动态测试去发现几乎是不可能的,特别是中断冲突方面的问题。因此在某些情况下,代码检查是唯一的手段。 ③代码检查的实施效果如何?

根据对汽车、电子、通信等领域数十个项目检查结果的数据统计,检查出的代码缺陷率为每千行代码零点几~几之间,并为客户检查出了许多重大缺陷。

6.代码检查国内外现状

目前发达国家如美国、日本等嵌入式产品开发企业特别重视代码检查业务,一般将业务外包给专业从事代码检证业务的公司。而国内从事嵌入式产品开发的企业,基本上还没有意识到代码检证的益处。同时,国内能够从事代码检查业务的公司也屈指可数,目前这些公司基本上也都是承接国外的业务。

作者: CreatFuture

2007年9月13日

目前嵌入式系统的应用领域越来越广泛,与人们的生活也越来越密切。随着嵌入式产品更新换代的加快,软件规模急速膨胀,软件的开发周期却越来越短。硬件发展日益稳定,而软件故障却日益突出,这些故障不仅会造成重大经济损失,甚至危及人的生命安全。软件的重要性逐渐引起人们的重视,提高嵌入式软件的测试质量势在必行。

为什么嵌入式产品发布后,还残留了许多软件缺陷?原因可能很多,我们试列举以下几种:

①嵌入式软件本身特点,如实时性,与硬件结合紧密等导致软件测试难度大。 ②在代码规模巨大、开发周期短等客观条件下,软件测试不足。

③在测试阶段,要动态覆盖所有条件、所有状况的测试几乎是不可能的。

④嵌入式软件开发主要使用C语言,而C语言非常灵活,容易造成编码错误。 ⑤项目团队未有效建立/遵守编码规范,留用有缺陷代码等导致可移植性、可维护性方面存在缺陷。

⑥项目团队的惯性思维,不良编码/测试习惯等因素的影响等。

软件测试的分类方法有很多种,如静态测试、动态测试;单元测试、集成测试、系统测试、确认测试;模拟测试、实机测试等。各种测试方法其对测试阶段、测试环境等要求也各具特点,本文就软件代码检查这种静态测试方法进行探讨。

1.什么是代码检查

代码检查团队以第三方的角度,运用工具/人工的方式对代码进行静态检查。

软件开发团队根据代码检查团队的检查报告,进行缺陷原因分析、影响范围调查、缺陷修改、修改后验证、缺陷预防措施实施及效果确认活动。

2.代码检查种类

①代码规范(MISRA等C、C++规范)符合性检查

使用MISRA、QAC等代码规范检查工具,对代码规范的符合性进行检查,然后人工对工具输出的警告进行确认。

②代码逻辑检查

针对代码规范检查工具不能检查的项目,如公用变量的初始化、函数返回值的使用等方面进行人工检查。

③中断冲突检查。

对因中断或多任务共同访问全局变量而引起的冲突进行人工检查。 ④功能符合性检查。

对看门狗、AD/DA转换等与硬件相关部分的代码进行人工检查。

3.代码检查的特点

①可在编码~产品发布这一期间内的任何阶段进行。在项目前期通过代码检查

可尽可能多地发现缺陷,从而可削减开发成本,提高产品质量。

②利用第三方的经验、看问题的角度,可以找出自己开发团队因惯性思维、不良编码/测试习惯等因素造成的而自己难于发现的缺 陷。

③不受测试环境、测试设备等客观因素的制约,费用较低。

4.从事代码检查业务的要求

①拥有一套检查理论、方法和流程。

②需要一些辅助工具的配合,以提高检查质量和效率。

③代码检查人员应熟练掌握C/C++编码规则,熟悉编译器原理。对于功能性检查还应熟悉芯片等硬件知识及通信、汽车等领域产品知识。

④拥有嵌入式产品代码缺陷库,可进行更有针对性的检查。

5.有关代码检查的疑问

①代码检查与开发团队自己进行的交叉走码有什么区别?

代码检查虽然从形式上来说类似于交叉走码,但交叉走码基本上是属于代码规范符合性检查;而代码检查除代码符合性检查外,更着重逻辑、中断冲突和功能符合性检查。

②连熟悉开发系统的开发团队都检查/测试不出来的缺陷,不熟悉系统第三方可以吗?

事情有时候就是“成也萧何,败也萧何”。正是由于项目开发团队熟悉自己的系统,但由于惯性思维,有时候会想当然地将缺陷作为正确。第三方代码检查团队虽然对系统不熟悉,但是完全从检查观点的角度来进行判断是否有问题,这样不会轻易使缺陷漏网。

检查团队将不符合检查观点的程序指摘出来,项目开发团队对指摘出的问题进行进一步确认,这样结合两种思维方式,即从该系统的特殊性及检查观点共性两个方面,能够发现开发团队自己发现不了的隐藏缺陷。

另外,有些缺陷是只在极端条件下才发生,通过动态测试去发现几乎是不可能的,特别是中断冲突方面的问题。因此在某些情况下,代码检查是唯一的手段。 ③代码检查的实施效果如何?

根据对汽车、电子、通信等领域数十个项目检查结果的数据统计,检查出的代码缺陷率为每千行代码零点几~几之间,并为客户检查出了许多重大缺陷。

6.代码检查国内外现状

目前发达国家如美国、日本等嵌入式产品开发企业特别重视代码检查业务,一般将业务外包给专业从事代码检证业务的公司。而国内从事嵌入式产品开发的企业,基本上还没有意识到代码检证的益处。同时,国内能够从事代码检查业务的公司也屈指可数,目前这些公司基本上也都是承接国外的业务。


相关文章

  • 软件评测中心发展意义
  • 随着软.硬件技术的发展计算机的应用领域越来越广,而其中软件的功能也越来越强大,软件也越来越复杂.这就使保证软件的质量,保证软件的高度可靠性,面临巨大的挑战.特别是诸如通讯.交通.金融.医疗.军事.航空航天等行业,软件的微小瑕疵就可能造成对生 ...查看


  • 关于嵌入式软件测试
  • 关于嵌入式软件测试 作者:软件测试工程师 发布时间:[ 2010/6/28 16:00:35 ] 推荐标签: 嵌入式软件测试与普通软件测试的目的一样,都是为了发现软件缺陷,而后修正缺陷以提高软件的可靠性.嵌入式系统安全性的失效可能会导致灾难 ...查看


  • 常用嵌入式软件白盒测试工具介绍
  • 关于应用RPT在性能测试的思考谈谈嵌入式操作系统的调试问题软件测试中的性能测试的容量评估 高级性能测试LoadRunner技术课程高级软件测试技术课程[就业]先实习后上岗,入职年薪5-10万! ChinaItLab 佚名 2007-11-2 ...查看


  • 国产办公软件可扩展性测试研究
  • Testing and Analysis·测试分析 国产办公软件可扩展性测试研究 简炜 陈磊 (中国软件评测中心 北京100048) 2008年发生的Microsoft Windows 系统"黑屏"事件加深了大众对Mic ...查看


  • 如何做好嵌入式软件开发测试
  • 如何做好嵌入式软件开发测试? 嵌入式软件测试的目的是保证软件满足需求规格说明,与非嵌入式软件的测试目的是一样的.系统失效是系统没有满足-个或多个正式需求规范中所要求的需求项,嵌入式软件有其特殊的失效判定准则. 而且嵌入式软件对可靠性的要求比 ...查看


  • 软件职业发展方向(打印)
  • 最近准备研究一下软件测试职业的发展方向,一是增长自己的知识,二是为自己的职业规划做个参考,在网上找到一篇很好的东东,将它整理了一下,放上来吧,以备以后查看. 软件测试职业发展方向,大体上可以分为管理路线.技术路线.管理+技术路线. 测试初级 ...查看


  • 软件测试工具
  • 随着软件测试的地位在软件开发过程中逐步提高,重要性逐步显现,测试工具的应用也已经成为了普遍的趋势.本文主要对软件测试工具的发展进行了介绍,一起来看 软件测试是软件工程中的一个重要过程,也是保证软件质量的重要手段.随着软件测试的地位在软件开发 ...查看


  • 嵌入式论文 1
  • 嵌入式系统设计论文 一. 概述 „„„„„„„„„„„„„„„„„„„ 3. 二. 硬件平台功能概述 „„„„„„„„„„„„„„ 5. 三. 软件环境概述 „„„„„„„„„„„„„„„„ 5. 四. 嵌入式系统的设计方法 „„„„„„„ ...查看


  • 嵌入式软件设计中查找缺陷的几个技巧
  • 嵌入式软件设计中查找缺陷的几个技巧 摘要 IT经验网 本文将介绍如何避免那些隐蔽然而常见的错误,并介绍的几个技巧帮助工程师发现软件中隐藏的错误.代码审查也使用与实现缺陷和潜在问题查找同样复杂的技术. 大部分软件开发项目依靠结合代码检查.结构 ...查看


热门内容