基于模型的测试工具: 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,文章对基于模型的测试作了描述,并给出了一张简图进行说明:

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

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

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

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

PageRank算法原理与实现

PageRank,又称网页排名、谷歌左侧排名,是一种由搜索引擎根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(...

13530
来自专栏祝威廉

MLSQL解决了什么问题

MLSQL提供了一套SQL的超集的DSL语法MLSQL,数据处理,模型训练,模型预测部署等都是以MLSQL语言交互,该语言简单易懂,无论算法,分析师,甚至运营都...

11620
来自专栏AI科技大本营的专栏

如何在浏览器上跑深度学习模型?并且一行JS代码都不用写

翻译 | 林椿眄 编辑 | 周翔 2017 年 8 月,华盛顿大学的陈天奇团队发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机...

41150
来自专栏华章科技

使用python抓取婚恋网用户数据并用决策树生成自己择偶观

之前在世纪佳缘上爬取过类似的数据,总体的感觉是上面的用户数据要么基本不填要么一看就很假,周围的一些老司机建议可以在花田网上看下,数据质量确实高很多,唯一的缺点就...

10120
来自专栏云时之间

机器学习资料合计(一)

最近在群里发现一些小伙伴在寻找资料的时候总是无处可找,网上出现很多收集免费资料再去打包收钱的人,我看不惯这样的人,所以把自己收集的文件分享给大家。百度云经常抽风...

40880
来自专栏个人分享

PageRank算法

PageRank,网页排名,又称网页级别,传说中是PageRank算法拯救了谷歌,它是根据页面之间的超链接计算的技术,作为网页排名的要素之一。它通过网络浩瀚的超...

36720
来自专栏数据科学与人工智能

【Python环境】探索 Python、机器学习和 NLTK 库

挑战:使用机器学习对 RSS 提要进行分类 最近,我接到一项任务,要求为客户创建一个 RSS 提要分类子系统。目标是读取几十个甚至几百个 RSS 提要,将它们的...

30880
来自专栏SAP最佳业务实践

从SAP最佳业务实践看企业管理(140)-库存进出策略

如何实现先进先出? 按照批次管理对仓库物料实施管理即可。即明确批次管理标准,入库产品按规定给其相应批次标识,并按照物料类别、批次号分层或分区存放,发料时,严格按...

33840
来自专栏ATYUN订阅号

使用Unity3D和TensorFlow教AI投篮

在本文中,我们将深入探讨如何使用Unity3D和TensorFlow来教AI执行简单的游戏任务:投篮。完整的源代码可以在文末访问Github链接。

30330
来自专栏CDA数据分析师

资源 | 让你事半功倍的小众Python库

提取数据,特别是从网络中提取数据是数据科学家的重要任务之一。Wget 是一个免费的工具,用于以非交互式方式从 Web 上下载文件。它支持 HTTP、HTTPS ...

17230

扫码关注云+社区

领取腾讯云代金券