思步网

查看: 49657|回复: 22
打印 上一主题 下一主题

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

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

    为什么嵌入式产品发布后,还残留了许多软件缺陷?原因可能很多,我们试列举以下几种:
  ①嵌入式软件本身特点,如实时性,与硬件结合紧密等导致软件测试难度大。
  ②在代码规模巨大、开发周期短等客观条件下,软件测试不足。
  ③在测试阶段,要动态覆盖所有条件、所有状况的测试几乎是不可能的。
  ④嵌入式软件开发主要使用C语言,而C语言非常灵活,容易造成编码错误。
  ⑤项目团队未有效建立/遵守编码规范,留用有缺陷代码等导致可移植性、可维护性方面存在缺陷。
  ⑥项目团队的惯性思维,不良编码/测试习惯等因素的影响等。

    软件测试的分类方法有很多种,如静态测试、动态测试;单元测试、集成测试、系统测试、确认测试;模拟测试、实机测试等。各种测试方法其对测试阶段、测试环境等要求也各具特点,本文就软件代码检查这种静态测试方法进行探讨。
1.什么是代码检查
    代码检查团队以第三方的角度,运用工具/人工的方式对代码进行静态检查。

    软件开发团队根据代码检查团队的检查报告,进行缺陷原因分析、影响范围调查、缺陷修改、修改后验证、缺陷预防措施实施及效果确认活动。
2.代码检查种类
  ①代码规范(MISRACC++规范)符合性检查
    使用MISRAQAC等代码规范检查工具,对代码规范的符合性进行检查,然后人工对工具输出的警告进行确认。
  ②代码逻辑检查
    针对代码规范检查工具不能检查的项目,如公用变量的初始化、函数返回值的使用等方面进行人工检查。
  ③中断冲突检查。
    对因中断或多任务共同访问全局变量而引起的冲突进行人工检查。
  ④功能符合性检查。
    对看门狗、AD/DA转换等与硬件相关部分的代码进行人工检查。
3.代码检查的特点
  ①可在编码产品发布这一期间内的任何阶段进行。在项目前期通过代码检查可尽可能多地发现缺陷,从而可削减开发成本,提高产品质量。
  ②利用第三方的经验、看问题的角度,可以找出自己开发团队因惯性思维、不良编码/测试习惯等因素造成的而自己难于发现的缺 陷。
  ③不受测试环境、测试设备等客观因素的制约,费用较低。
4.从事代码检查业务的要求
  ①拥有一套检查理论、方法和流程。
  ②需要一些辅助工具的配合,以提高检查质量和效率。
  ③代码检查人员应熟练掌握C/C++编码规则,熟悉编译器原理。对于功能性检查还应熟悉芯片等硬件知识及通信、汽车等领域产品知识。
  ④拥有嵌入式产品代码缺陷库,可进行更有针对性的检查。
5.有关代码检查的疑问
  ①代码检查与开发团队自己进行的交叉走码有什么区别?
    代码检查虽然从形式上来说类似于交叉走码,但交叉走码基本上是属于代码规范符合性检查;而代码检查除代码符合性检查外,更着重逻辑、中断冲突和功能符合性检查。
  ②连熟悉开发系统的开发团队都检查/测试不出来的缺陷,不熟悉系统第三方可以吗?
    事情有时候就是“成也萧何,败也萧何”。正是由于项目开发团队熟悉自己的系统,但由于惯性思维,有时候会想当然地将缺陷作为正确。第三方代码检查团队虽然对系统不熟悉,但是完全从检查观点的角度来进行判断是否有问题,这样不会轻易使缺陷漏网。
检查团队将不符合检查观点的程序指摘出来,项目开发团队对指摘出的问题进行进一步确认,这样结合两种思维方式,即从该系统的特殊性及检查观点共性两个方面,能够发现开发团队自己发现不了的隐藏缺陷。
另外,有些缺陷是只在极端条件下才发生,通过动态测试去发现几乎是不可能的,特别是中断冲突方面的问题。因此在某些情况下,代码检查是唯一的手段。
  ③代码检查的实施效果如何?
    根据对汽车、电子、通信等领域数十个项目检查结果的数据统计,检查出的代码缺陷率为每千行代码零点几几之间,并为客户检查出了许多重大缺陷。
6.代码检查国内外现状
    目前发达国家如美国、日本等嵌入式产品开发企业特别重视代码检查业务,一般将业务外包给专业从事代码检证业务的公司。而国内从事嵌入式产品开发的企业,基本上还没有意识到代码检证的益处。同时,国内能够从事代码检查业务的公司也屈指可数,目前这些公司基本上也都是承接国外的业务。



上一篇:嵌入式软件测试策略
下一篇:做嵌入式软件测试经验最重要
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复 论坛版权

使用道具 举报

路过的帮顶
看了LZ的帖子,我只想说一句很好很强大!
很有见地的探讨,先收藏着~
其实,很多情况下都是这样的,习惯就好。
鼎力支持!!
打酱油的人拉,顺便赚点金币
不错 支持一个了
路过 帮顶 嘿嘿
打酱油的人拉,顺便赚点金币
没人回帖。。。我来个吧!
众里寻他千百度,蓦然回首在这里!
very good.
向楼主学习
路过的帮顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则



思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 2007 思步网 浙ICP备10212573号-4(首次备案号:浙ICP备07035264号)|邮箱:service#step365.com(将#换成@)|服务热线:0571-28827450
在线培训课程|求职招聘|思步文库|官方微信|手机APP|思步问答|微博平台|官方QQ群|交流论坛|软件工程透析|关于我们|申请友链|
点击这里给我发消息     点击这里给我发消息
思步 step365 过程改进 CMMI中文 质量保证 质量管理 流程体系 需求跟踪矩阵 敏捷开发 Scrum 软件度量 项目评审 全员改进 流程管理 人力资源 6sigma 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 SQA 配置管理 IPD 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 agile 顾问式管理培训
返回顶部