穷举测试

最近看了好多文章都提到穷举测试,于是上网搜了一通,还是不太明白穷举测试,有一句似乎明白了许多,"完全归纳法"
 
调试 程序最常用的方案是“穷举”法,因为不需要太多的思考和不太费神,所以受到欢迎,但这种方法效率低,通常不成功。
  
  穷举法至少可以分成三类:
  
  (1)用存储御出(转储)进行调试
  (2)根据常用的建议(贯穿程序分散打印 语句)进行调试
  (3)使用自动化调试 工具进行调试
  
  首先,用转储进行调试是穷举法中效率最低的(通常是十六进制或八进制的原始显示),原因是:
  
  --在源程序中去建立 内存位置与变量之间的对应是困难的
  --对于任何有些复杂的程序,这样的内存御出将产生大量的数据,多数数据是不相关的
  --内存御出是程序的静态图,显示了程序在某个时刻的状态,要去发现 错误,必须研究程序的动态情况(一段时间状态的变化)
  --内存御出很少是产生在错误点上的,所以并不显示错误点的程序状态,程序在御出的时间与错误的时间之间的行为可能会掩盖去发现错误的线索
  --并没有合适的方法学来通过分析内存御出而发现错误
  
  将语句散落到一个失败的程序中来显示变量值不是很好,它比内存御出可能要好,因为它显示了程序的动态性,并允许去检索信息,此信息与源程序关联更容易,但也有很多缺点:
  
  --不是去鼓励对问题进行思考,这是一种漫无目的的方法
  --产生大量的数据去进行分析
  --需要改变程序,此种改变可能会掩盖错误,甚至产生新的错误
  --对于小程序可能较好,但对于大程序其使用成本是很高的,在有些类型的程序中是不切实可行的,如操作系统、过程控制程序
  
  自动化调试工具类似将打印语句插入程序中,但不只是改变程序,而是用编程语言的调试特性或特殊的交互式调试工具来分析程序的动态性,典型的可使用的语言特性是创建语句执行、子程序调用、和/或指定变量的变更的跟踪工具。调试工具一个常用的功能是去设置断点的能力,这些断点将使程序在执行一个特殊语句时或当一个特殊的变量变更时被暂停,然后程序员可以检查程序的当前状态。另外,这种方法也是漫无目的的,并将导致大量的不相关的数据。
  
  这些穷举法的通常问题是忽视了思考的过程,建议穷举法只使用在(1)当所有其它的方法都失败时(2)作为对思考过程的补充,而不是替代。

你可能感兴趣的:(职场,穷举,休闲)