软件测试——白盒测试

1.白盒测试的概述

由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。

白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。

1 白盒的测试用例需要做到:

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

·对所有逻辑值均需测试 true 和 false

·在上下边界及可操作范围内运行所有循环

·检查内部数据结构以确保其有效性

2)白盒测试的目的:

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

3)白盒测试的特点:

依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。

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

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

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

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

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

5)白盒测试的方法:总体上分为静态方法和动态方法两大类。

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

动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后 , 对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。

6)白盒测试的优缺点

优点

·迫使测试人员去仔细思考软件的实现

·可以检测代码中的每条分支和路径

·揭示隐藏在代码中的错误

·对代码的测试比较彻底

·最优化

 缺点

·昂贵

·无法检测代码中遗漏的路径和数据敏感性错误

·不验证规格的正确性

2.本文介绍六种白盒子测试方法:(强度由低到高)语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

1)所谓语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖率的公式可以表示如下:

语句覆盖率=被评价到的语句数量/可执行的语句总数 x 100%

2)判定覆盖:使设计的测试用例保证程序中每个判断的每个取值分支(t or f)至少经历一次

[优点]:判定覆盖具有比语句覆盖更强的测试能力,而且具有和语句覆盖一样的简单性,无需细分每个判定就可以得到测试用例。

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

  例如:

  int a,b;

  if(a || b)

  执行语句1

  else

  执行语句2

要达到这段程序的判断覆盖,我们采用测试用例:1)a = true , b = true ;2)a = flase, b = flase

3)条件覆盖:条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支

条件覆盖要检查每个符合谓词的子表达式值为真和假两种情况,要独立衡量每个子表达式的结果,以确保每个子表达式的值为真和假两种情况都被测试到。

4) 判定条件覆盖:判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。

5) 条件组合覆盖:在白盒测试法中,选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。

6)路径覆盖:是每条可能执行到的路径至少执行一次;

说明:其中语句覆盖是一种最弱的覆盖,判定覆盖和条件覆盖比语句覆盖强,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖和语句覆盖,条件组合覆盖是除路径覆盖外最强的,路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。

举例:

if A and B then Action1

if C or D then Action2

1)语句覆盖最弱,只需要让程序中的语句都执行一遍即可 。上例中只需设计测试用例使得A=true B=true C=true 即可。

2)分支覆盖又称判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假均曾被满足。上例需要设计测试用例使其分别满足下列条件即可(1)A=true,B=true,C=true,D=false(2)A=true,B=false,C=false,D=false。

3)条件覆盖:要使得每个判断中的每个条件的可能取值至少满足一次。上例中第一个判断应考虑到A=true,A=false,B=true,B=false第二个判断应考虑到C=true,C=false,D=true,D=false,所以上例中可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false。

4) 路径覆盖:要求覆盖程序中所有可能的路径。所以可以设计测试用例满足下列条件(1)A=true,B=true,C=true,D=true(2)A=false,B=false,C=false,D=false(3)A=true,B=true,C=false,D=false(4)A=false,B=false,C=true,D=true。

时间: 2024-11-03 21:51:03

软件测试——白盒测试的相关文章

软件测试———白盒测试、黑盒测试与灰盒测试

软件测试是一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.其的目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求.预先定义的不一致性,即为了在软件中发现尽可能多的缺陷和不足的地方. 对于软件测试分类,最被大家熟悉的是根据软件结构与算法的角度来分类的:白盒测试.黑盒测试与灰盒测试. 白盒测试又被称结构测试.透明盒测试.逻辑驱动测试或基于代码的测试,是对软件的过程性细节做细致的检查.对于白盒测试,测试员必须要全面了解程序的内部逻辑结构.对所有逻辑路径进行测试."白盒"

软件测试·白盒测试

在软件测试中,大家对于白盒测试应该都很熟悉,白盒测试是与黑盒测试完全相反的一种测试,正如它们的名字一样相反.黑盒测试是基于输入和输出的测试,不用考虑其内部的执行情况,而白盒测试则是依赖于程序内部构成来进行的一种测试. 白盒测试又称结构测试.逻辑驱动测试或基于程序的测试.白盒测试一般被用来分析程序的内部结构.白盒测试的测试者可以看到被测程序的内部,因此,白盒测试要求对被测的程序做到一定程度的覆盖,并且要求软件中的各类成分都要被测试,而白盒测试的优良标准也会以程序的某种成分是否被测试来评判,这也被称

软件测试基本方法(二)之白盒测试

白盒测试 概念:按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作. 分类:白盒测试是基于覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径,所以其具体方法有逻辑覆盖.循环覆盖.基本路径覆盖.逻辑覆盖又可进一步分为语句覆盖.判定(分支)覆盖.条件覆盖.判定-条件覆盖.条件组合覆盖等.白盒测试主要用于单元测试(我们需要了解程序源码和结构,而且基于输入输出,适合单元模块).下面重点介绍常用的几种白盒测试方法. 语句覆

【软件测试】白盒测试

本篇日志主要分两个部分,第一部分是对课件中基础知识的整理.然而,虽然课件对白盒测试的覆盖准则讲解得十分细致,但对如何进行实际操作却无涉及,经过前一阶段的探索,我大致掌握了一些方法,希望可以与大家一起讨论,所以第二部分为对应用商店应用中的Visual C#代码进行白盒测试方法初探. [基础知识整理] 一.定义 白盒测试又称结构测试,它一般用来测试程序的内部结构(Control Flow , Data Flow).并判定其结果是否与预期的结果一致. 二.种类 静态分析测试(Static Analys

软件测试第六周——白盒测试

概述: 软件白盒测试,也称为结构化测试.基于代码的测试,是一种 测试用例设计方法,它从程序的控制结构导出测试用例.  用软件白盒测试产生的 测试用例能够:  1)保证一个模块中的所有独立 路径至少被使用一次;  2)对所有逻辑值均需测试true和false;  3)在上下边界及可操作范围内运行所有循环;  4)检查内部 数据结构以确保其有效性.  这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部 逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的

软件测试学习随笔(6) 白盒测试

所谓白盒测试,就相当于对一个透明的盒子进行测试,以编程语言的角度来测试程序,测试者在了解测试程序的内部结构.算法等的情况下,输入数据验证数据流在程序中的流动路径,并确定适当的输出,类似测试电路中的节点.也就是说,白盒测试是程序设计者的角度对程序进行的测试. 软件人员使用白盒测试方法,主要想对程序模块进行如下的检查: 对程序模块的所有独立的执行路径 所有独立的执行路径至少测试一 次:  对所有的逻辑判定所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次都至少测试一次:  在循环的边界和运行

软件测试:白盒测试

一.定义 白盒测试又称结构测试.透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的. "白盒"法全面了解程序内部逻辑结构.对所有逻辑路径进行测试."白盒"法是穷举路径测试.在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据. 二.方法 白盒测试法的覆盖标准有逻辑覆盖.循环覆盖和基本路径测试.其中逻辑覆盖包括语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.条件组合覆盖和

软件测试第六周学习笔记之“Win8 APP应用程序的白盒测试”

这周的学习笔记我想写点自己关于实验中碰到的问题和感想. 因为这次做的是白盒测试,所以我决定去测试一下上回测试的app的功能函数. 这次我用的是单元测试项目来做的白盒测试: 创建单元测试的步骤: 1.点击 “文件”->“添加”->“新建项目” 2.选择 windows应用程序-> 单元测试项目 3.在解决方案资源管理器中为单元测试项目下的引用上右击选择添加引用 4.选择解决方案下的项目中的用来测试的win8应用 接下来是单元测试的代码部分的编写了: 我要测试的是该项目中的一个字符串转化编码

软件测试-实验 实验三白盒测试

实验目的 (1)       学习白盒测试方法 (2)       掌握语句覆盖.条件覆盖.分支覆盖等逻辑覆盖方法 (3)       掌握Java代码分析工具的使用 实验内容 1. 计算整数X和整数Y的最大公约数.(不允许采用课堂上所用的方式实现) l  请用类和方法实现(定义一个类,在类中定义一个求最大公约数的方法),命名时请按照规范命名. l  在main方法中获取用户输入的两个整数,调用之前写的方法,输出它们的最大公约数. l  利用FindBugs查找程序中是否存在bug. 代码: i