1

我正在尝试 Spec Explorer,现在我遇到了我的测试套件不完整的错误。我没有收到错误或任何东西,只是我希望有 16 个测试用例,而我只有 11 个。

我遇到的问题是 Spec Explorer 2010 中的示例项目。因为我是新手,所以我在示例项目中尝试了不同的东西,所以像扩大范围和扩大双加到四加这样的东西。最后一个是我注意到我缺少一些测试用例的地方。我将其改回三重添加,以查看问题是否存在。正如我所料,我又错过了一个测试用例。只有三元组,我预计会有 8 个测试用例,但我只得到了 7 个。我在代码中唯一改变的地方是:

machine DoubleAddScenario() : Main where ForExploration = true
{
    (Add(_); Add; Add; ReadAndReset)*
}

我也试过这样做

(Add(_); Add(_); Add(_); ReadAndReset)*

但同样的问题。我缺少的测试用例是 Add(1); 添加(2);添加(1)。我也尝试过只调用这个,并且它有效,那么为什么我在我的测试套件中错过了它?

我做错了什么,还是 Spec Explorer 为我过滤了一些东西?如果是 Spec Explorer,它在哪里做出这个决定?

4

1 回答 1

1

好问题。缺少测试用例的原因是 Spec Explorer 使用步骤(转换)覆盖而不是完整路径覆盖作为覆盖标准。因此,您会找到一个在第一步“Add(1)”中使用的测试用例,另一个在第二步“Add(2)”中使用的测试用例,最后是在第 3 步中使用“Add(1)”但不使用的测试用例必须是具有精确组合的单个测试用例。您可以在论坛和 Spec Explorer 的帮助中找到答案(因为那里确实提出了很多问题):

http://msdn.microsoft.com/en-us/library/ee620427.aspx

http://social.msdn.microsoft.com/Forums/en-US/977b90c1-8938-474a-840e-14fd78b1af3e/spec-explorer-wmethod?forum=specexplorer

Spec Explorer 用于现实世界的测试,因此必须解决路径覆盖呈指数爆炸的问题(MBT 中的众多问题之一)。Spec Explorer 非常酷的解决方案是 Cord 语言(如果需要,也可以是常规语言)。Spec Explorer 现在允许我们只用场景勾画测试用例,而不是繁琐的测试用例编程。细节和组合来自通用模型。在实践中,这是我们(至少我做过的所有项目)真正想要的。如您所见,如果您确实需要,可以添加缺少的测试用例。

于 2014-09-17T16:52:08.227 回答