zoukankan      html  css  js  c++  java
  • 浅析黑盒测试和白盒测试的定义及区别

    一、软件测试方法:

      白盒测试、黑盒测试、灰盒测试、静态测试、动态测试

    1、白盒测试

      是一种测试用例设计方法,在这里盒子指的是被测试的软件。白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例。

      白盒测试技术一般可被分为:静态分析和动态分析两类技术。

      静态分析主要有:控制流分析技术、数据流分析技术、信息流分析技术。

      动态分析主要有:逻辑覆盖率测试(分支测试、路径测试等),程序插装等。

      白盒测试优点:迫使测试人员去仔细的思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;最优化。

      白盒测试缺点:昂贵;无法检测代码中遗漏的路径和数据敏感性错误;不验证规格的正确性。

    2、黑盒测试 - 又叫功能测试

      这是因为在黑盒测试中主要关注被测软件的功能实现,而不是内部逻辑。

      在黑盒测试中,被测对象的内部结构,运作情况对测试人员是不可见的,测试人员对被测产品的验证主要是根据其规格,验证其与规格的一致性。

      在绝大多数没有用户参与的黑盒测试中,最常见的测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。

    3、灰盒测试

      白盒测试和黑盒测试往往不是决然分开的,一般在白盒测试中交叉使用黑盒测试的方法,在黑盒测试中交叉使用白盒测试的方法。

      灰盒测试就是这类界于白盒测试和黑盒测试之间的测试。

      最常见的灰盒测试是集成测试。

    4、静态测试:是一种不通过执行程序而进行测试的技术。它的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

    5、动态测试:包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。

      单元测试属于白盒测试范畴;集成测试属于灰盒测试范畴;系统测试属于黑盒测试范畴。

    二、黑盒测试及常用设计方法

      它是根据软件需求和规范创建测试场景/案例,按照需求文档里面定义的行为及规范进行输入并且检查输出的测试。

      测试人员在不查看内部代码结构的情况下,评估被测软件的功能。它可以应用于软件测试的各个层次,如单元、集成、系统和验收测试。

      因为不查看源码,所以测试人员只对应用程序的功能部分执行测试,以确保软件的行为符合预期,所以是基于行为的测试

      黑盒测试的常用的一些技术:

    1、等价划分:等价划分也称为等价类划分法。在等价划分法中,软件的输入被划分为期望表现出相似行为的组,因此它们很可能以相同的方式被输入。因此,从每个组中选择一个输入来设计测试用例。

    2、边界值分析:边界值分析(BVA)是在测试有效和无效分区的边界值的基础上进行的。每个等价分区边缘的行为比分区内的行为更加容易出现缺陷,因此边界是测试可能产生缺陷的区域。

    3、决策表:决策表又称因果表。这种测试技术适用于输入之间具有逻辑关系的功能。在决策表技术中,我们处理输入的组合。为了识别决策表的测试用例,我们可以查看它的条件和输出。

    4、状态转换:使用状态转换测试,我们从需要测试的不同系统转换的应用程序中选择测试用例。当应用程序为相同的输入提供不同的输出时,我们可以应用这个方法,这取决于在以前的状态中发生了什么。

    三、白盒测试及常用设计方法

      白盒测试是基于应用程序内部的代码结构。在白盒测试中,系统的内部视角以及编程技巧被用来设计测试用例,这种测试通常在单元级别进行。

      白盒测试的常用的一些技术:

    1、语句覆盖率:它是一种常用的测试覆盖方式,它衡量被测代码中每个语句是否被执行到了。当然前提条件是可执行代码,类似的注释,头文件,空行,等是无法被覆盖的。通常它考虑的是代码覆盖的行数,而不考虑其内部的逻辑处理,所以测试效果不太明显。

    int divide(int a, int b){
        return a / b;
    }
    
    假设我们的测试用例是:TeseCase: a = 10, b = 5
    那么它的语句覆盖率是100%,但是除零的问题却没有表现出来。所以我们引入了其他的测试覆盖率

    2、分支覆盖率:又称判定覆盖率,它是指源码中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。

    3、路径覆盖率:它包含所有可能的控制路径,在路径覆盖技术中取零、一次和多个(理想,最大)项的所有循环路径,基于程序设计的逻辑复杂性度量来准备测试用例。所以可以认为是分支覆盖和语句覆盖的集合。

    四、黑盒与百盒测试的区别

    1、测试方式不同

    (1)黑盒测试:功能测试,是通过测试来检测每个功能是否能正常使用

    (2)白盒测试:俗称:结构测试透明盒测试逻辑驱动测试基于代码的测试

    2、测试目的不同

    (1)黑盒测试:把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构盒特性的情况下,在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息

    (2)白盒测试:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试。在程序不同地方设立监测点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

    3、测试原则不同

    (1)黑盒测试:以用户角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。

    (2)白盒测试:一个模块种的所有独立路径至少被测一次。所有逻辑值均需测试true和false两种情况

    4、总结:

      黑盒测试和白盒测试,这两者之间的区别还是挺大的:

      首先,黑盒测试最主要就是测试软件方面的功能,然后它并不能完全代替了白盒测试,只能说是互补的测试方式,而且在测试的过程中还有可能会发现白盒测试之后其他不是很容易发生类型的错误。

      另外,白盒测试最主要就是测试程序代码逻辑,可是黑盒测试却不同,它针对的就是程序展现出来之后提供用户的功能。

      简单来说,白盒测试最主要测试的就是后台程序,然后黑盒测试最主要测试的就是前台展示的功能,它们都有着属于自身的作用,不能混为一谈。

      概括来说,黑盒测试和白盒测试的侧重点是不一样的。黑盒更关注的是软件实现的功能是否按照需求文档来,而白盒测试更加关注程序内部的逻辑是不是正确。

  • 相关阅读:
    hive_case
    hive_group
    linux-搭建ngnix
    Nfs服务器搭建
    几种常见的启动脚本
    linux 修改本机的端口映射
    oracle-sql计算
    linux 磁盘大小查看
    postMan测试接口的几种方式
    oracle迁移到12c的时列转行 wm_concat 报错解决
  • 原文地址:https://www.cnblogs.com/goloving/p/15172730.html
Copyright © 2011-2022 走看看