基于Temb和V模型的嵌入式软件测试方案
 

2009-07-09 作者:庞 灵 来源:eccn.com

 

1 引言

嵌入式设备已经在工业市场、自控市场以及国防建设等领域得到了广泛的应用,而且随着数字化产品时代的到来,大量硬件结构日趋复杂、功能日益强大的嵌入式系统不断进入人们的日常生活。这对嵌入式软件的开发和测试技术提出了新的挑战。在嵌入式系统中,软件占据了较大的比重,而软件测试技术成为保障软件质量最直接、最有效的手段之一。但是由于嵌入式软件本身的复杂性和不确定性,尤其是软件与硬件的紧密结合,一般的软件测试技术的实施具有较大的难度,因此.对于嵌入式软件需要有一种较为全面通用的分析测试方法,来检测软件在不同阶段的结果,以便尽可能早的发现错误。 FEmb是一种方法,它能够为特定的嵌入式系统组合出恰当的测试方法。它提供了一种机制,可以从适用于任何测试项目的通用元素和一组相关的特定方法中组合出专用测试方法,这组特定方法与所观察到的嵌入式系统的系统特性相关联。

目前广泛使用的软件测试模型V模型是普遍采用的模型,将开发和测试分为不同的阶段,并对每一个阶段有针对性地测试,TEmb方法的通用元素之一--生命周期,就是将开发和测试过程划分为不同的阶段。但是忽视了开发活动和测试活动是并行进行的,为了弥补V模型的不足,该文提出了一个改进的V模型.结合TEmb方法得出通用的嵌入式软件测试方法。

2 TEmb方法概述

对任何嵌入式系统而言,测试方法的基础都是由通用元素组成的,这些通用元素是任何结构化测试的组成部分。比如,根据一定的生命周期来计划测试项目、采用标准化技术、专用的测试环境、组织测试团队和编写正式测试报告等。他们都与结构化测试的四个要素相关,即生命周期、基础设施、技术和组织。

每种实际应用的嵌入式软件的测试都互不相同,不可能存在一种通用的测试方法。但每一种测试方法都存在基本测试原理,即相似的问题和相似的解决方法,这些"基本测试原理"与特定方法相结合,即构成了特定嵌入式系统的结构化的测试方法。这种通用元素结合特定方法组成恰当的专用测试方法的方法称为TEMB方法(TestingEmbedded)。如图l所示。
 

特定方法是针对不同的嵌入式系统。根据所完成的功能不同,而采取的相对应的具体测试工具,环境和开发平台等。

通用元素是所有结构化测试过程的基础,而结构化测试包含四个通用元素:

1.生命周期(Lifecvcle)它定义必须进行哪些活动以及按照什么顺序来执行。

2.技术(Technique)它解决的是如何做的问题,通过制定出标准化方法来执行特定的活动。

3.基础设施(InfIlastmcture)它定义的是在测试环境中需要哪些设施,以便能够执行计划中的活动。

4.组织(Organization)它定义的是执行计划中活动的人员的角色和所需的专业技能,以及和其他团队交互的方法。

V模型是考虑到上述几种通用元素而构造的一个开发模型。原则上,每一种产品形态(模型、原型和最终产品)都遵循一个完整的V型开发周期,包括设计、开发和测试活动。在设计、开发和测试活动的任何一个环节,都要考虑以上四个通用元素。即嵌人式软件开发测试过程,几乎都采用此模型,故本文利用TEmb方法的思想,从V模型的各个阶段提取通用元素,但是传统的V模型在集开发和测试于一身的同时也暴露了不可忽视的缺陷和不足。

3 改进的V模型

3.1传统的V模型及其缺陷

在传统的开发测试中,V模型提供了阶段清晰.控制好的开发测试模型,但同时也暴露出一些问题。

在如图2所示的V模型中,测试过程被加在开发过程的后半部分。这样很容易让人误解为软件测试是在编写代码之后才开始进行的,而实际上软件测试是存在于整个软件开发的过程中的,V模型中的各个开发测试阶段都是以独立的方式体现出来的,而在实际开发工作中,每个阶段都是彼此交互的,而没有严格的区分。
 

基于传统V模型的缺陷和不足,本文提出了改进的V模型,如图3所示。
 

3.2改进的V模型

该模型中的时间轴只是表示事件的相对先后顺序。

tl:开发与测试并行开始

t2:完成需求分析,生成用户需求说明书和确认测试文档.进入系统测试用例设计

t3:进人概要设计,根据需求说明书和概要设计文档,开始集成测试用例设计,并停止系统测试用例设计

t4:进入详细设计,停止集成测试用例设计,进入单元测试用例设计

t5:进入编码阶段,实现并执行单元测试用例

3.3 V模型的改进特色该模型改进的优点体现在以下几点。

3.3.1 更广泛的信息设计测试用例

此模型使用所有能获得的信息,而不仅仅依靠文档作为测试用例设计的依据。目前的产品很少有完善的文档,而且他们的更新速度远远不及代码变化的速度。同时,文档和代码一样也会存在错误。

3.3-2测试和编码的混沌状态

传统的V模型划分的很清晰,编码在前,测试在后。但实际的开发过程并不是如此清晰,很多编程人员都会有这样的经验,如果等到所有的编码完成在开始单元测试,那必定是恶梦的开始。比较好的方法是:开发一段,测试一点;再开发,再测试。所以,编码和测试应该是处于一种反复轮换的状态,在这里称之为编码和测试的"混沌状态"。

3.3.3阶段的并行性

在改进的模型中,开发过程的各个阶段仍然按照原模型的顺序进行,并且在开发的同时进行相应的测试设计阶段。这些阶段在逻辑上分别对应于右侧的各个测试阶段。对于这些原来严格按照顺序执行的各个测试阶段,允许其灵活的作适当的提前和推后,使得相邻,甚至非相邻的阶段之间会出现部分重叠,从而允许并发执行。 3.3.4测试的循环幅度

增加了从各个测试阶段指向单元测试的箭头,表示在该阶段发现并修改错误以后回归测试的范围:均从最底层的单元测试开始着手进行。正确地刻画了回归测试的应用范围,从而保证原有错误的彻底修改以及新错误的彻底避免。

4 TEmb方法的通用要素和V模型个阶段的结合

1.生命周期--定义必须进行的活动以及按什么顺序来执行

基于v模型的测试方案.主要分为四个开发阶段(需求分析、概要设计、详细设计、编码)的测试和四个测试执行过程(单元测试、集成测试、系统测试、确认测试)。其中,四个测试执行过程既统一构成测试阶段,又分别贯穿开发的各个阶段。

2.技术--解决了使用方法选择的问题,提供详细、通用、有效的方法支持测试过程

单元测试是处于模块层次的测试,针对编码产生的源代码,通常会采用白盒测试技术;基于路径覆盖原理,目的是最大限度的检测出程序中的错误。

集成测试针对模块集成过程中,各模块接口之间是否协调问题进行测试,集成测试通常会采用黑盒测试技术,他通常包括:恢复测试(restore testing),安全测试(security testing),压力测试(stress testing),性能测试(performance testing)等。

从V模型来看,系统测试是产品提交给用户之前进行的最后阶段测试。系统测试属于黑盒测试范畴,是应用最为广泛的一种测试方法。

针对确认标准的测试。确认标准由需求分析产生,所以实际上就是指规格化的需求;通常采用黑盒测试技术。

3.基础设施--在测试环境中需要哪些设施,以便能够执行计划中的活动

测试基础设施包括结构化测试所需的所有设备,可分为三类:执行测试所需的设备(测试环境),使测试得以有效执行的设备(测试工具和测试自动化)、人员的工作场所(办公环境)。这在V模型的开发测试过程中是需要整体考虑的。

4.组织--执行人员的角色确定及所需要的专业技能

通常根据诸如测试层次、测试对象大小、组织文化等因素来选择测试角色、人员和管理的最优组合,在高层次测试时(系统测试和确认测试),关于各种测试角色的组织、管理和组织结构的组成模块在许多项目中都需要。对低层次测试(单元测试和集成测试)这些构件的某个部分的一个分支就足够了。主要的目标应当总是:在时间和预算限制之内得到可能的最佳测试。

5 结束语

该文在分析了现有V模型不足的基础上提出了一种改进的软件测试模型,并利用TEmb方法的思想从V模型的各个阶段提取该方法中的通用元素,在结合软件测试的通用 要素和改进V模型,从而组成相对于某一具体系统的特定测试方法。这两点也是本文的创新点所在。但是,尽管有通用要素的存在,但嵌入式系统的软件方法都是互不相同的,嵌入式软件测试是基于具体嵌入式系统,考虑此系统的特定要求,如系统特性、安全特性、算法、输入输出接口、硬件限制条件等,这使得嵌入式软件测试成为一项复杂但又必须进行的工作。


火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。
资源网站: UML软件工程组织