Fork me on GitHub

基于模型的测试工具: Spec Explorer

一、什么是基于模型的测试

Wiki的描述如下:基于模型的测试属于软件测试领域的一种测试方法。按照此方法,测试用例可以完全或部分的利用模型自动产生。以上所说的模型通常是指对被测系统(SUT,system under test)某些(通常是功能性的)方面的描述。

模型一般都是对被测系统(SUT,system under test)预期行为动作的抽象描述。 这些测试用例的集合就是我们平时所称的抽象测试套件(abstract test suite). 抽象测试套件不可以直接执行于需测试的系统,因为,他们不在同一抽象级别。

测试套件(test suites)是由模型生成,而不是由源代码生成。因此,基于模型的测试又常常被当作黑盒测试的一种形式。但从某种层面来说, 这并不十分准确。毕竟,基于模型的测试是与源代码级的测试覆盖率,以及对代码的功能测试都有着很大的关系。

对于复杂的软件系统中,如何应用基于模型的测试还在探索中。

在Spec Explorer的有篇文章:http://blogs.msdn.com/sechina/archive/2009/11/19/9925129.aspx,文章对基于模型的测试作了描述,并给出了一张简图进行说明:

MBT_4

基于模型的测试是一个轻量级的,形式化的验证软件系统的方法。为什么这么说呢,因为首先,基于模型的测试对待测软件系统(通常被称为System Under Test,简称SUT)进行形式化的建模,设计出机器可读的模型;其次,和其他形式化方法比,基于模型的测试并不致力于让待测软件系统与规格说明在所有可能情况下都保持一致,而是系统化的从模型生成一组测试用例,使用这组测试用例测试待测软件系统,得到充分的证据说明待测系统的行为与模型期望是一致的。轻量级和重量级的方法的根本区别在于一个是充分证明,一个是完全证明。目前完全验证一致性的代价非常高,重量级的形式化方法往往难以被应用到实际工程中,而基于模型的测试在这方面体现了优势,并已被运用到很多大型项目中。

二、基于模型测试工具Spec Explorer

Spec Explorer是微软发布的一款与Visual Studio紧密整合的基于模型测试的工具。用户可以通过Spec Explorer对一个软件系统的期望行为进行建模,并自动生成能够在Visual Studio的测试框架下运行的测试代码。模型可以用当前主流的程序设计语言C#开发,然后通过Cord语言脚本对模型进行配置和裁剪。

模型可以图形表达方式查看,帮助理解分析软件系统预期行为,或与其他人沟通。模型的大小可以通过正则表达式来界定,而产生的测试套件不仅能够在单独的Visual Studio测试框架中运行,也能够在其他单元测试框架中运行。

spec explorer

微软的多个不同规模的项目都已将Spec Explorer 纳入为开发流程的一部分。使用Spec Explorer 帮助这些团队更快速创建测试用例、确保需求覆盖的可预见性并提供项目生命周期管理及软件更新的支持。

InfoQ上朱永光11月发布了一篇文章用Spec Explorer进行基于模型的测试,文章里提到了Spec Explorer分别提供了Visual Studio 2008Visual Studio 2010的版本,同时也提供了详细的文档供大家学习使用,还有介绍视频,对核心作者的访谈。这些都是了解和学习Spec Explorer这个工具的资源。

posted @ 2009-12-13 14:04  张善友  阅读(3762)  评论(0编辑  收藏  举报