【刷题】测开-黑盒测试&白盒测试及其测试用例设计方法


黑盒测试

  • 定义:

    • 黑盒测试又称为功能测试,主要检测软件的每一个功能是否能够正常使用。
    • 在测试过程中,将程序看成不能打开的黑盒子,不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。
    • 不需要了解具体代码,对测试工程师要求不高。
  • 测试用例与依据

    • 黑盒测试用例设计方法:基于用户需求的测试、等价类划分方法、边界值分析方法、错误推测方法、因果图方法、判定表驱动分析方法、正交实验法、场景法。
    • 依据:用户需求规格说明书,详细设计说明书。
  • 方法细节

    • 等价类划分:是把程序的输入域划分成若干部分,然后从每个部分中取少数具有代表性数据作为测试用例。
    • 边界值分析法: 是对输入或输出的边界值作为测试用例
    • 错误推测设计方法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。
    • 因果图法:利用图解法分析输入的各种组合关系,写出判定表,从而设计相应的测试用例
    • 判定表驱动:是把作为条件的所有输入的各种组合值以及对应输出值都列出来形成的表格称为判定表
    • 正交试验设计:从大量的实验数据中挑选适量的、有代表性的点来设计测试用例

白盒测试

  • 定义:

    • 白盒测试也称为结构测试,主要用于检测软件编码过程中的错误。
    • 程序员的编程经验、对编程软件的掌握程度、工作状态等因素都会影响到编程质量,导致代码错误。
    • 对测试人员要求高:测试人员需要具备一定的编程经验;白盒测试工程师需要具备广博的知识面
  • 测试用例与依据

    • 白盒测试用例设计有如下方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
    • 依据:代码结构。
  • 方法细节

    • 覆盖:至少执行一次
    • 语句覆盖每条语句至少执行一次。
    • 判定覆盖每个判定的每个分支至少执行一次。
    • 条件覆盖每个判定的每个条件应取到各种可能的值。
    • 判定/条件覆盖同时满足判定覆盖条件覆盖。
    • 条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
    • 路径覆盖使程序中每一条可能的路径至少执行一次。
  • 静态白盒测试

    • 不需要实际运行被测软件,而是直接对软件形式和结构进行分析。
    • 静态白盒测试主要包括:代码检查、静态结构分析、代码质量度量等。
  • ps:

灰盒测试

  • 灰盒测试,是介于白盒测试与黑盒测试之间的一种测试
  • 灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。
  • 灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。

辨析

  • 简单辨析:

    • 黑盒测试:关注程序的功能是否正确,面向实际用户;
    • 白盒测试:关注程序源代码的内部逻辑结构是否正确,面向编程人员;
    • 灰盒测试:介于白盒测试与黑盒测试之间的一种测试。
  • 具体辨析

    • 测试目标和依据:
      • 黑盒面对的是产品设计,白盒针对的是程序功能的实现,灰盒针对兼而有之,既要考虑产品设计要求,又考虑到功能实现的效果。
    • 实现者:
      • 黑盒在意的是客户的角度,白盒测试针对的研发人员。
    • 测试模块颗粒度:
      • 白盒在意的是代码实现层面,而灰盒更加侧重模块之间,颗粒度大于白盒。
    • 版本:
      • 白盒测试一般发生在debug版本,灰盒大多一般在release版本进行。
    • 测试效果:
      • 大量的bug在黑盒测试阶段测试出来,而白盒和灰盒测试的bug数目相对较少。
    • 耗时:
      • 在同等时间内,一般白盒和灰盒的耗时长,bug数量少,一般表现为时间产出比较低,很难大范围普及白盒。
      • 黑盒相对bug时间投入产出比较高。
    • 入门:
      • 黑盒入门较为容易,其次是灰盒,白盒入门门槛教黑盒高很多。

END