2007-05-05

黑盒测试 和 白盒测试

以前学过的东西,基本忘记了。。。再从书上抄下来加深点映像。

黑盒测试(功能测试)

已知程序具有的功能,检验每个功能是否能正常使用。
(它只检查程序功能:是否能适当地接收输入的数据并输出正确的信息,并保持外部信息的完整性。)
测试以下几个方面:
  1. 不正确或遗漏的功能。
  2. 界面错误。
  3. 数据结构或数据库的访问错误。
  4. 性能错误。
  5. 初始化和终止条件错误。
有以下几种方法:
  • 等价分类法
      按输入条件把输入的数据划分为若干等价类
  • 边界值分析法(BVA, Boundary Value Analysis)
      经验表明,大多数错误都发生在输入的边界值上。
  • 对比测试法(背靠背测试,back-to-back testing)
      通过不同开发的相同功能冗余系统来对照

白盒测试(结构测试)内部功能测试

已知程序内部工作过程,测试动作是否按规格说明书的规定正常进行。
(按照程序内部的逻辑,检验程序中的每条通路是否能按预定的要求工作。)
原则:
  1. 保证模块中每一独立的路径至少执行一次。
  2. 保证所有判断的每一分支至少执行一次。
  3. 保证每一循环都在边界条件和一般条件下至少各执行一次。
有以下两类方法:
  • 基本路径测试
    • 流图(程序图)<把流程图结构用有向图表示,谓词节点>
  • 控制结构测试
    • 条件测试法(condition test)
    • 数据流测试法(data flow testing)
    • 循环测试

黑盒测试 和 白盒测试 不能相互替代,两者应互为补充!


因为不可能进行穷尽测试,所以不可能发现程序中的所有错误,也就是说,通过测试并不能证明程序的正确性。但是,我们的目的只是通过测试保证程序的可靠性,因此,必须仔细设计测试方案,力争用尽可能少的测试发现尽可能多的错误。

实践表明:用无效的输入数据比用有效的输入数据进行测试,往往能发现更多错误。
//EOF

0 comments: