^_^如果我不改变,我就会被淘汰^_^

搞怪測試 (Monkey Test)

上一篇 / 下一篇  2010-10-11 14:43:30 / 个人分类:转帖

搞怪测试 (MonkeyTest) 一般见於软体测试,测试者可以进行各种稀奇古怪的操作模式,用以测试软体的稳定度。

     也有加以引用到其他产品之测试者,藉以测试产品设计之完整性,了解产品在各种使用模式的可能反应。经由搞怪测试所找出之失败模式,吾人可以以进行分析,是否要变更设计,也有讨论的空间。用白话来说,就是百般刁难,乱按一通,系统也不能当机挂点资料受损,这样才称得上经打耐操的好程式。



      Brian Marick在《软件测试的艺术》中说:复杂的测试会比简单的测试找到更多的bug。但是大部分的自动化测试都是简单的。我们期待一个输入后得到一个主要的输出,然后程序回到一个已知的基本状态,然后执行另外一个简单的测试。如果测试是深思熟虑的,则会找到好的bug。但是仍然是简单的测试。当我们回到程序的基本状态,则丢弃了前面测试的“历史”。而真正的用户不会这样操作,他们把一系列简单的动作串起来,形成一个复杂的环境。

    我们的简单测试不会模拟那些用户行为。因此如果一个简单的动作引起了另外一个动作的失败,我们的简单测试不会找到那个bug…但是我们的用户会找到它。但是使用聪明猴子,可以让我们的简单自动化测试变成复杂的用户场景。在测试中去掉“回到程序已知的基本状态”。然后让猴子决定运行哪个测试,用怎样的顺序执行。猴子会创建非常复杂的测试,并且持续测试你想要的时间长度。并且每次运行它都会创建不同系列的复杂测试。

    这种简单变复杂的测试的另外一个好处是我们可以确保程序在运行过程中正确地处理内存和资源分配。运行相同系列的测试,即使是复杂的测试,但是以相同的顺序和路径,即使一遍又一遍地运行也很少机会能发现内存和资源使用的bug。

     相反,我们需要使用复杂序列的、以前未使用过的测试。在这方面猴子比人更有效。


      我们将考虑两种类型的“猴子”:聪明猴子和笨猴子。聪明猴子拥有一定的知识,知道如何访问被测试产品的用户界面。它们在基本的功能层次上知道什么是可以做的,更重要的是,它们知道当进行这些操作时应该会出现什么情况。例如,他们可能知道选择“文件”菜单的“新建”项来创建一个新的文档,它们知道新建的文档会在新的窗口展示出来,窗口可以通过类名和文本来定位。如果没有出现新的窗口,或者窗口的标题或类名不对,“猴子”能识别出问题并报告一个BUG。

聪明猴子通常从一个状态表或者模型获取到关于产品的知识。通过随机地遍历这个状态模型,它们选择对于当前状态有效的选项,从一个状态转移到另外一个状态,然后验证到达了下一个期待的状态。如果模型包括错误处理状态的话,你还可以添加非法的输入到“猴子”的指令表


TAG:

 

评分:0

我来说两句

Open Toolbar