测试 十一月 03, 2019

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

文章字数 2.6k 阅读约需 2 mins. 阅读次数 0

前言

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

黑盒测试

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

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

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

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

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

白盒测试

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

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

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

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

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

    1018115-20161008171000176-82131142.png

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

总结

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

概括的来说,黑盒测试和白盒测试的侧重点是不一样的。黑盒更关注的是软件实现的功能是否按照需求文档来,而白盒测试更加关注程序内部的逻辑是不是正确。如果大家有其他的看法或者想法,也请留言区一起讨论。

0%