什么是MBT?

上一篇 / 下一篇  2007-11-21 23:39:51 / 个人分类:MBT学习笔记

    MBT是Model-Based Testing的缩写,翻译成中文就是:基于模型的测试。 简单地说,就是根据用户的需求(或者SRS)进行建模,根据模型自动生成用例、自动执行验证过程的测试方式。

    这听起来像是童话故事,不过据了解,商用方面ms已经大面积铺开MBT的应用了(好像连建模工具都有了,说实话ms的很多境界已经超出我能体会的范围了),google似乎也已经进入到实际应用阶段,至于sun,techrepublic上的文章说是在01年还是02年就已经号称通过MBT大幅降低了bug残存。 而我看到的很多MBT的文章还是上个世纪写的。 但是在国内,这方面资料非常少,(google了半天找到一篇《基于模型的测试简介(一)》,并且再也没有找到过(二)-_-)

    MBT的好处我就不多说了,这里有一张图标识了MBT基本的工作流程:

(上图转自http://oldchild.nbc.net.cn/jsjsj/spks/cps/jymxdcs.htm

 

很容易想到,要实现MBT首先要解决建模的问题。 模型不但要完整清晰的表述软件的行为,还要符合一定的规范(否则怎么自动化),并且要容易理解。 这对测试人员的要求就更高了。

常用的行为建模技术有:判定表(Decision Tables)、有限状态机(Finite State Machines)、马尔可夫链及马尔可夫过程过程(Grammars Markov Chains (Markov process))等等。

判定表我就不解释了。

先讲下什么是有限状态机:(关于有限状态机的解释纯属个人理解,如有偏差望不吝指正)

要解释有限状态机首先要搞明白什么是状态机

比如说:

while (1 == 1) {

(干活)

}

这个可以看成一台机器,用他可以帮你干活。于是你指定他要做的事情:

while (1 == 1) {

打扫房间

做饭

}

这样的话两件事是一起干的,我们可以加一个变量让两件事分开:

flag = 打扫房间

while (1 == 1) {

  if (flag == 打扫房间) {

    打扫房间

  }

  if (flag == 做饭) {

    做饭

  }

}

但是这样的话机器只会打扫房间不会做饭,所以在机器里要加入状态的变更:

flag = 打扫房间

while (1 == 1) {

  if (flag == 打扫房间) {

    打扫房间

  }

  if (房间已经打扫干净) {

    flag = 做饭

  }

  if (flag == 做饭) {

    做饭

  }

  if (做完饭) {

    flag = 打扫房间

  }

}

这样一来,就形成了while的死循环,在循环内通过状态的改变来控制机器做各种不同的事情,这就是状态机。

那么什么是有限状态机呢? 所谓有限状态机就是指的拥有有限个状态的状态机,每个状态可以迁移到零个或多个状态。 有限状态机的限定在于:内存有限。 有限状态机可以用有向图来表示。 其实上面所讲的就是一个有限状态机。

再来解释下马尔可夫链和马尔可夫过程是啥东西:(对股市里的技术分析感兴趣的人一定要了解一下~)

  我们知道,事物的发展状态总是随着时间的推移而不断变化的。在一般情况下,人们要了解事物未来的发展状态,不但要看到事物现在的状态,还要看到事物过去的状态。马尔可夫认为,还存在另外一种情况, 人们要了解事物未来的发展状态, 只须知道事物现在的状态,而与事物以前的状态毫无关系。例如,A产品明年是畅销还是滞销, 只与今年的销售情况有关, 而与往年的销售情况没有直接的关系。后者的这种情况就称为马尔可夫过程,前者的情况就属于非马尔可夫过程。

  马尔可夫过程的重要特征是无后效性。事物第n次出现的状态,只与其第n-1次的状态有关,它与以前的状态无关。举一个通俗例子说:池塘里有三片荷叶和一只青蛙,假设青蛙只在荷叶上跳来跳去。若现在青蛙在荷叶A上,那么下一时刻青蛙要么在原荷叶A上跳动,要么跳到荷叶B上,或荷叶C上。青蛙究竟处在何种状态上,只与当前状态有关,而与以前位于哪一片荷叶上并无关系。这种性质,就是无后效性。

  所谓“无后效性”,是指过去对未来无后效,而不是指现在对未来无后效。马尔可夫链是与马尔可夫过程紧密相关的一个概念。马尔可夫链指出事物系统的状态由过去转变到现在, 再由现在转变到将来,一环接一环像一根链条,而作为马尔可夫链的动态系统将来是什么状态,取什么值, 只与现在的状态、取值有关, 而与它以前的状态、取值无关。因此,运用马尔可夫链只需要最近或现在的动态资料便可预测将来。马尔可夫预测法就是应用马尔可夫链来预测市场未来变化状态。

(马尔可夫链的解释转自http://www.fans7.com/post_80_10437_1.html,那边还有实际的例子,有兴趣的可以去看一下,我就不贴了)

 


TAG: MBT学习笔记

侧视浮生 引用 删除 photon   /   2008-02-13 00:10:20
5年以后再关注.
 

评分:0

我来说两句

Open Toolbar