模型驱动的软件测试技术

一、引言

  模型驱动的软件测试(Model-Driven Test)技术是针对软件中的一些常见的软件模型而提出的一种测试技术,如故障模型、安全模型、死锁模型等。模型驱动的软件测试以明确描述系统预期行为的抽象模型为依据,根据模型覆盖测试准则自动生成抽象的测试用例,自动地产生测试脚本,执行测试并自动评价测试结果,从而有效提高测试效率。这一技术正成为当前软件工程学术界研究的一个重要方向。

  近年来,基于模型的软件测试技术得到快速的发展,大量的软件测试工具被研制出来从而可以自动地检测软件中的故障,并且在对一些大型商业软件和开源软件的测试中发现了大量的以前测试没有发现的软件故障和安全隐患。

  二、模型驱动的软件测试技术的特点

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

  (1)故障模型根据被测试应用程序的分析设计模型及其生成测试模型、产生测试用例和进行测试结果评价。

  (2)大大提高了测试自动化水平以及测试效率。

  (3)部分解决了测试失效辨识问题,往往能发现其他测试技术难以发现的故障,保证了软件质量。

  (4)有利于测试用例的重用,并可以应用成熟的理论和技术获得比较完善的分析结果。

  三、软件模型分类

  软件模型是对软件行为和软件结构的抽象描述。软件模型通常可以分为以下7 类:

  (1)故障模型

  故障模型主要是会引起错误的常见软件模型, 应该尽量避免, 如内存泄漏故障(MLF) 、使用空指针故障(NPDF) 、数组越界故障(OOBF) 、非法计算类故障(ILCF) 、使用未初始化变量的故障(UVF) 、不完备的构造函数故障(ICF) 以及操作符异常故障(OAF) 等。

  (2)安全漏洞模型

  安全漏洞模型为他人攻击软件提供可能。而一旦软件被攻击成功,系统就可能发生瘫痪,所造成的危害可能更大。因此,此类漏洞应当尽量避免,如:缓冲区溢出漏洞模型、被感染数据漏洞模型、竞争条件漏洞模型等。

  (3)差性能模型

  该模型在软件动态运行时效率比较低下,因此建议采用更高效的代码来完成同样的功能。这类模型主要包括调用了不必要的基本类型包装类的构造方法、空字符串的比较、拷贝字符串、未声明为static 的内部类、参数为常数的数学方法、创建不必要的对象以及声明未使用的属性及方法等。

  (4)并发故障模型

  该模型主要是针对程序员对多线程的编码机制不十分了解,对各种同步的方法、Java 存储器模型和Java 虚拟机的工作机制不是很清楚,而且由于线程启动的任意性和不确定性使用户无法确定所编写的代码具体何时执行而导致对公共区域的错误使用,如死锁等。

  (5)不良习惯模型

  该模型主要是由于程序员编写代码的不好习惯造成的一些错误。包括文件的空输入、垃圾回收的问题,类、方法和域的命名问题,方法调用,对象序列化,域初始化等。

 

 (6)代码国际化模型

  该模型主要是在语言进行国际化的过程中,可能造成本地设置和程序需求不符的情况,造成匹配错误。

  (7)易诱骗代码模型

  该模型主要指代码中容易引起歧义的、迷惑人的编写方式。比如无意义的比较,永远是真值的判断,条件分支使用相同的代码,声明了却未使用的域等,即那些混淆视听,无法正常判断程序的真正意图的代码。

  四、模型驱动的软件测试过程

  模型驱动的软件测试方法通过对测试过程的抽象化,分离测试模型和测试执行,从而能够通过正向或逆向手段建立针对WA某方面特征的测试模型,并重用有针对性的测试执行手段。传统黑盒、白盒测试方法与模型驱动的软件测试方法并不矛盾,它们可以被包含到模型驱动的软件测试过程中。

  如图1所示,测试模型是模型驱动的软件测试的核心概念,它在测试的不同阶段表现为不同视图。

  (1)通过被测系统(SUT)视图得到测试模型;

  (2)基于测试模型,自动化或半自动化地得到测试用例集,通过测试用例视图描述;

  (3)在测试执行阶段,测试部署和调度视图通过相应模型描述测试的执行环境以及执行过程;

  (4)根据部署调度模型自动执行测试用例,生成的结果通过测试结果视图显示,并将某些结果直接反馈给被测系统模型、测试用例模型以及部署调度模型,在各自视图上直观的显示出来,便于分析结果进行回归测试。

  五、模型驱动的软件测试工具

  模型驱动的软件测试必须有相关工具支持。当前,有代表性的模型驱动的软件测试工具中有:

  (1)支持状态机模型的工具。包括:Software Engineering Technology的测试工具toolSET_Certify,运行于RISC6000和SUN平台;IBM的GOTCHA,可以根据用户事先确定的测试充分性准则进行基于软件状态模型的测试例生成;IBM 的TCBean是一个提供测试脚本管理功能的基于状态机的测试引擎。

  (2)支持马尔可夫链模型的工具。包括:Cleanroom Software Engineering的CleanTest,支持统计测试,是商用的使用模型及统计测试例生成工具;IBM 的CleanroomCertification Assistant,可以自动化统计验证过程,通过使用概率分布产生测试例,并对测试结果进行分析。

  (3)对UML模型提供测试支持的工具。包括:SilverMark公司针对IBM 公司的VisualAge开发的支持测试用例生成和回归测试的TestMetor和UML Designer Connection。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-07-31 10:37:27

模型驱动的软件测试技术的相关文章

《软件测试技术实战:设计、工具及管理》—第1章 1.1节软件测试的基本理论

第1篇 软件测试设计技术 软件测试技术实战:设计.工具及管理 如何把用户的需求转换为软件测试设计,这是软件测试工程师的工作重心所在.本书第一篇通过6个章节来讲述一下如何进行软件测试设计. 本篇共分以下几个章节. 第1章,软件测试的基本知识:首先讲解一些软件测试的基本知识,如果你对软件测试的基本概念已经非常熟悉了,那么就可以简单浏览,甚至跳过本章的内容. 第2章,传统的软件测试的设计方法:本章主要介绍软件测试中最经典的5个黑盒测试方法(等价类/边界值.决策表.状态转换图.决策树和正交测试法)和7个

《软件测试技术实战:设计、工具及管理》—第2章 2.1节运用等价类/边界值设计测试用例

第2章 传统的软件测试的设计方法软件测试技术实战:设计.工具及管理从本章开始介绍软件测试的各种设计方法,这是学习软件测试的重要内容. 一般来说,软件测试设计方法分为5类:传统的黑盒测试方法.基于质量的测试方法.基于风险的测试方法.基于经验的测试方法以及白盒测试方法.本章主要介绍传统的黑盒测试方法和白盒测试方法,共分7节. 5种黑盒测试方法如下. 等价类/边界值. 决策表. 状态转换图. 决策树. 正交法. 7种白盒测试的方法如下:. 语句覆盖. 分支覆盖. 条件覆盖. 判定/条件覆盖. MC/D

《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.6节模拟面试问答

1.6 模拟面试问答 本章介绍的是软件测试相关的背景,以及软件测试的发展情况等.身为软件测试员,应该或多或少地了解软件测试的发展动态,及其相关的历史事件等内容,这样无论是在与同行交流,向开发人员介绍和讲解测试,还是在应聘面试中,都会有更多的话题. 一般在应聘过程中,面试官可能会问到以下一些问题,读者可以根据自己的了解以及在本章中学到的内容做出相应的回答. (1)您觉得目前的软件测试行业的现状是怎样的? 参考答案:目前的软件测试行业在国内正在蓬勃地发展中,但是由于起步比较晚,虽然大部分公司都已经设

2009年国内软件测试的十大热点预测

2009年悄悄地来到了,送走了艰难的.折腾的2008年.人们对2009年会充满更多的期望,9是一个吉祥的数字,天长地久,而且农历是牛年,牛年更牛. 到了2009年,该为软件测试写点什么.顺民意,预测一下2009年国内软件测试的十大热点. 基于云的测试将是新的课题,包括测试方法.技术和工具.而且,云环境下的测试也是减少测试成本的一个途径. 基于Web 2.0/Ajax 的软件测试技术还是热点.Java/Javascript技术变化很快,系统开发框架也是层出不穷. 软件测试自动化也还是热点,包括更多

软件测试面试题答案整理

1.你的测试职业发展是什么? 测试经验越多,测试能力越高.所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去.而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己,不断更新自己改正自己,做好测试任务. 2.你认为测试人员需要具备哪些素质 做测试应该要有一定的协调能力,因为测试人员经常要与开发接触处理一些问题,如果处理不好的话会引起一些冲突,这样的话工作上就会不好做.还有测试人员要有一定的耐心,有的时候做测试很枯燥乏味.除了耐心,测试人员不能放过每一个可能

曾玉波:“精准测试”有望成未来10年主流技术

又到了临近年底的时候,对国内大部分传统业来说,这一年是他们忙着转型的一年.在这一年中,各大企业主们都希望紧跟行业趋势,让自己的企业可以尽快完成向互联网+的转变与升级.这样一个趋势,顺势也带火了国内软件产业的发展.由于具有部署起来相对简单,成本较低,软件也就顺理成章的成为了传统企业将业务"搬到"线上的一个载体. 不过,尽管软件已经无处不在,但不像硬件那样看得见摸得着,软件内部逻辑的复杂程度难以预估.所以,要想让软件在交付使用的时候实现高可靠性,一定还得进行反复的测试.近日,记者采访到了一

软件测试产业迅猛发展 解读2017年六大趋势

2016年,近40%的公司在实施软件测试技术,并且扩大了采用力度.另有30%的公司计划在未来12个月内采用软件测试技术. 迅猛发展的互联网将我们带入了软件测试时代,软件测试已经成为发展中不可或缺的力量支撑,那些专注于数据挖掘和数据服务的公司同样成为不可低估的新兴力.在已经走完的2016年里,我们见证了软件测试的应用与变革,2017年,软件测试的世界又将发生怎样的变化? 软件测试产业迅猛发展 解读2017年六大趋势 软件测试的发展 在预测未来之前,先来看看软件测试近四年的发展.2013年被称为软件

中国软件测试专家访谈录

勤奋是一条通往成功的路 我的职业发展路径 蔡:谢谢文强接受我的采访.请相对详细地介绍一下你的个人经历.就我个人而言,我比较喜欢看人物传记.虽然我们不是什么大人物,但是每个人都是独特的,人生的经历都是宝贵的,其中或许有可以供其他朋友借鉴的地方. 按工号随机分配而进入软件测试行业 郑:我不是计算机相关专业毕业的,却阴差阳错地从事了与之相关的软件测试工作.1994年到1998年我在华东师范大学物理系上学,1998年到2001年接着在本校上了精密激光物理专业的研究生.因为大学与研究生专业都是理科,在整个

电子商务软件测试的探讨

摘要:介绍了当前电子商务应用领域的主要结构,以及基于此结构的软件测试技术,采用局部分层测试和系统整体测试相结合的方法是目前最值得介绍堵塞新做法,它既从局部出发,按照软件的三层结构分别对应用系统的每一个层面进行测试,又从整体出发,系统地对整个应用软件进行完整测试,保证了软件开发后的性能要求和用户的可用性. 关键词:电子商务:软件测试 国际互联网的快速增长,使WEB技术对商业.工业.银行.财政.教育.政府和娱乐及我们的工作和生活产生了深远的影响.许多传统的信息和数据库系统正在移植到互联网上,电子商务