2.运行剖面的构造过程

2.1 运行的表示方法

首先来定义两种图,第一种图用来描述分解后的运行,即运行图,定义为TF={P1,P2,……Pn},其中,P1,P2……Pn表示构成运行的各个状态,Pi的下一个状态为Pi+1,Pi的上一个状态为Pi-1,这些状态表示的是一个任务从开始到结束的一个过程,即P1-〉P2……-〉Pn。我们可以用这个图来描述经分析得到的运行。当运行图中某个状态中可以有几种不同的路径到达下一个状态时,仅用运行图就不能准确表达该运行,此时,就要用到状态细化图,状态细化图用来描述运行图中状态的内部细节,定义为一个三元组DTF= ,其中,sequence={Bi|Bi=TFi}, i=“1”……n。start为此细化图的公共开始节点,end为此细化图的公共终止节点。被测软件中所有的运行,只要划分的足够细,都可以由上面两种图准确的表示出来。

2.2 将由运行图、状态细化图表示的运行剖面转化为Markov链表示

将以上两种图描述的运行剖面转化成Markov链描述主要基于以下考虑:

1.Markov链的特点是下一个状态只和当前状态有关,而与历史状态无关,在这里就是软件的当前状态只和上一状态有关,与更早的历史状态无关,若上一状态正确,则在正确的输入下,软件的当前状态一定正确,否则,软件一定存在缺陷,这对于定位软件测试中的错误是十分方便的,通过Markov链中状态转移概率,还能直观的认识到软件中各个功能的使用频率,给出一个定量的描述。

2.这里的Markov链描述相当于编译中的中间语言,即程序的所有处理都是基于Markov链的。使用中间语言便于程序内部处理。

3.当某个节点内部有需要细化的分支时,Markov链会综合内部分支,给出一个整体的综合表述。这对于产生测试用例非常方便。

4.算法1:图描述转化为Markov链描述算法:该算法的输入为运行图、以及状态细化图,将运行图进行化简、并综合其中的状态细化图,将每一个运行都表示为一Markov链。

对每一个运行图,调用以下算法:

1.首先,插入一个开始状态,读入第一个节点

2.对该节点进行以下判断:

3.1.1 该节点是否为分支节点,若是则对该节点调用分枝遍历算法

2.1 其次判断该节点是否有输入,若有则插入一个新状态,并设置新状态的相关属性,并生成一条消息从当前状态指向新插入的状态

4.若还有其他节点,则进入下一个节点,重复步骤2,否则,算法结束

5. 算法2:分支遍历算法:

1.读入一个分支的第一个节点

1.1对该节点进行以下判断:

1.1.1判断该节点是否为分支节点,若是则调用分支遍历算法

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查