什么时候使用猴子测试

发表于:2009-05-04来源:作者:点击数: 标签:猴子
关键字: 软件测试 、猴子测试 尽管我们的项目组使用笨猴子来寻找操作系统的 bug ,我们也同样找到了不少应用程序的bug。笨猴子在四种情况下对于测试产品周期内的程序非常有用: 在产品周期的早期阶段,笨猴子会找到很多很好的bug,为你节省不少的时间。笨猴

关键字:软件测试、猴子测试

        尽管我们的项目组使用笨猴子来寻找操作系统的bug,我们也同样找到了不少应用程序的bug。笨猴子在四种情况下对于测试产品周期内的程序非常有用:
 
        在产品周期的早期阶段,笨猴子会找到很多很好的bug,为你节省不少的时间。笨猴子不需要知道程序的任何用户交互方面的知识。昨天编译的版本的界面是否改变或者缺少了一半,对它来说都是无所谓的。猴子会测试任何它找到的东西。因此,一旦新版本出来你就可以开始笨猴子测试。在你还在为新的界面改变而调整你的正式的自动化测试包时,笨猴子已经开始探索程序并且很可能已经找到bug了。  
        笨猴子能运行很长时间的测试。除非找到了引起程序崩溃的bug,你想让他们运行多长时间他们就会运行多长时间,把内存和资源使用推到极限。如果你的程序有资源泄漏或者内存问题,笨猴子会帮你找到它。
 
        在产品周期的后半段,当你在想你已经找到了所有的可恶的bug,笨猴子测试能帮助你提高你的信心。运行笨猴子几天的时间而没有引起错误能让你从另外一个角度来判断程序的稳定性。
 
       笨猴子测试能显示传统测试覆盖的漏洞。用覆盖率分析工具运行几个小时的笨猴子测试,然后与那些非猴子测试进行比较。如果猴子测试测试到的一个函数是没有被你的传统测试所覆盖的,那么你需要重新检查你的测试计划用例。如果你有程序的状态表,让猴子读入这个状态表,并核对每个测试到的状态。如果它找到一个新的状态是没有在你的状态表中定义的,那么猴子就找到了一个崭新的未被测试的、可能充满了bug的程序区域 – 就像在β象限仪的中心地带发现了一个蛀洞一样!至少有一个商业工具(Rational的TestFactory)使用笨猴子方法来探索应用程序并创建自动化测试来最大化覆盖率,同时最小化测试时间。
 
        (你也许会对笨猴子能达到的测试覆盖率感到惊讶。在一个微软内部的应用程序,复杂度类似于写字板,我们在不到15分钟的笨猴子测试中就得到了65%的代码函数覆盖率。)
 
笨猴子测试的成本

        相对聪明猴子和大部分传统的自动化和手工测试,笨猴子是非常“便宜的”。一个笨猴子可以测试几乎所有的应用程序。因此你可以把它调整到很多不相关的项目中。 

        如果笨猴子能知道一些关于你的程序的信息,则会得到更佳的效果。如果你能告诉猴子什么地方是程序窗体值得注意和测试的地方,则猴子会少浪费很多时间。但是给予笨猴子太多的知识则会带来更高的成本。我们的目标是花少于30分钟的时间来教会笨猴子学习一个新的程序。

        一旦你给了笨猴子探索程序需要的最基本的信息后,把它安置在一台残旧的、运行速度慢的、被放在实验室或办公室角落的、没人会用来做测试的计算机上。让它开始在调试器模式下运行程序并每天检查一下它的进展情况。如果猴子发现了bug,那么这些是你的项目组报告的bug中最低成本的。 [Page]

        像其他软件测试工具一样,一个好的笨猴子需要一定的代价来开发。但是不像很多测试工具,

        一个普通的笨猴子或“初学者”都能有很多发现bug的机会,只要你以合适的目的,在适当的时间运行它。随着猴子显示出它的价值,你可以添加更多的功能特性,给它更多的技巧。如果你在Windows平台上使用Rational Visual Test,你就可以开始尝试使用笨猴子,使用基于我们微软内部的一个简化的测试猴子。 

        (“Freddie”笨猴子是一个在Thomas R.Arnold的《Visual Test 6 Bible》这本书附带的光盘上的程序。这本书的第14章详细描述了猴子测试,并教你怎样给Freddie添加更多的功能特性。)


请做出明智的选择

        猴子测试绝对不应该只是你唯一的测试方法。猴子不了解你的程序,出于无知它们会漏掉很多bug。对于嵌入式系统,在简单环境下运行的软件,或者是很难实现自动化的项目,猴子都不会有什么大的作用。

        除非你已经有一个自动化的可读入的模型或状态表,否则聪明猴子的开发成本会非常的高。但是对于项目的关键部分,有一个简单的小的状态表,则会比较有效。对于压力测试负载测试也很有用。在正确的地方使用的话,聪明猴子会找到很多有意义的bug。

        能理解操作系统的笨猴子可以在各种程序中使用,可以测试很多基本的东西。给你的猴子一些适当的教育,就能有效地提高猴子发现bug的机会。笨猴子不会找到很多的bug,但是它们找到的bug是程序崩溃,程序不响应等严重类型的,都是你最不想它们出现在产品中的bug。


原文转自:http://www.ltesting.net