testing - 基于状态的测试(状态图)和转换序列

标签 testing state-machine transition 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 中,所以我们执行 a/x 来测试到 s2 的转换,然后执行 b 来检查我们是否处于之前的正确状态(s1)?我不明白为什么 s1 是 aba 甚至是 bb...

谁能帮我解释一下?

谢谢

最佳答案

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

他选择的序列足够了,因为每个转换都被覆盖了。然而,它们并不是唯一的,而且正如您所观察到的那样,它们并不是最小的。

一个更明显的选择是:

一个b ab aa 啊啊啊 啪啪

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

您也说对了,您可以用一组较短的图形路径覆盖所有转换。但是,我不愿意那样做。清晰比优化测试代码更重要。

关于testing - 基于状态的测试(状态图)和转换序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1959623/

相关文章:

php - laravel中使用Faker时,如何测试API调用的结果?

scala - 查找 Array[Int] 的第一个空值

swift - 如何在没有扫描功能的情况下保留 Rx 中的状态

wpf - 使用 wpf VisualStateManager 动画可见性和不透明度

css - transform + transition 导致跳转或模糊内容 CSS

javascript - 如何设置动画持续时间以匹配页面加载时间?

android - Android 上的多点触控测试用例?

testing - 测试 MSI 安装的最佳实践

oop - 你会如何给洗衣机编码?

c++ - 如何让这个 Qt 状态机工作?