微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式软件运行剖面建模及测试用例生成

嵌入式软件运行剖面建模及测试用例生成

时间:11-06 来源: 点击:

则对该节点调用分枝遍历算法

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

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

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

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

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

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

  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. 测试用例自动生成

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

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

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

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

  ① 将运行剖面{OPi|OPi=<Oi,Pi>,i=1,2,…,N}中所有运行发生的概率Pi求前j项和,形成一个数列{Sj},Sj=∑Pi,其中,i=1,…j,j=1,2,…,N;N为软件运行剖面中运行总数,规定S0=0,并有S1=P1,Sn=1.0,Sj-Sj-1=Pj。这里运行相互独立。

  ② 任给一个随机数η∈(0,1.0),观察η落在哪个区间,若η满足Sj-1<η≤Sj,则该随机数η与Pj这个概率值对应,那么这次随机抽到的运行为Oj。

  ③ 确定了抽到的运行为Oi后,就可以确定该运行的输入情况,假设该运行有m个输入,每个输入的可选值分别为I1,I2…Im,将其排列为一个二进制串,若I1有m1个可选输入,I2有m2个可选输入Im有mm个可选输入,则二进制串为(00…0) (00…0)……(00…0),其中,第一个括号内的0有m1个,第二个括号中的0有m2个,第m个括号中的0有mm个,构造一个布尔类型的数组,数组的大小为2(I1+I2+…+Im),数组的初始值均为false,每次产生一个测试用例时,从m个输入的I1,I2…Im中每一个输入的可选值中各选一个,并把二进制串中的相应位置1,m个输入都选好后,把对应的标记数组置为true。生成一个测试用例后,首先判断对应的标记数组,若为true,则需要重新生成一个用例。

  ④ 其中,要进行第二次抽样来确定运行中每个输入的取值区间将取到的实体(即具体取值)。实体的确定将按照输入变量的属性分两种情况进行:

① 对于连续型输入变量,运行剖面给出的是该变量的取值区间的上下限[I.down,I.up]。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top