基于状态的测试(状态图表)&转换序列

时间:2009-12-24 20:17:42

标签: testing state-machine transitions code-coverage

我真的被一些基于状态的测试概念所困扰......

我正在尝试计算一些检查序列,这些检查序列将覆盖每个州的所有转换,我有答案,但我不理解它们:

alt text http://www.gam3r.co.uk/1m.jpg

现在我的答案是:

alt text http://www.gam3r.co.uk/2m.jpg

我根本不明白。例如,我们想要检查s1的过渡a / x,我们不会只做ab吗?由于我们已经在s1中,我们做一个/ x来测试转换到s2,然后b来检查我们是否处于先前正确的状态(s1)?我不明白为什么它是aba甚至bb for s1 ...

有人可以跟我说话吗?

由于

1 个答案:

答案 0 :(得分:1)

在4个状态中每个状态有2个事件,提供8个转换,作者已决定在8个单独的测试序列中进行测试。每个序列(S1序列除外 - 显然机器的初始状态为S1)需要将机器驱动到目标状态,然后执行事件a或事件b。

他选择的序列已足够,因为每个过渡都被覆盖。但是,它们并不是唯一的,而且 - 正如您所观察到的那样 - 并非最小化。

更明显的选择是:

a b ab aa aaa aab ba bb

我不理解作者在每个序列末尾添加多余过渡的目的。该系统是Mealy机器 - 机器的行为由当前状态和事件唯一确定。没有通往当前状态的路径的记忆;因此,作者的额外过渡不会给予额外的覆盖,只会让人感到困惑。

你也可以用图表中较短的一组路径覆盖所有过渡。但是,我不愿意这样做。清晰度比测试代码的优化更重要。