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

2.1若还有其他节点,则进入下一个节点,重复步骤1.1

3.1进行以下判断:

1.3.1若当前处理完的为第一个分支,则插入一个新的状态,并使最后一个节点指向这个新插入的节点

2.3.1若不是第一个分支,则使最后一个节点指向第一个分支的最后一个节点

4.1将当前节点置为算法开始时传入的节点,即分支的父节点,进行判断:

1.4.1当前父节点是否有超过1个的子分支,若有则进行判断:若超过一个子分支的下一个节点都是第一个分支的最后一个节点,则将这些子分支合并成一个子分支,即由父状态指向第一个分支的最后一个节点,概率为各个子分支的和

2.若还有其他分支,则进入其他分支,并设置当前分支为算法开始时传入的父节点,重复步骤1

经以上算法作用后,运行剖面可以表示为{OPi|OPi=<Oi,Pi>,i=1,2,…,N},其中Oi表示组成这个运行剖面的其中一个运行,Pi表示这个运行发生的概率。

每一个运行经算法作用后,都表示为一Markov链,根据算法,可以看出,该Markov链之包含了运行中的带有输入的节点以及其中的一些关键节点,该Markov链综合了每个运行的运行图以及其状态细化图,以下的程序处理都基于此Markov链。

3. 测试用例自动生成

测试用例是根据运行剖面随机生成的。在运行剖面中已经规定了每个输入变量的取值类型以及取值范围,并且认为变量在取值范围内均匀分布或分段均匀分布(由于很难确定变量的具体分布,这里假设为均匀分布)。软件可靠性测试是一种随机测试,测试用例的选取方式是随机选取。因此,根据随机测试的原则,在运行剖面给定的输入变量的取值区间内任意抽取一个变量的实际取值。将各个变量按顺序组合起来便生成了测试用例。用于软件可靠性测试的测试用例可以定义为:根据运行剖面生成的、完成对某一功能进行测试的、按顺序输入到被测软件的一系列输入变量的有序组合。

嵌入式系统中,输入可能为硬件信号或者人机接口,这就需要在标示测试输入类型时进行特殊标记,这里,可采用两种方法,一是软件模拟硬件信号,即当需要硬件信号时,由软件模拟此硬件信号,来保证测试的执行。二是对需要的硬件信号进行标示,当需要硬件信号时,系统会提示需要某个硬件信号的触发。

根据运行剖面生成测试用例的过程为:运行剖面由一系列变量的取值区间和该运行发生的概率组成。

首先,要随机抽取一个运行来实现对某一功能的一次测试。抽取运行的过程如下: