基于模型的软件测试

发表于:2013-2-20 15:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨朝红等    来源:51Testing软件测试网采编

  摘要:基于模型的软件测试是软件编码阶段的主流测试方法之一。基于多年的测试实践,本文认为基于模型的软件测试技术具有测试效率高、对逻辑复杂故障测试效果好等特点,但是误报、漏报和故障机理是依然需要进一步研究的问题。本文对主要的测试模型进行了分析和分类,并对其故障密度等参数进行了初步的分析。最后,本文给出了一种基于模型的软件测试方法。

  关键词:软件测试;静态分析;测试模型

  引言

  如何研制高可靠的软件系统,是学术界和工业界共同关注的问题。基于模型的软件测试技术是针对软件中的一些常见的软件模型而提出的一种测试技术,如故障模型、安全模型、死锁模型等。与形式验证试图证明整个软件没有故障不同,基于模型的软件测试技术首先提出软件模型,然后通过检测算法进行检测,如果检测算法是完全的,则能够从软件中排除该类模型。

  近年来,基于模型的软件测试技术得到快速的发展,大量的软件测试工具被研制出来从而可以自动地检测软件中的故障,并且在对一些大型商业软件和开源软件的测试中发现了大量的以前测试没有发现的软件故障和安全隐患。例如,SDV 在对Windows操作系统126个使用多年的驱动程序测试中发现了65个故障,包括12个严重故障;EXPLODE 在一些常用的文件存储系统系统发现了大量的严重故障;MC 在Linux、OpenBSD 和Xok exokernel 软件中发现了近500 个故障以及100多个安全漏洞。FindBugs在Eclipse、J 2SE 和JBoss 等开源软件中发现上百的故障。在NASA以及神舟软件的测试中,基于模型的软件测试技术都得到较好地应用。

  我国有不少高校和研究所从事软件测试和形式验证及相关理论方面的研究工作,包括南京大学、国防科技大学、上海交通大学、华东师范大学、同济大学、东南大学、北京航空航天大学以及中科院软件所等。但是,尚未见国产的基于模型的软件测试技术的商业化测试工具,目前国内测试中心使用的相关测试工具基本上都是从国外购置。近年来,我们和国外合作利用基于模型的静态分析测试工具对IBM、HP、BOEING等知名企业的已经长期运行的数百万行商业代码进行测试和分析,发现了数百的故障。同时,我们在军队预先研究等项目资助下自主开发了C/C++的故障查找工具TGSOFM,对国内7个软件约32万行、2类故障进行测试,发现了约300个故障。

  1、基于模型的软件测试技术

  1.1 特点

  与其他测试技术相比,基于模型的软件测试技术具有如下特点:

  (1)工具自动化程度高以及测试效率高。在内存为1G、CPU为118G的PC机上, Findbugs 对Eclipse、J2SE 和JBoss等开源软件进行分析,所耗时间不超过65 min ,其中,对J 2SE 中的rt . jar 分析,该程序包有13083个类,约40M大小,所耗时间只需45min。在内存为512M、CPU214G 的普通PC机上,我们利用自主开发的TGSOFM对约万行的VC程序进行故障分析只需要2min左右。

  (2)基于模型的软件测试技术往往能发现其他测试技术难以发现的故障。如上面举的例子都是对经过测试且长期使用程序进行测试得到的结果。

  1.2 存在的基本问题

  基于模型的软件测试技术不能替代已有的其他测试技术,它是其他测试技术一个有力的补充。基于模型的软件测试技术虽然近年来得到广泛的研究,但是有一些基本的问题依然没有得到很好地解决。

  (1)误报问题。误报问题是基于模型的软件测试技术的一个共性问题。通常基于模型的软件测试技术都属于静态分析技术,由于某些故障的确定需要动态的执行信息,因此对于基于静态分析的工具来说,误报问题是不可避免的。故障的最后确认一般需要人工进行,因此如果IP 集合过大,测试的代价就可能无法忍受,所以要尽量缩减待确认的IP集合。为此,有人提出,将动态测试与静态测试有机结合来解决误报问题。

  (2)漏报问题。漏报问题主要由模型定义和模型检测算法引起。目前对于软件模式没有一个规范的、统一的和形式化的定义。不同的故障查找工具都给出自己所能检测的模型的定义,但是这些定义很多都是一些自然语言的描述,有的甚至只是给出一个简单的例子进行说明;同时,针对具体的软件模型,不同的检测工具一般设计自己的检测算法,从检测的效率和实现的复杂性上考虑,不同的算法给出不同的假设以降低计算复杂性,这导致对于相同的模型,用不同的工具进行检测得到的故障结果集合很大不同。文献使用一些常用的Java程序故障自动分析工具对Eclipse 、JDK 和JBoss 等开源软件进行测试,发现不同的工具得到的检测结果集差别较大。使用我们开发的工具TGSOFM和Reasoning公司的工具对4个软件项目约32万行源代码关于内存泄漏和空指针引用故障进行测试,发现的故障集合也有所不同。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号