白盒测试啦啦啦啦

白盒测试

上周谢了关于黑盒测试的内容,这周的实验是白盒测试,那么这周就对白盒测试做一些总结啦~

1.白盒测试概述:白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。又称结构测试,它一般用来测试程序的内部结构(Control Flow , Data Flow)。并判定其结果是否与预期的结果一致。

2.白盒测试的种类:有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。

(1)静态分析测试(Static Analysis Test,Code Inspection)

(2)语句分支覆盖测试(Ctrl  Flow Test)

(3)其他

3.软件人员对软件进行白盒测试时要满足以下4个要求:

(1)保证一个模块中的所有独立路径至少被使用一次。

(2)对所有逻辑值均需测试 true 和 false。

(3)在上下边界及可操作范围内运行所有循环。

(4)检查内部数据结构以确保其有效性。

4.白盒测试的实施步骤:

(1)测试计划阶段:根据需求说明书,制定测试进度。

(2)测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。

(3)测试执行阶段:输入测试用例,得到测试结果。

(4)测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。

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

6.白盒测试的一定局限性:

(1)穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。

(2)穷举路径测试不可能查出程序中因遗漏路径而出错。

(3)穷举路径测试可能发现不了一些与数据相关的错误。

7.白盒测试的测试方法:

有了测试环境 ,重要的是设计测试用例 ,基本路径、判断条件、数据划分、边界值分析是从不同角度设计测试用例的有效方法。

8.白盒测试的测试方法中运用最为广泛的是基本路径测试法。

基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。

在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。

设计测试用例包括以下4个步骤:

   (1)程序的控制流图:描述程序控制流的一种图示方法。

   (2)程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上届。

   (3) 导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。

   (4) 准备测试用例:确保基本路径集中的每一条路径的执行。

六种覆盖方法(从网上借鉴,以便同学们学习和参考)

  首先为了下文的举例描述方便,这里先给出一张程序流程图。(以1995年软件设计师考试的一道考试题目为例,图中红色字母代表程序执行路径)。

  1、语句覆盖

  1)主要特点:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。

  2)用例设计:(如果此时将A路径上的语句1—〉T去掉,那么用例如下)

   X  Y  路径
 1  50  50  OBDE
 2  90  70  OBCE

  3)优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。

  4)缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐 式逻辑分支,是无法测试的。在本例中去掉了语句1—〉T去掉,那么就少了一条测试路径。在if结构中若源代码没有给出else后面的执行分支,那么语句覆 盖测试就不会考虑这种情况。但是我们不能排除这种以外的分支不会被执行,而往往这种错误会经常出现。再如,在Do-While结构中,语句覆盖执行其中某 一个条件分支。那么显然,语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。

  2、判定覆盖--判定覆盖只关心判定表达式的值(真/假),又叫分支覆盖,实际上是<>判定的结果一次为真一次为假!!

  1)主要特点:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。

  2)用例设计:

   X  Y  路径
 1  90  90  OAE
 2  50  50  OBDE
 3  90  70  OBCE

  3)优点:判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

  4)缺点:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

  3、条件覆盖--判定表达式的每个条件的值(真/假)(一个判定中往往包含了若干个条件)

  1)主要特点:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

  2)用例设计:

   X  Y  路径
 1  90  70 OBC
 2 40   OBD

  3)优点:显然条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径。

  4)缺点:要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

 4、判定/条件覆盖

  1)主要特点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。

  2)用例设计:

   X  Y  路径
 1  90  90  OAE
 2  50  50  OBDE
 3  90  70  OBCE
 4  70  90  OBCE

  3)优点:判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。

  4)缺点:判定/条件覆盖准则的缺点是未考虑条件的组合情况。

  5、组合覆盖

  1)主要特点:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。

  2)用例设计:

   X  Y  路径
 1  90  90  OAE
 2  90  70  OBCE
 3  70  90  OBCE
 4  90  30  OBDE
 5  30  90  OBDE
 6  70  70  OBDE
 7  50  50  OBDE

备注:OBDE

   X+Y>=140  X>=90 or Y>=90    
 1  F   30  T   90 or 90,30    
 2  T   70  F   70    
 3  F   50  F   50    

  

3)优点:多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次。并且每个条件都显示能单独影响判定结果。

  4)缺点:线性地增加了测试用例的数量。

  6、路径覆盖

  1)主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。

  2)用例设计:

   X  Y  路径
 1  90  90  OAE
 2  50  50  OBDE
 3  90  70  OBCE
 4  70  90  OBCE

  3)优点:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。

  4)缺点:由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。而在有些情况下,一些执行路径是不可能被执行的,如:
  If  (!A)B++;
  If  (!A)D--;

  这两个语句实际只包括了2条执行路径,即A为真或假时候对B和D的处理,真或假不可能都存在,而路径覆盖测试则认为是包含了真与假的4条执行路径。这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错带来麻烦。

总结

  白盒测试是一种被广泛使用的逻辑测试方法,是由程序内部逻辑驱动的一种单元测试方法。只有对程序 内部十分了解才能进行适度有效的白盒测试。但是贯穿在程序内部的逻辑存在着不确定性和无穷性,尤其对于大规模复杂软件。因此我们不能穷举所有的逻辑路径, 即使穷举也未必会带来好运(穷举不能查出程序逻辑规则错误,不能查出数据相关错误,不能查出程序遗漏的路径)。

  那么正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。任何一个高效的测试用例,都是针对具体测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。

时间: 2024-10-05 00:31:19

白盒测试啦啦啦啦的相关文章

白盒测试方法

白盒测试,英文是White Box Testing.又称结构测试或者逻辑驱动测试. 白盒测试是把测试对象看作一个打开的盒子.利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能. 白盒测试法的覆盖标准有逻辑覆盖.循环覆盖和基本路径测试.其中逻辑覆盖包括语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.条件组合覆盖和路径覆盖. 白盒测试是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条

单元测试和白盒测试相关总结

一.  软件测试方法 1.        软件测试方法包括:白盒测试(White  Box  Testing).黑盒测试(Black  Box Testing).灰盒测试.静态测试.动态测试. 2.        白盒测试:是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例. 白盒测试技术一般可被分为静态分析和动态分析两类技术

入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试

黑盒测试 黑盒测试把产品软件当成是一个黑箱子,只有出口和入口,测试过程中只要知道往黑盒中输入什么东西,知道黑盒会出来什么结果就可以了,不需要了解黑箱子里面是如果做的. 即测试人员不用费神去理解软件里面的具体构成和原理,只要像用户一样看待产品就可以了. 例如银行转账功能,不需要知道转账的具体实现代码是怎样工作的,只需要把自己想象成各种类型的用户,模拟多种转账情况看系统是否能正常转账即可. 但是仅仅像用户一样去测试又是不够的.如果只做黑盒测试,必然是存在一定的风险的. 例如某个安全性较高的软件系统,

对白盒测试的一些理解

白盒测试,是一种透明化的测试,程序的内部结构是可视的,是对用例的测试. 白盒测试测试方式有语句覆盖,判断覆盖,条件覆盖,还有判定条件覆盖,条件组合覆盖 白盒测试能发现一系列问题,如逻辑问题,边界条件,变量未初始化,内存越界等一系列问题 如果产品更多的具备软件平台特性,白盒测试应占总测试的80%以上,而如果产品具备复杂的业务操作,有大量GUI界面,黑盒测试的份量应该更重些: 白盒测试和黑盒测试的成分因视情况而定

黑盒测试白盒测试

           白盒测试:是通过程序的源代码进行测试而不使用用户界面.这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正            黑盒测试:又被称为功能测试.数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试, 而并没有通过检查程序的源代码或者很清楚地了解 该软件的源代码程序具体是怎样设计的.测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作            黑盒测试(与白盒测试区别

白盒测试一些方法

白盒测试的基本方法 白盒测试足针对软件内部结构的测试,土要是川覆盖的方式对程序代码进行测.戚.下面就白盒测试中的六种典型覆盖方法进行探讨. 1)语句覆盖 作为最基本的逻辑覆盖方法,语句覆盖的含义是:选择足够多的测试数据,使得被测程序中的每个语句至少执行一次.通过语句覆盖,可以直观地从源代码得到测试用例,无须细分每条判定表达式:然而,语句覆盖对程序的逻辑覆盖很少,对于一个包含多个条件的判定表达式,它只关心判定表达式的值,并没有分别测试判定表达式中每个条件取不同值的情况.所以语句覆盖无法全面反映多分

Assignment6:白盒测试方法

常用的软件测试方法有两大类:静态测试方法和动态测试方法. 其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试:而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程.在动态分析技术中,最重要的技术是路径和分支测试. 六种白盒子测试方法:(强度由低到高)语句覆盖.判定覆盖.条件覆盖.判定条件覆盖.条件组合覆盖.路径覆盖. 1)所谓语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执

软件测试——白盒测试

1.白盒测试的概述 由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比.由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行.由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试. 白盒测试又称结构测试,透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的. 1) 白盒的测试用例需要做到: ·保证一个模块中的所有独立路径至少被使用一次 ·对所有逻辑

Charpter6 关于白盒测试

一.什么是白盒测试 黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求. 白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查. 二.白盒测试的目的 保证一个模块中的所有独立路径至少被执行一次: 对所有的逻辑值均需要测试真.假两个分支: 在上下边界及可操作范围内运行所有循环: 检查内部数据结构以确保其有效性. 三.关于白盒测试覆盖 首先,白盒测试使用穷举测试是不可行的.白盒测试考虑的是测试用例对于程序内部逻辑的

第二部分:白盒测试之概述

白盒测试定义: 白盒测试又称结构测试,透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的."白盒"法是穷举路径测试.在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据. 白盒测试分类: 白盒测试的方法总体上来说分为两大类,即静态方法与动态方法.静态方法指的是软件的测试并不经过实际的执行,测试人员采用人工模拟的方式对软件进行测试.而对于动态方法,