返回顶部

嵌入式软件测试的基本方法

[复制链接]
不知道呀Lv.2 显示全部楼层 发表于 2021-10-26 17:25:10 |阅读模式 打印 上一主题 下一主题
  嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积及功耗严格要求的专用计算机系统。嵌入式系统的软硬件功能界限模糊,测试比PC系统软件测试要困难得多,嵌入式软件系统测试具有如下特点:

  (1)测试软件功能依赖不需编码的硬件功能,快速定位软硬件错误困难;

  (2)强壮性测试、可知性测试很难编码实现;

  (3)交叉测试平台的测试用例、测试结果上载困难;

  (4)基于消息系统测试的复杂性,包括线程、任务、子系统之间的交互,并发、容错和对时间的要求;

  (5)性能测试、确定性能瓶颈困难;

  (6)实施测试自动化技术困难。


(图片来源于公开网络,若涉及侵权联系尽快删除)


  大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上,在极端情况,测试那种关系人的生命安全的重要的行业中的嵌入式软件所花费的成本,可能相当于软件工程其他开发步骤总成本的三倍到五倍。

  在嵌入式软件测试中,既要考虑软件本身,还要考虑软件同硬件平台和操作系统的集成,同时还有条件苛刻的时间约束和实时要求,以及其他合性能相关的要求。

  1、全数字模拟测试

  全数字模拟测试是指采用数学平台的方法,将嵌入式软件从系统中剥离出来,通过开发CPU指令、常用芯片、I/O、中断、时钟等模拟器在开发主机平台(Host)上实现嵌入式软件的测试。该方法操作简单,适用于功能测试,是一种可以借鉴的常规软件测试方法。

  但是全数字模拟测试有较大的局限性,使用不同语言编写的嵌入式软件需要不同的仿真程序来执行,通用性差,实时性与准确性难以反映出嵌入式软件的真实情况,当并发事件要求一定的同步关系时,维护统一、精确地系统时钟,理顺时序关系相当困难。因此,设计一个能进行系统测试的环境代价太大,全数字模拟测试只能作为嵌入式软件测试的辅助手段。

  2、交叉测试(Host/Target测试)

  自从出现高级语言,嵌入式系统的开发环境和运行环境通常是存在差异的,开发环境被认为是主机平台(Host),软件运行环境为目标平台(Target),相应的测试为Host Target测试(交叉测试)。测试过程中,充分利用高级语言的可移植性,将系统中与目标环境无关的部分工作转移到PC平台上完成,在硬件环境未建好或调试工具缺乏时就可以开展,这时可以借鉴常规的软件测试方法。

  系统中与硬件密切相关的部分在Target上完成,用到的测试工具需要支持目标环境。最后,在目标环境中进行验证确认。交叉测试适用于高级语言,操作方便,测试成本较低,但是实时性受调试环境的制约,在目标环境中测试时要占用一定的目标资源。

  3、嵌入式软件测试方法分类

  嵌入式软件测试或叫交叉测试(Cross-test),测试内容包括:1.单元测试;2.集成测试;3.确认测试;4.系统测试。

  使用有效的交叉测试策略可极大地提高嵌入式软件开发测试的水平和效率,下文给出各个阶段的嵌入式软件测试方案。

  静态测试:静态测试不利用计算机运行被测程序,目的是度量程序静态复杂度,检查软件是否符合编程标准。

  1)静态测试工具McCabeQA

  McCabeQA是美国McCabe&Association公司的产品。它利用着名学者McCabe的软件结构化测试理论,即使用V(G)圈复杂度=模块内部独立线性路径数来度量软件的复杂度。

  McCabe最大的特点就是可视化,以独特的图形技术表示代码。软件通过分析源码,得到整个软件系统的结构图,同时得到了各种基于工业标准评估代码复杂性,包括V(g)、EV(g)、DV(g)、Halstead等数十种静态复杂度度量。

  用不同的颜色表示软件模块的复杂性,测试人员的测试重点放在质量差的模块上;提供各种质量模型深入评价软件质量,纪录软件质量波动曲线和版本变化趋势分析,从而控制软件修改不同阶段的质量。在单元级McCabe显示模块的流程图,并且相对应地标出代码的位置,视图与代码相互对应,可很快找出问题所在。分析最终得到可定制的符合工业标准的综合报告。

  2)代码规则检查工具QAC/C++

  QAC/QAC++是用于代码规则检查的自动化工具。代码审查主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面。发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。


(图片来源于公开网络,若涉及侵权联系尽快删除)


  4、动态测试

  动态测试时软件必须运行。动态测试方法分为黑盒法和白盒法。为了较快得到测试效果,通常先进行功能测试,达到所有功能后,为确定软件的可靠性进行必要的覆盖测试。

  在软件开发的不同时期进行动态测试,测试又分为单元测试、集成测试、确认测试、系统测试。

  5、单元测试

  单元测试方案之一采用IPL公司的Cantata++测试工具,它能够满足开发者进行高效的单元测试和集成测试要求,能够提高测试效率,具有一整套包含测试、覆盖率分析和静态分析的功能。Cantata++含有以下几个主要部分:

  CTH测试功能库,Cantata++通过CTH提供的测试函数执行测试,提供测试所需用例的输入输出,并检查输出结果是否符合要求,给出合格/不合格的确切结果。打桩、封装和动态分析的执行也是利用CTH。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

达内教育:成立于2002年。致力于面向IT互联网行业,培养软件开发工程师、测试工程师、系统管理员、智能硬件工程师、UI设计师、网络营销、会计等职场人才 达内使命:缔造年轻人的中国梦、缔造达内员工的中国梦 达内愿景:做管理一流的教育公司
  • 商务合作

  • Powered by Discuz! X3.4 | Copyright © 2002-2024, 达内教育 Tedu.cn
  • 京ICP备08000853号-56 |网站地图