0

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

我正在尝试计算一些检查序列,这些检查序列将涵盖每个状态的所有转换,我有答案,但我不明白:

替代文字 http://www.gam3r.co.uk/1m.jpg

现在我的答案是:

替代文字 http://www.gam3r.co.uk/2m.jpg

我完全不明白。例如,假设我们要检查 s1 中的转换 a/x,我们不会只做 ab 吗?由于我们已经在 s1 中,我们执行 a/x 来测试到 s2 的转换,然后执行 b 来检查我们是否处于之前的正确状态(s1)?我不明白为什么它是 aba 甚至 s1 的 bb ......

任何人都可以告诉我吗?

谢谢

4

1 回答 1

1

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

他选择的序列就足够了,因为每个过渡都被覆盖了。然而,它们不是唯一的,而且——正如你所观察到的——不是最小的。

一个更明显的选择是:

ab aa aa aab ba bb

我不明白作者在每个序列的末尾添加多余的过渡的目的。该系统是一台 Mealy 机器 - 机器的行为由当前状态和事件唯一确定。没有通往当前状态的路径的记忆;因此,作者的额外过渡没有提供额外的覆盖范围,只会造成混淆。

您也可以使用一组较短的路径来覆盖所有转换,这也是正确的。但是,我不愿意这样做。清晰度比测试代码的优化更重要。

于 2009-12-26T15:21:02.533 回答