13

您在基于模型的测试中使用了哪些策略?

  • 您是专门将它用于集成测试,还是将其扩展到其他领域(单元/功能/系统/规范验证)?
  • 您是构建专注的“密封”模型还是随着时间的推移发展复杂的 onibus 模型?
  • 在产品周期中,您何时投资创建 MBT?
  • 您专门为 MBT 创建什么样的基础测试库?
  • 为了更好地支持 MBT,您在功能基础测试库中有何不同?

4

4 回答 4

14

[这方面有几篇文章值得一读。Stack Overflow 不允许我发布多个,因此我将它们汇总在一篇博文中,链接在此答案的末尾。]

首先,快速说明条款。我倾向于使用 James Bach 对测试的定义,即“质疑产品以评估它”。所有测试都依赖于被测应用程序的 /mental/ 模型。不过,基于模型的测试一词通常用于描述对可以通过自动化进行探索的模型进行编程。例如,可以指定应用程序可以处于的多个状态、这些状态之间的各种路径,以及关于在这些状态之间的转换中应该发生什么的某些断言。然后可以让脚本在状态模型中执行转换的半随机排列,记录潜在的有趣结果。

这里有真正的成本:构建一个有用的模型,创建用于探索它的算法,记录系统以清除有趣的故障等。成本是否合理与您想要的问题有很大关系回答?一般来说,从“我想知道什么?我怎样才能最好地了解它?” 而不是寻找一种有趣的技术的用途。

尽管如此,一些优秀的测试人员已经从基于模型的自动化测试中获得了很多成果。有时,我们有关于被测应用程序的重要问题,最好通过自动化、大容量半随机测试来探索这些问题。Harry Robinson(基于模型的测试的主要理论家和支持者之一)描述了一个非常有趣的例子,他在使用基于模型的测试(使用 ruby​​ 的 Watir 库编写)时发现了 Google 驾驶方向中的许多有趣的错误。1

罗宾逊在贝尔实验室、微软和谷歌等公司成功使用了 MBT,并撰写了许多有用的文章。 [2]

Ben Simo(另一位伟大的测试思想家和作家)也写了很多值得一读的关于基于模型的测试。 [3]

最后,几点注意事项:要充分利用一种策略,需要同时探索其优势和劣势。为此,James Bach 就基于模型的测试的局限性和挑战进行了精彩的演讲。巴赫的这篇博文链接到他的一小时长演讲(以及相关的幻灯片)。 [4]

我将以关于 Boris Beizer 所说的农药悖论的注释结束:“你用来预防或发现虫子的每一种方法都会留下一些微妙的虫子残留物,而这些方法对这些虫子是无效的。” 脚本测试(无论是由计算机还是由人执行)特别容易受到农药悖论的影响,每次执行相同的脚本时往往会发现越来越少的有用信息。人们有时会转向基于模型的测试,认为它可以解决农药问题。在某些情况下,基于模型的测试可能会发现比给定的一组脚本测试更大的错误集……但应该记住,它仍然从根本上受到农药悖论的限制。记住它的局限性——并从 MBT 很好地解决的问题开始——它有可能成为一种非常强大的测试策略。

可以在此处找到上述所有论文的链接:http: //testingjeff.wordpress.com/2009/06/03/question-about-model-based-testing/

于 2009-06-03T16:59:56.903 回答
1

我们没有做任何/太多的 I&T 并且几乎完全使用单元测试,并进行了一些系统测试。但我们的重点显然是单元测试。我对我们构建/提供的 API 非常严格,所以假设是,如果它自己工作,它会协同工作,而且还没有太多错误。

我们的模型专注于具有尽可能少依赖的单一用途/模块。

重点总是尽可能早地开始(TDD-kinda),但不幸的是,我们并不总是能做到这一点。问题是,你总是必须把它卖给管理层,这很困难,因为虽然测试提高了稳定性(整体 QA),但外部人员(技术之外)在发生不好的事情之前无法真正理解这意味着什么。

由于我们使用 PHP,因此我们使用 PHPUnit 进行单元测试。总而言之,我们使用各种不同的工具进行 CI。:)

于 2008-08-25T17:19:50.737 回答
1

Harry Robinson,MBT-books 的作者,曾在 Google 和 Microsoft 使用过很多书籍,在这个网站上提供了一些很棒的信息和白皮书。

http://www.geocities.com/model_based_testing/

于 2010-03-30T13:21:09.103 回答
0

最好的方法是自己尝试基于模型的测试工具。这是了解基于模型的测试是否适合您的上下文的最佳方式。什么样的策略是好的策略。

我建议您使用 All4Tec 的“MaTeLo”工具 (www.all4tec.net)

“MaTeLo 是用于黑盒功能和系统测试的测试用例生成器。MaTeLo 遵循基于模型的测试方法,使用马尔可夫链对测试进行建模。这个统计插件允许以系统的方式验证产品。效率是通过减少所需的人力资源,模型重用的增加和测试策略相关性的增强(由于可靠性目标)。MaTeLo 是独立且用户友好的,提供从测试脚本到实际测试的验证活动工程并专注于测试的真正附加值:测试计划”

您可以要求评估许可证并自行尝试。

你可以在这里找到一些例子:http ://www.all4tec.net/wiki/index.php?title=Tutorials

于 2009-09-01T16:38:56.887 回答