软件测试笔记(十二)白盒测试和黑盒测试的区别

前言

前面咱们聊过《软件测试笔记(十一)自动化测试和手动测试的选择》,有些朋友和我聊到在测试里面还有相似的一些概念,好比白盒测试和黑盒测试。今天就你们分享下我对这两种测试的理解。编程

黑盒测试

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

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

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

黑盒测试的经常使用的一些技术

  • 等价划分:等价划分也称为等价类划分法。在等价划分法中,软件的输入被划分为指望表现出类似行为的组,所以它们极可能以相同的方式被输入。所以,从每一个组中选择一个输入来设计测试用例。
  • 边界值分析:边界值分析(BVA)是在测试有效和无效分区的边界值的基础上进行的。每一个等价分区边缘的行为比分区内的行为更加容易出现缺陷,所以边界是测试可能产生缺陷的区域。
  • 决策表:决策表又称因果表。这种测试技术适用于输入之间具备逻辑关系的功能。在决策表技术中,咱们处理输入的组合。为了识别决策表的测试用例,咱们能够查看它的条件和输出。
  • 状态转换:使用状态转换测试,咱们从须要测试的不一样系统转换的应用程序中选择测试用例。当应用程序为相同的输入提供不一样的输出时,咱们能够应用这个方法,这取决于在之前的状态中发生了什么。

白盒测试

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

白盒测试的经常使用的一些技术

  • 语句覆盖率:它是一种经常使用的测试覆盖方式,它衡量被测代码中每一个语句是够被执行到了。固然前提条件是可执行代码,相似的注释,头文件,空行,等是没法被覆盖的。一般它考虑的是代码覆盖的行数,而不考虑其内部的逻辑处理,因此测试效果不太明显。

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

  • 分支覆盖率:又称断定覆盖率,它是指源码中每一个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被知足。例以下图就是一个关于分支覆盖的一个设计。

    1018115-20161008171000176-82131142.png

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

总结

黑盒测试 白盒测试
不查看内部代码结构 了解程序内部的代码结构
按照根据软件需求和规范设计 按照程序内部逻辑设计
涉及到单元、集成、系统和验收测试 涉及到单元、集成测试
测试人员不须要程序经验 须要有必定的程序经验
能够是手动或者是自动化测试 能够是手动或者是自动化测试

归纳的来讲,黑盒测试和白盒测试的侧重点是不同的。黑盒更关注的是软件实现的功能是否按照需求文档来,而白盒测试更加关注程序内部的逻辑是否是正确。若是你们有其余的见解或者想法,也请留言区一块儿讨论。code