您在基于模型的测试中使用了哪些策略?
您在功能基础测试库中有什么区别可以更好地支持MBT?
答案 0 :(得分:14)
[有几篇文章值得一读。 Stack Overflow不会让我发布多个,所以我在博客文章中汇总了它们,在这个答案的最后链接。]
首先,快速说明条款。我倾向于使用James Bach对测试的定义为“质疑产品以进行评估”。所有测试都依赖于被测应用程序的/ mental / models。术语“基于模型的测试”通常用于描述可以通过自动化进行探索的模型编程。例如,可以指定应用程序可以处于的状态数,这些状态之间的各种路径,以及关于这些状态之间的转换应该发生什么的某些断言。然后,可以让脚本在状态模型中执行转换的半随机排列,记录可能有趣的结果。
这里有实际的成本:构建一个有用的模型,创建用于探索它的算法,记录系统,允许人们通过有趣的故障进行清除等等。成本是否合理与有很大关系你想回答的问题是什么?一般来说,从“我想知道什么?我怎样才能最好地了解它?“而不是寻找一种有趣的技术。
所有这一切,一些优秀的测试人员已经从基于模型的自动化测试中获得了很多好处。有时,我们对被测应用程序有重要问题,这些问题最好通过自动化,大批量半随机化测试进行探索。 Harry Robinson(基于模型的测试的主要理论家和支持者之一)描述了一个非常丰富多彩的例子,他使用基于模型的测试(使用ruby的Watir库编写)在Google驾驶方向上发现了许多有趣的错误。 1
Robinson在贝尔实验室,微软和谷歌等公司成功使用过MBT,并且有很多有用的论文。[2]
Ben Simo(另一位伟大的测试思想家和作家)在基于模型的测试中也写了不少阅读材料。[3]最后,一些注意事项:要充分利用战略,需要探索其优势和劣势。为此,James Bach就基于模型的测试的极限和挑战进行了精彩的讨论。这篇关于巴赫的博客文章链接到他的长时间谈话(及相关幻灯片)。[4]
我最后会注意到鲍里斯·贝泽尔所谓的杀虫剂悖论:“你用来预防或发现错误的每一种方法都会留下一些微妙的错误,这些方法无效。”脚本测试(无论是由计算机或人)特别容易受到农药悖论的影响,每次执行相同的脚本时,往往会发现越来越少的有用信息。人们有时会转向基于模型的测试,认为它可以解决农药问题。在某些情况下,基于模型的测试可能会发现比一组给定的脚本测试更大的错误集......但是应该记住它仍然受到农药悖论的根本限制。记住它的局限 - 从MBT的问题开始 - 它有可能成为一个非常强大的测试策略。
可以在此处找到上述所有论文的链接:http://testingjeff.wordpress.com/2009/06/03/question-about-model-based-testing/
答案 1 :(得分:1)
我们没有做过任何/多少I& T并且几乎完全使用单元测试,经过一些系统测试。但我们的重点显然是单元测试。我对我们构建/提供的API非常严格,所以假设,如果它自己工作,它将一起工作,并且它没有太大的错误。
我们的模型专注于具有尽可能少的依赖性的单一目的/模块。
重点始终是尽早开始(TDD-kinda),但不幸的是我们并不总是这样做。问题是,你总是要把它卖给管理层,然后很难,因为虽然测试可以提高稳定性(整体质量保证),但是外部人员(技术人员之外)在发生不良事件之前无法真正与之相关。
由于我们使用PHP,因此我们使用PHPUnit进行单元测试。总而言之,我们使用各种不同的工具进行CI。 :)
答案 2 :(得分:1)
Harry Robinson,MBT书籍的作者,并在谷歌和微软等公司工作了很多,这个网站上有一些很棒的信息和白皮书。
答案 3 :(得分:0)
最好的方法是自己尝试基于模型的测试工具。这是了解基于模型的测试是否适合您的上下文的最佳方式。什么样的策略是好的策略。
我建议你使用All4Tec的“MaTeLo”工具(www.all4tec.net)
“MaTeLo是用于黑匣子功能和系统测试的测试用例生成器。符合基于模型的测试方法,MaTeLo使用马尔可夫链进行测试建模。该统计插件允许以系统方式进行产品验证。效率得以实现通过减少所需的人力资源,增加模型重用和增强测试策略的相关性(由于可靠性目标).MaTeLo是独立且用户友好的,提供验证活动从测试脚本传递真正的测试工程,并专注于测试的真正附加价值:测试计划“
您可以询问评估许可证并亲自尝试。
你可以在这里找到一些例子:http://www.all4tec.net/wiki/index.php?title=Tutorials