APP下载

软件测试中测试模型的应用

2013-05-08

铁路通信信号工程技术 2013年1期
关键词:软件测试测试方法设计阶段

宁 鑫

(北京全路通信信号研究设计院有限公司,北京 100073)

宁鑫,男,硕士毕业于北京航空航天大学,测试工程师。主要研究方向包括列车运行产品的软件测试技术、接口测试和系统测试等方面,曾经参与“BTM应用于城轨ATC系统的适配与安全认证”的软件测试和软件需求测试,“运输扩能提效技术研究”项目软件测试和软件需求测试,“CTCS-300T车载设备的(CTCS-2功能)优化技术研究”的软件测试等项目。

在软件生命周期中,软件开发过程中已经有了较成熟的开发模型(如瀑布模型、渐进模型和快速开发(RAD)等)作为指导,但是这些开发模型都没有关注或体现软件测试活动的价值。由于软件测试在质量安全软件中的重要性,同样需要相关的模型指导测试工作的进行。

本文共分为4个部分,第一部分概述软件测试的内容;第二部分介绍软件测试模型种类;第三部分通过对比各种测试模型的优劣在不同的软件测试需求中选择不同的模型;第四部分得出结论,说明软件工程中的软件测试模型在软件测试工作中应用的重要性。

1 软件测试的概述

在传统的软件工程中,软件测试就是测试软件代码本身是否违反编码规则,是否功能正确,但全面而完整的软件测试不仅仅是测试软件代码本身,它还包括了软件定义阶段和设计阶段的测试,如对软件的需求分析、设计规格说明等进行测试。

软件测试的方法既可以分为静态测试和动态测试,也可以分为白盒测试、黑盒测试和灰盒测试等,从不同的角度可进行不同的划分。关键是在实际的项目中,在进行软件测试时,无论采用哪一种或几种测试方法,都一定要满足软件测试过程的完整性和充分性。

对一个软件项目进行测试时,首先进行静态测试(包括人工检测和计算机辅助分析),然后做动态测试(包括单元测试、集成测试),最后还需要进行确认测试和系统测试。在此需要说明的是对于安全软件和非安全软件,软件测试过程中每种测试所执行的内容和要求是不一样的。

2 软件测试的模型

2.1 V模型

V模型主要反映测试活动与分析和设计的关系,此模型将测试活动分为几种独立的过程,分别对应相应的开发过程,如图1所示。V模型的局限性在于,它把软件测试作为在软件代码编程完成后才开始的一个阶段,系统前期产生的错误直到后期的验收测试才能发现。

2.2 W模型

在软件各开发阶段增加同步对应测试过程,便形成W模型。如图2所示,W模型的特点是“尽早地和不断地进行软件测试”。W模型是对V模型的一个补充,双“V”结构模型,补充了软件需求分析阶段、设计阶段、代码实现阶段等各个阶段的测试工作。

2.3 H模型

H模型的软件测试过程强调测试活动完全是独立的,与开发等其他流程可以并发地进行,只要某个测试点准备就绪时,就可以进行一个阶段的测试活动,并且这样的过程在整个软件生命周期中随时可以开始。如图3所示。

2.4 X模型

X模型是将程序抽离成程序片段进行测试,然后通过各种的交接活动,最终集成为可执行的程序,如图4所示。

目前X模型还是一种未成熟的模型,没有被文档化,但是在X模型中提出探索性测试等理论也是值得学习和借鉴的。

3 软件测试模型应用比较

V模型的软件测试包括需求测试、设计测试和源代码测试,源代码测试是为了确保程序的正确性,需求和设计测试是为了使整个系统满足用户的需求。

V模型存在的缺陷:软件测试工作开始的很晚,必须要在编码完成后才能开始,容易使人理解为软件测试是软件生命周期的最后一个阶段。软件测试就是测试代码的正确性,这样忽略了需求和设计阶段的测试工作。而这些非编码阶段隐藏的错误或者缺陷一直到后期的验收测试才有可能被发现,而这时在进行修改已经很难了,从而很可能导致一个项目的失败。

V模型作为一种相对“简单”的软件测试模型,在一些非安全软件或只需要进行需求验证测试的软件工程中是十分适用的。

W模型可以看作是双“V”模型。W模型很明确的显示了需求阶段、设计阶段也需要进行相应的测试活动,如Fagan法。W模型强调了测试人员需要对项目设计阶段进行参与,并对相应的阶段进行完整而充分的测试,保证每个阶段的错误或者缺陷及时尽早的发现并改正,而不是遗留到编码结束后才发现不可测或者设计阶段包含致命的错误。

若依据W模型进行测试,一旦项目的需求分析开始,便要开始对需求进行测试,包括编制测试方法,测试案例等,还要对需求进行可测试性和不可测性划分。当设计文档都编制完成后,就应该开始对软件设计进行测试,同样必须制定测试方法,编写测试案例,查找设计阶段的缺陷。

和V模型一样,W模型也不是完美的,由于模型都是一种理想化的抽象,而现实的软件开发过程必然不可能一个阶段和一个阶段的区别很明显,每个阶段都有重复交叉的工作,我们不可能等待到一个阶段百分百完成后,才开始下一个阶段的工作,那样工作效率会大大降低。

实际的软件开发项目中,我们必须合理的规划软件开发与软件测试工作,使得软件需求分析、设计和编码等活动有机的叠加在一起,使得测试和开发工作真正做到即相互制约,又相互促进。

对于安全软件的测试来讲,W模型能较好的发挥测试工作的充分性,满足安全软件测试的要求。

H模型对软件测试活动做了更高一级的抽象,软件测试活动是独立的,不依赖于其他软件开发工作,软件测试工作既可以有序的先后进行,也可以并行执行。一个软件测试活动能不能开始执行的唯一条件是软件测试准备是否就绪。在H模型中,软件测试和软件开发不在那么紧密的联系在一起,一种测试活动本身也可能反复、多次进行的。

X模型将整个软件工程的程序先“分解”,后“整合”。对程序片段进行测试,测试完成后逐步集成成交大规模的代码程序,最终目标是全部整合成一个可执行的软件。X模型提出的探索性测试并不是事先计划的特殊类型的测试,使得测试不局限于测试方法本身,但也可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。X模型的局限性在于没有体现对需求、设计等活动的测试过程。

4 结论

在实际的软件测试项目中,要根据软件项目的安全等级,规模,和项目的时间安排等各种因素选择合适的测试模型,我们不能为使用测试模型而使用模型,不然起不到应由的测试模型的指导意义,反而可能使得一个项目失败。

在这些模型中,V模型的更加“简单”,使得它在一些快速开发、辅助工具开发或者小规模软件测试中使用十分合适;W模型更加强调了测试工作的完成性和充分性,在一些软件开发周期长,软件安全等级要求高或者是复杂的软件项目中使用,可以很好的保障项目质量;H模型的特点是强调软件测试是独立的;X模型更加灵活,也提出了探索性测试这种值得借鉴的测试方法,但是X模型没有体现对需求和设计活动等的测试过程,对安全软件来说不具备测试完整性和充分性。

根据软件测试项目的需求,可以灵活地选择合适的软件测试模型来提高软件测试的效率、保障软件产品的质量。

[1] Patton,R. 软件测试[M].北京:机械工业出版社,2006.

[2]蔡建平.嵌入式软件测试实用技术[M].北京:清华大学出版社,2010.

[3]罗国庆.实用软件测试方法与应用[M] . 北京:电子工业出版社,2003.

[4] Paul C Jorgensen. Software Testing:A Craftman’s Approach[M] . 北京:机械工业出版社,2008.

[5]郑人杰.计算机软件测试技术[M].北京:清华大学出版社,1992.

猜你喜欢

软件测试测试方法设计阶段
基于泊松对相关的伪随机数发生器的统计测试方法
BIM技术在设计阶段的应用
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
市政工程设计阶段的工程造价控制方法
EXCEL和VBA实现软件测试记录管理
软件测试工程化模型及应用研究
对改良的三种最小抑菌浓度测试方法的探讨