摘要: 嵌入式软件自身软硬件结合的复杂性及其质量的重要性,造成其软件测试的特殊性,就是在执行正常软件测试的单元测试、集成测试、系统测试的过程中,还要考虑到软件与硬件的兼容问题,即需要进行软硬件集成测试。本文首先介绍了嵌入式软件与硬件集成测试的相关概念,然后归纳提出了软硬件集成测试过程,结合当前软件测试理论前沿知识,把该测试过程进行重组和改进,并给出了测试模型。
引言
软件质量即业务生命。软件测试项目已经变得比以往任何时候都复杂和困难。1979年,Glenford Myers在《The Art of Software Testing》一书中提出“测试的目的是证伪”这一概念,推翻了过去“为表明软件正确而进行测试”的错误认识,为软件测试的发展指出了方向,软件测试的理论、方法在之后得到了长足的发展。但是,目前中国许多软件企业仍存在着“重开发、轻测试”的倾向,从而造成软件产品的质量问题日渐突出。因此,如何制定有效的软件测试过程、保障软件业的健康化发展,已成为当务之急。
嵌入式软件作为软件家族中重要的分支,在当今人民生活和国防事业中得到越来越广泛的应用,由于嵌入式软件自身软硬件结合的复杂性、其质量的重要性,也造就了其软件测试的特殊性,那就是在执行正常软件测试的单元测试、集成测试、配置项测试、系统测试的过程中,还要考虑到软件与硬件的兼容问题,即需要进行软、硬件集成测试。本文将重点研究嵌入式软件与硬件集成时的测试过程。
根据笔者在嵌入式软件测试工作过程中的经验,归纳提出了软硬件集成测试过程,同时结合当前软件测试理论前沿知识,把该测试过程进行重组和改进,并给出了测试模型,以期嵌入式软件与硬件集成测试过程能够在实际中广泛应用。
1、嵌入式软件测试基本概念
1.1 嵌入式软件
和普通计算机系统一样,嵌入式系统除了需要硬件结构和配置外,还需要相应软件的支持才能完整地实现系统的功能。目前,嵌入式系统的软件体系结构通常都采用以实时内核为基础的分层体系结构。组成嵌入式系统的软件大致可分为如下几层:
驱动层(硬件抽象层):驱动层是最靠近硬件的一层,它属于最底层的软件,直接和硬件打交道,它为操作系统内核和应用提供使用硬件的接口即驱动的支持。
操作系统层(实时内核层):该层的主要功能是协助最顶层的应用层更好地进行任务的调度、消息管理和异常处理等工作,由于该层的支持,特别是实时内核的作用,大大地减轻了嵌入式软件开发人员开发嵌入式软件的难度,同时也缩短了嵌入式软件的开发周期。
应用软件实现支持层:嵌入式应用软件的实现需要编程语言的支持。目前,应用于嵌入式软件编程语言主要有面向过程的语言C和面向对象的编程语言C++、ADA等,应用这些语言开发的应用程序在嵌入式系统中运行时都需要相应的编译器或解释器的支持,转换成相应的机器码,才能在嵌入式系统中实现应用程序对应的功能。
应用层:应用层软件主要由多个相对独立的应用任务组成,每个应用任务完成特定的工作,如计算任务和通信任务等,各个任务的运行由操作系统进行调度。
1.2 测试用语
嵌入式软件(Embedded Software):嵌入式计算机系统中的软件,其与硬件联系紧密,并且通常要求强实时性。
测试环境(teST EnvirONment):执行测试程序所需要的硬件平台和软件资源构成的环境。
测试用例(Test Case):为测试项规定输入、预期结果和一组执行条件的文档。
测试程序(Test Procedure):执行测试用例的程序形式,其执行需要相应测试环境的支持。
问题描述报告(Problem Description Report):对软件测试过程中发现问题的简要描述。
更改的判定条件覆盖(Modified CondiTIon/Decision Coverage, MC/DC):对设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次,每个入口点和出口点至少要唤醒一次,并且每个条件都显示能单独影响判定结果。
图1嵌入式软件软硬件集成测试过程
2、软硬件集成测试过程
原文转自:http://www.uml.org.cn/Test/201202133.asp