文档库 最新最全的文档下载
当前位置:文档库 › 白盒测试技术中的几种逻辑覆盖

白盒测试技术中的几种逻辑覆盖

白盒测试技术中的几种逻辑覆盖
白盒测试技术中的几种逻辑覆盖

白盒测试技术中的几种逻辑覆盖

白盒测试技术中的逻辑覆盖

一个或者多个条件组成一个判定,一个程序中可以有多个判定。

首要的是建立一个二维的真值表,各列为判定和条件,各行为每组值的T或者F。

1、语句覆盖

为了暴露程序中的错误,至少每个语句应该执行一次。

这也是最弱的逻辑覆盖标准咯。

2、判定覆盖

每个判定的每种可能结果都要执行一次。

建立判定表以后,要保证每种判定的结果中都包含了T和F,才满足判定覆盖。

3、条件覆盖

不但每个语句需要执行一次,而且判定表达式中的每个条件都要取到可能的结果。

建立判定表以后,要保证每种条件的结果中都包含了T和F,才满足条件覆盖。

4、判定/条件覆盖

使得每个判定以及每个判定中的每个条件都取到可能的结果。

建立判定表以后,要保证每个判定结果包含T和F,而且每种条件的结果包含T和F。

也就是综合了上面的条件覆盖和判定覆盖。

5、条件组合覆盖

使得每个判定中的条件的各种组合至少出现一次。

也就是说,先把程序中的条件列出来,排列组合,写出所有的可能性,看有没有那组值同时满足这些排列组合。

6、路径覆盖

每条可能的路径都至少执行一次。

就是看源程序中的判断,都有哪些组合,比如T ,FF,FT,等等,看看哪个满足包含了所有的组合。

因为这些不同的组合就代表了程序中执行的不同路径啊。

如何挑选白盒测试工具

白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。

对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。目前测试工具主要支持的开发语言包括:标准C、C++、Visual C ++、Java、Visual J++等。

代码的覆盖深度:从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。

·语句覆盖为了暴露程序中的错误,程序中的每条语句至少应该执行一次。因此语句覆盖(Statement Coverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。语句覆盖是很弱的逻辑覆盖。

·判定覆盖比语句覆盖稍强的覆盖标准是判定覆盖(Decision Coverage)。判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。

·条件覆盖在设计程序中,一个判定语句是由多个条件组合而成的复合判定。为了更彻底地实现逻辑覆盖,可以采用条件覆盖(Condition Coverage)的标准。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。

·多条件覆盖多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。

·修正条件判定覆盖修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的“航空运输和装备系统软件认证标准”,目前在国外的国防、航空航天领域应用广泛。这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。

不同的测试工具对于代码的覆盖能力也是不同的,通常能够支持修正条件判定覆盖的测试工具价格是极其昂贵的。

嵌入式软件的测试:对于嵌入式软件的测试,我们还需要一方面进一步考虑测试工具对于嵌入式操作系统的支持能力,例如DOS、Vxworks、Neculeus、Linux和Windows CE等;另一方面还需要考虑测试工具对于硬件平台的支持能力,包括是否支持所有64/32/16位CPU 和MCU,是否可以支持PCI/VME/CPCI 总线。

测试的可视化:白盒测试是工作量巨大并且枯燥的工作,可视化的设计对于测试来说是十分重要的。在选购白盒测试工具时,应当考虑该款测试工具的可视化是否良好,例如:测试过程中是否可以显示覆盖率的函数分布图和上升趋势图,是否使用不同的颜色区分已执行和未执行的代码段显示分配内存情况实时图表等,这些对于测试效率和测试质量的提高是具有很大的作用的。

软件测试技术复习题(含答案)

注释:黄色表示重复或相似 一、选择题 1.软件测试的目的是(B ) A.避免软件开发中出现的错误 B.发现软件中出现的错误 C.容忍软件中出现的错误 D.修改软件中出现的错误 2.对于逻辑表达式((a&b)| |c),需要(C )个测试用例才能完成条件组 合覆盖。 A.2 B.3 C.4 D.5 3.逻辑覆盖法不包括(C )。 A.分支覆盖 B.语句覆盖 C.需求覆盖 D.修正条件判定覆盖 4.如果某测试用例集实现了某软件的路径覆盖,那么它一定同事实现了 该软件的(A )。 A.判定覆盖 B.条件覆盖 C.判定/条件覆盖 D.组合覆盖 5.使用白盒测试方法时,确定测试数据的依据是指定覆盖标准和(B )。

A.程序的注释 B.程序的内部逻辑 C.用户使用说明书 D.程序的需求说明 6.划分软件测试属于白盒测试还是黑盒测试的依据是(C )。 A.是否执行程序代码 B.是否能看到软件设计文档 C.是否能看到被测源程序 D.运行结果是否确定 7.单元测试中用来模拟被测模块调用者的模块是(C ) A.父模块 B.子模块 C.驱动模块 D.桩模块 8.不属于单元测试内容的是(A ) A.模块接口测试 B.局部数据结构测试 C.路经测试 D.用户界面测试 9.客户端交易处理性能指标是一类重要的负载压力测试指标,以下不属 于客户端交易处理性能指标的是(C ) A.负载测试 B.压力测试 C.疲劳强度测试 D.大数据量测试

10.以下不属于易用性而的是(D ) A.功能易用性测试 B.用户界面测试 C.辅助功能测试 D.可靠性测试 11.软件测试的目的是(F ) E.避免软件开发中出现的错误 F.发现软件中出现的错误 G.容忍软件中出现的错误 H.修改软件中出现的错误 12.软件的测试对象包括(D )。 A.软件代码 B.文档

白盒测试方法习题及答案

[试题分类]:[04]白盒测试方法/[0400][综合]白盒测试方法 1. 下面不属于白盒测试能保证的是。 A. 模块中所有独立途径至少测试一次 B. 测试所以逻辑决策真和假两个方面 C. 在所有循环的边界内部和边界上执行循环体 D. 不正确或漏掉的功能 答案:D 分数:1 题型:单选题 难度:1 2. 因果图方法是根据()之间的因果关系来设计测试用例的。 A. 输入与输岀 B. 设计与实现 C. 条件与结果 D. 主程序与子程序 答案:A 分数:1 题型:单选题 难度:1 3. 使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准 A. 程序的内部逻辑 B. 程序的复杂程度 C. 使用说明书 D. 程序的功能 答案:A 分数:1 题型:单选题 难度:1 4. 软件测试中常用的静态分析方法是()和接口分析。 A. 引用分析 B. 算法分析 C. 可靠性分析 D. 效率分析 答案:A 分数:1 题型:单选题 难度:1 5. 软件测试中常用的静态分析方法是引用分析和()。 A. 引用分析 B. 算法分析 C. 可靠性分析 D. 接口分析 答案:D 分数:1 题型:单选题 难度:1 6. 白盒方法中常用的方法是()方法。 A. 路径测试 B. 等价类 C. 因果图 D. 归纳测试

答案:A 分数:1 题型:单选题 难度:1 7. 在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看作是() A. 路径的集合 B. 循环的集合 C. 目标的集合 D. 地址的集合 答案:A 分数:1 题型:单选题 难度:1 8. 软件测试白箱测试是对软件的结构进行测试,下述: I.边缘值分析n.语句测试 皿.分值测试IV .路经测试 )是其应包括的内容。 A. I B. n和皿 C.皿和V D. n .皿和V 答案:D 分数:1 题型:单选题 难度:1 9. 在进行单元测试时,常用的方法是()。 A. 采用白盒测试,辅之以黑盒测试 B. 采用黑盒测试,辅之以白盒测试 C. 只适用白盒测试 D. 只适用黑盒测试 答案:A 分数:1 题型:单选题 难度:1 10. 白盒测试法一般使用于()测试。 A. 单元 B. 系统 C. 集成 D. 确认 答案:A 分数:1 题型:单选题 难度:1 [试题分类]:[04] 白盒测试方法/[0401]逻辑覆盖法 11. 关于条件测试错误的是() A. 可以检查程序中所包含的逻辑条件 B. 条件中包含的错误有布尔算子错误 C. 条件中包含的错误有布尔变量错误 D. 条件中包含的错误有接口错误 答案:D 分数:1 题型:单选题 难度:1

白盒测试方法

一、白盒测试概念 1、定义 白盒测试又称结构测试、透明盒测试、逻辑驱动测试、基于代码的测试。盒子指被测试的软件,白盒指盒子是可视的。白盒测试是一种测试用例设计方法,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例。白盒测试主要针对被测程序的源代码,主要用于软件验证,不考虑软件的功能实现,只验证内部动作是否按照设计说明书的规定进行。 2、目的 我们一方面注重软件功能需求的实现,另一方面还要注重程序逻辑细节,主要是因为软件自身的缺陷,具体如下: 1)逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。日常处理往往被很好地了解,而“特殊情况”的处理则难于发现。 2)我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的基础上被执行。程序的逻辑流有时是违反直觉的,只有路径测试才能发现这些错误。 3)代码中的笔误是随机且无法杜绝的。笔误出现在主流上和不明显的逻辑路径上的机率是一样的。很多被语法检查机制发现,但是其他的会在测试开始时才会被发现。 4)功能测试本身的局限性。如果程序实现了没有被描述的行为,功能测试是无法发现的,例如病毒,而白盒测试很容易发现它。 3、目标 采用白盒测试必须遵循以下几条原则,才能达到测试的目标: 1)保证一个模块中的所有独立路径至少被测试一次。 2)所有逻辑值均需测试真(true) 和假(false)两种情况。 3)检查程序的内部数据结构,保证其结构的有效性。 4)在上下边界及可操作范围内运行所有循环。 4、黑白灰区别 黑盒测试技术:也称功能测试或数据驱动测试,只关注规格说明中的功能,测试者在程序接口对软件界面和软件功能进行测试,它只检查实现了的功能是否按照“用户需求说明书”的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。主要用于软件确认测试,结合兼容、性能测试等方面,但黑盒测试不能保证已经实现的各个部分都被测试到。黑盒测试适用于各阶段测试。 白盒测试技术:只关注软件产品的测试,深入到代码一级的测试,它是知道产品内部结构,通过测试来检测产品内部动作是否按照“设计规格说明书”的规定正常进行,按照程

白盒测试方法习题测验及答案

[试题分类]: [04]白盒测试方法/[0400][综合]白盒测试方法 1. 下面不属于白盒测试能保证的是。 A.模块中所有独立途径至少测试一次 B.测试所以逻辑决策真和假两个方面 C.在所有循环的边界内部和边界上执行循环体 D.不正确或漏掉的功能 答案:D 分数:1 题型:单选题 难度:1 2.因果图方法是根据()之间的因果关系来设计测试用例的。 A.输入与输出 B.设计与实现 C.条件与结果 D.主程序与子程序 答案:A 分数:1 题型:单选题 难度:1 3.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。 A.程序的内部逻辑 B.程序的复杂程度 C.使用说明书 D.程序的功能 答案:A 分数:1 题型:单选题 难度:1 4.软件测试中常用的静态分析方法是()和接口分析。 A.引用分析 B.算法分析 C.可靠性分析 D.效率分析 答案:A 分数:1 题型:单选题 难度:1 5.软件测试中常用的静态分析方法是引用分析和()。 A.引用分析 B.算法分析 C.可靠性分析 D.接口分析 答案:D 分数:1 题型:单选题 难度:1 6.白盒方法中常用的方法是()方法。 A.路径测试 B.等价类 C.因果图 D.归纳测试 答案:A 分数:1 题型:单选题

7.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看作是() A.路径的集合 B.循环的集合 C.目标的集合 D.地址的集合 答案:A 分数:1 题型:单选题 难度:1 8.软件测试白箱测试是对软件的结构进行测试,下述: Ⅰ.边缘值分析Ⅱ.语句测试 Ⅲ.分值测试Ⅳ.路经测试 ()是其应包括的内容。 A.Ⅰ B.Ⅱ和Ⅲ C.Ⅲ和Ⅳ D.Ⅱ.Ⅲ和Ⅳ 答案:D 分数:1 题型:单选题 难度:1 9.在进行单元测试时,常用的方法是()。 A.采用白盒测试,辅之以黑盒测试 B.采用黑盒测试,辅之以白盒测试 C.只适用白盒测试 D.只适用黑盒测试 答案:A 分数:1 题型:单选题 难度:1 10.白盒测试法一般使用于()测试。 A.单元 B.系统 C.集成 D.确认 答案:A 分数:1 题型:单选题 难度:1 [试题分类]: [04]白盒测试方法/[0401]逻辑覆盖法 11.关于条件测试错误的是() A.可以检查程序中所包含的逻辑条件 B.条件中包含的错误有布尔算子错误 C.条件中包含的错误有布尔变量错误 D.条件中包含的错误有接口错误 答案:D 分数:1 题型:单选题 难度:1 12.关于条件中包含的错误类型说法错误的是() A.关系算子错误 B.算术表达式错误 C.条件中包含的错误有布尔变量错误 D.条件中包含的错误有接口错误

逻辑覆盖测试 软件测试

一、实验目的 通过本次实验使学生熟悉白盒测试的逻辑覆盖测试方法。 二、实验环境 硬件环境:微型计算机。 软件环境:Windows 操作系统,Microsoft Visual Studio 2005等。 三、实验内容 使用逻辑覆盖测试方法测试以下程序段 int DoWork (int x,int y,int z,int k,int j) { 1if ( (x>3)&&(z<10) ) 2{ 4 k=x*y-1; 5 j=sqrt(k); 6 } 7 if((x==4)||(y>5)) 8 j=x*y+10; 9 j=j%3; 10 printf(“x=%d,y=%d,z=%d,k=%d,j=%d\n”,x,y,z,k,j); 11 return j; } 四、实验步骤 1、画出函数DoWork的程序流程图,分析该段代码包含的基本逻辑判定条件和执行路 径。

2、根据白盒测试技术设计测试用例,主要考虑逻辑覆盖测试(语句覆盖、判定覆盖、 条件覆盖、判定/条件覆盖、条件组合覆盖),计算测试用例的语句覆盖率等测试管理指标。 备注:01语句覆盖 01-02条件覆盖 01-02判定覆盖 01-02判定/条件覆盖 01-04条件组合覆盖 3、编写测试程序,运行测试程序并记录测试结果。(给出运行结果界面) 程序代码: #include #include #include // 定义结构来获取测试用例的输入 struct strInput{ int x; int y; int z; int k; int j; }strIn; int DoWork (int x,int y,int z,int k,int j) { if ( (x>3)&&(z<10) ){ k=x*y-1; j=sqrt(k); } if((x==4)||(y>5)) j=x*y+10; j=j%3; printf("x=%d,y=%d,z=%d,k=%d,j=%d\n",x,y,z,k,j); return j; }

白盒测试技术中的几种逻辑覆盖

白盒测试技术中的几种逻辑覆盖 白盒测试技术中的逻辑覆盖 一个或者多个条件组成一个判定,一个程序中可以有多个判定。 首要的是建立一个二维的真值表,各列为判定和条件,各行为每组值的T或者F。 1、语句覆盖 为了暴露程序中的错误,至少每个语句应该执行一次。 这也是最弱的逻辑覆盖标准咯。 2、判定覆盖 每个判定的每种可能结果都要执行一次。 建立判定表以后,要保证每种判定的结果中都包含了T和F,才满足判定覆盖。 3、条件覆盖 不但每个语句需要执行一次,而且判定表达式中的每个条件都要取到可能的结果。 建立判定表以后,要保证每种条件的结果中都包含了T和F,才满足条件覆盖。 4、判定/条件覆盖 使得每个判定以及每个判定中的每个条件都取到可能的结果。 建立判定表以后,要保证每个判定结果包含T和F,而且每种条件的结果包含T和F。 也就是综合了上面的条件覆盖和判定覆盖。 5、条件组合覆盖 使得每个判定中的条件的各种组合至少出现一次。 也就是说,先把程序中的条件列出来,排列组合,写出所有的可能性,看有没有那组值同时满足这些排列组合。 6、路径覆盖 每条可能的路径都至少执行一次。

就是看源程序中的判断,都有哪些组合,比如T ,FF,FT,等等,看看哪个满足包含了所有的组合。 因为这些不同的组合就代表了程序中执行的不同路径啊。 如何挑选白盒测试工具 白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。 对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。目前测试工具主要支持的开发语言包括:标准C、C++、Visual C ++、Java、Visual J++等。 代码的覆盖深度:从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。 ·语句覆盖为了暴露程序中的错误,程序中的每条语句至少应该执行一次。因此语句覆盖(Statement Coverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。语句覆盖是很弱的逻辑覆盖。 ·判定覆盖比语句覆盖稍强的覆盖标准是判定覆盖(Decision Coverage)。判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。 ·条件覆盖在设计程序中,一个判定语句是由多个条件组合而成的复合判定。为了更彻底地实现逻辑覆盖,可以采用条件覆盖(Condition Coverage)的标准。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。 ·多条件覆盖多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。 ·修正条件判定覆盖修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的“航空运输和装备系统软件认证标准”,目前在国外的国防、航空航天领域应用广泛。这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。 不同的测试工具对于代码的覆盖能力也是不同的,通常能够支持修正条件判定覆盖的测试工具价格是极其昂贵的。

白盒测试的六种覆盖准则

白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视。白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向。本文介绍六种白盒子测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。 白盒测试的概述 由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。 白盒的测试用例需要做到: ·保证一个模块中的所有独立路径至少被使用一次 ·对所有逻辑值均需测试true 和false ·在上下边界及可操作范围内运行所有循环 ·检查内部数据结构以确保其有效性 白盒测试的目的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。 白盒测试的特点:依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。 白盒测试的实施步骤: 1.测试计划阶段:根据需求说明书,制定测试进度。 2.测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。 3.测试执行阶段:输入测试用例,得到测试结果。 4.测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。 白盒测试的方法:总体上分为静态方法和动态方法两大类。

KC06110000002_习题试题库_单元2 白盒测试

一、选择题 所属项目项目二题型单选题出题人 题目编号分值 2 难易程度中知识点关联白盒测试 题目内容()是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。 A.判定-条件覆盖B.组合覆盖 C.判定覆盖D.条件覆盖 标准答案A 所属项目项目二题型单选题出题人 题目编号分值 2 难易程度难知识点关联逻辑覆盖 题目内容 如下图所示的N-S图,至少需要()个测试用例完成逻辑覆盖。 A.12 B.48 C.27 D.18 标准答案B 所属项目项目二题型单选题出题人 题目编号分值 2 难易程度易知识点关联白盒测试 题目内容不属于逻辑覆盖方法的是()。 A.组合覆盖B.判定覆盖

C.条件覆盖D.接口覆盖 标准答案D 所属项目项目二题型单选题出题人 题目编号分值 2 难易程度中知识点关联白盒测试 题目内容某次程序调试没有出现预计的结果,下列()不可能是导致出错的原因。A.变量没有初始化 B.编写的语句书写格式不规范 C.循环控制出错 D.代码输入有误 标准答案B 所属项目项目二题型单选题出题人 题目编号分值 2 难易程度难知识点关联循环测试 题目内容下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度。 int GetMax(int n, int datalist[ ]) { int k=0; for ( int j=1; j datalist[k] ) k=j; return k; } 请问该程序段的McCabe环路复杂性为多少?() A. 2 B. 3 C. 4 D. 5 标准答案A 所属项目项目二题型单选题出题人 题目编号分值 2 难易程度中知识点关联语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、路径覆盖 题目内容在用白盒测试中的逻辑覆盖法设计测试用例时,有语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖等,在下列覆盖中,()是最强的覆盖准则。 A. 语句覆盖 B. 条件覆盖 C. 判定-条件覆盖 D. 路径覆盖

白盒测试和黑盒测试

白盒测试 白盒测试,又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子部的东西以及里面是如何运作的。"白盒"法全面了解程序部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。 采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。 中文名:白盒测试 外文名:white-box testing 别称:结构测试、透明盒测试 白盒测试测试方法 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化: 1.语句覆盖每条语句至少执行一次。 2.判定覆盖每个判定的每个分支至少执行一次。 3.条件覆盖每个判定的每个条件应取到各种可能的值。 4.判定/条件覆盖同时满足判定覆盖条件覆盖。 5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。 6.路径覆盖使程序中每一条可能的路径至少执行一次。 白盒测试要求

白盒测试方法详细说明

白盒测试方法 一、静态结构分析法 程序的结构形式是白盒测试的主要依据。研究表明程序员38%的时间花费在理解软件系统上,因为代码以文本格式被写入多重文件中,这是很难阅读理解的,需要其它一些东西来帮助人们阅读理解,如各种图表等,而静态结构分析满足了这样的需求。 在静态结构分析中,测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据结构、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图、子程序表、宏和函数参数表等各类图形图标,可以清晰地标识整个软件系统的组成结构,使其便于阅读和理解,然后可以通过分析这些图标,检查软件有没有存在缺陷或错误。 其中函数调用关系图通过应用程序中各函数之间的调用关系展示了系统的结构。通过查看函数调用关系图,可以检查函数之间的调用关系是否符合要求,是否存在递归调用,函数的调用曾是是否过深,有没有存在独立的没有被调用的函数。从而可以发现系统是否存在结构缺陷,发现哪些函数是重要的,哪些是次要的,需要使用什么级别的覆盖要求...... 模块控制流图是与程序流程图相类似的由许多节点和连接节点的边组成的一种图形,其中一个节点代表一条语句或数条语句,边代表节点间控制流向,它显示了一个函数的内部逻辑结构。模块控制流图可以直观地反映出一个函数的内部逻辑结构,通过检查这些模块控制流图,能够很快发现软件的错误与缺陷 二、代码检查 代码检查包括桌面检查、代码审查和走查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等方面;发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的内容,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。 代码检查方法 1、代码检查法 (1)桌面检查:这是一种传统的检查方法,由程序员检查自己编写的程序。程序员在程序通过编译之后,对源程序代码进行分析、检验,并补充相关文档,目的是发现程序中的错误。由于程序员熟悉自己的程序及其程序设计风格,桌面检查由程序员自己进行可以节省很多的检查时间,但应避免主观片面性 (2)代码审查 由若干程序员和测试员组成一个审查小组,通过阅读、讨论和争议,对程序进行静态分析的过程。代码审查分两步:第一步,小组负责人提前把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组成员,作为审查的依据。小组成员在充分阅读这些材料后,进入审查的第二步,召开程序审查会。在会上,首先由程序员逐句简介程序的逻辑。

软件测试技术复习题

注释:黄色表示重复或相似一、选择题 1.软件测试的目的是( B ) A.避免软件开发中出现的错误 B.发现软件中出现的错误 C.容忍软件中出现的错误 D.修改软件中出现的错误 2.对于逻辑表达式((a&b)| |c),需要( C )个测试用例才能完成条件 组合覆盖。 A.2 B.3 C.4 D.5 3.逻辑覆盖法不包括( C )。 A.分支覆盖 B.语句覆盖 C.需求覆盖 D.修正条件判定覆盖 4.如果某测试用例集实现了某软件的路径覆盖,那么它一定同事实现了 该软件的( A )。 A.判定覆盖 B.条件覆盖 C.判定/条件覆盖 D.组合覆盖 5.使用白盒测试方法时,确定测试数据的依据是指定覆盖标准和( B )。

A.程序的注释 B.程序的内部逻辑 C.用户使用说明书 D.程序的需求说明 6.划分软件测试属于白盒测试还是黑盒测试的依据是( C )。 A.是否执行程序代码 B.是否能看到软件设计文档 C.是否能看到被测源程序 D.运行结果是否确定 7.单元测试中用来模拟被测模块调用者的模块是( C ) A.父模块 B.子模块 C.驱动模块 D.桩模块 8.不属于单元测试内容的是( A ) A.模块接口测试 B.局部数据结构测试 C.路经测试 D.用户界面测试 9.客户端交易处理性能指标是一类重要的负载压力测试指标,以下不属 于客户端交易处理性能指标的是( C ) A.负载测试 B.压力测试 C.疲劳强度测试 D.大数据量测试

10.以下不属于易用性而的是( D ) A.功能易用性测试 B.用户界面测试 C.辅助功能测试 D.可靠性测试 11.软件测试的目的是( F ) E.避免软件开发中出现的错误 F.发现软件中出现的错误 G.容忍软件中出现的错误 H.修改软件中出现的错误 12.软件的测试对象包括( D )。 A.软件代码 B.文档

白盒测试流程

白盒测试指南 (说明:此白盒测试指南主要给白盒测试人员提供一些基本的白盒测试方法和技术,由于涉及的问题广泛,测试内容中的细节不一定准确和完整,还有待于各位的共同参与和不断完善,欢迎多交流!) 目的 本方案主要实施NC产品程序代码的白盒测试。使界面符合设计规范,适用于用户;保证程序创建的类与接口的完整与正确,以及程序模块单独正常运行。保证局部模块功能完备性,运行正确性与稳定性。 测试项 所要测试的类。如: nc.ui.bd.* nc.bs.bd.* nc.vo.bd.* 测试依据 1.N C产品需求报告; 需求规格说明书、用例描述清单 2.设计文档;(OOA、OOD、CRC卡) 如:AOM(Analysis Object Model)表示类间的静态关系,是多个相关的用例共用的。 ASD(Analysis Sequence Diagram)是按业务工作的顺序表示每一工作步骤执行时类间的动态关系。一个用例对应一个ASD。 CRC (Collaborators & Responsibilities Card)卡是一个类的完整表述 3.界面规范 4.编码规范 5.开发命名标准 通过的准则 1.界面测试通过的标准:界面的样式、大小、颜色、整体布局的设置;各种标签控件的使用及主 题描述以及事件源控件的使用、快捷键使用都应符合《NC系统应用框架需求报告》和《设计文档的相关规范》。 2.程序代码通过的标准:创建的类、接口、方法、属性应与《设计文档》保持一致;程序的各种 命名、注释、代码行的格式等应符合《程序开发命名标准》和《编码规范》;程序模块能独立稳定运行。 测试环境配置 1.测试工具: 2.软件环境: Client端: 操作系统:中文WINNT/2000 开发环境:VA3.5 专业版 待测试的源码包 Server端: 操作系统:WIN NT4.0

白盒测试技术

实验1:白盒测试用例设计 实验目的 1.理解白盒测试意义和目的 2. 掌握逻辑覆盖测试进行白盒测试测试 3.掌握独立路径测试方法。 实验内容 运用覆盖及路径测试方法,用白盒测试法为 JAVA 程序设计测试用例。 下面是一个洗牌、发牌程序的规格说明: 1.输入玩牌的张数,有52、48张; 2.如有52张牌,则输入玩牌人数,4或2人,输入人数后打出发牌结果;如果输入人数不对,则退出程序; 3.如有48张牌,则输入玩牌人数,3或4人,输入人数后打出发牌结果;如果输入人数不对,则退出程序; import java.util.*; import java.io.*; import javax.swing.*; public class cardTest { public static void main(String[] args) { String[] suit = { "黑桃", "红桃", "梅花", "方块"}; String[] rank = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; ArrayList list = new ArrayList(); for (int i = 0; i < suit.length; i++) { for (int j = 0; j < rank.length; j++) { list.add(suit[i] + rank[j]);

} } for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i) + " "); } Collections.shuffle(list); //将list中的元素重新随机排序 int cardnum = Integer.parseInt(JOptionPane.showInputDialog( "有多张牌?请输入整数52,48")); if (cardnum == 48) { list.remove("红桃2"); list.remove("方块2"); list.remove("梅花2"); list.remove("方块A"); int player1 = Integer.parseInt(JOptionPane.showInputDialog("请输入人数:3或4的整数")); if (player1 == 3) { for (int i = 0; i < 3; i++) { System.out.print("玩家" + i + ": "); for (int j = i * 16; j < (i + 1) * 16; j++) { System.out.print(list.get(j+1) + " "); } System.out.println(); } } else if(player1 == 4) { for (int i = 0; i < 4; i++) { System.out.print("玩家" + i + ": "); for (int j = i * 12; j < (i + 1) * 12; j++) { System.out.print(list.get(j) + " ");

白盒测试笔试题

一选择题 1.下面不属于白盒测试能保证的是(D)。 A.模块中所有独立途径至少测试一次 B.测试所有逻辑决策真和假两个方面 C.在所有循环的边界内部和边界上执行循环体 D.不正确或漏掉的功能 2.因果图方法是根据(a)之间的因果关系来设计测试用例的。 A.输入与输出 B.设计与实现 C.条件与结果 D.主程序与子程序 3.使用白盒测试方法时,确定测试数据应根据(a)和指定的覆盖标准。 A.程序的内部逻辑 B.程序的复杂程度 C.使用说明书 D.程序的功能 4.软件测试中常用的静态分析方法是(a)和接口分析。 A.引用分析 B.算法分析 C.可靠性分析 D.效率分析 5.白盒方法中常用的方法是(a)方法。 A.路径测试 B.等价类 C.因果图 D.归纳测试 6.在进行单元测试时,常用的方法是(a)。 A.采用白盒测试,辅之以黑盒测试 B.采用黑盒测试,辅之以白盒测试 C.只适用白盒测试 D.只适用黑盒测试 7.在软件工程中,白盒测试法可以用于测试程序的内部结构。此方法将程序看做是(a)。 A.路径的集合 B.循环的集合 C.目标的集合 D.地址的集合 8. 对下面个人所得税程序中满足语句覆盖测试用例的是(D ) If(income < 800) taxrate=0; Else if(income <=1500) taxrate=0.05; Else if(income <2000) taxrate=0.08; Exle taxrate=0.1; A income = (800,1500,2000,2001) B income = (800,801,1999,2000) C income = (799,1499,2000,2001) D income = (799,1500,1999,2000) 二简答题 1.白盒测试有几种方法? 答:白盒测试方法分为两大类:静态测试方法和动态测试方法。 静态测试方法:检查软件的表示和描述是否一致,没有冲突或者没有歧义。 动态测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。 2.比较白盒测试和黑盒测试? 答:使用白盒测试方法时,测试根据程序的内部逻辑和指定的覆盖标准; 黑盒测试法是通过分析程序的接口功能设计测试用例的。 3.写几个白盒测试的工具 4.Linux基本命令

1407040248_周立群_白盒测试试题

第五章白盒测试 一、判断分析题 1.语句覆盖是最弱的逻辑覆盖。(√) 2.语句覆盖是最强的逻辑覆盖。(X) 3.判定覆盖不一定包含条件覆盖。(X) 4.条件覆盖不一定包含判定覆盖。(√) 5.判定/条件覆盖能同时满足判定、条件两种覆盖标准。(√) 6.判定/条件覆盖指满足判定覆盖标准或条件覆盖标准。(X) 7.DD-路径图是一种压缩图。(X) 8.详细设计的目的是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用 某种选定的表达工具给出清晰的描述。(X ) 9.尽量用公共过程或子程序去代替重复的代码段。(X) 10.对于连锁型分支结构,若有n个判定语句,则有2n条路径。(√) 11.尽量采用复合的条件测试,以避免嵌套的分支结构。(√) 12.GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序 更加简洁。(√) 二、简答题 1.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区 别与联系。 答:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。

《软件测试技术》期末复习题+参考答案

单项选择题:共20小题,每小题1 分,满分20分;请将答案填入题后括号中。 1.在软件生命周期的哪一个阶段,软件缺陷修复费用最低( A ) (A)需求分析(编制产品说明书)(B)设计 (C) 编码(D)产品发布 2.单元测试中用来模拟被测模块调用者的模块是( C ) (A) 父模块(B)子模块 (C)驱动模块(D)桩模块 3.为了提高测试的效率,应该( D ) (A)随机地选取测试数据; (B)取一切可能的输入数据作为测试数据; (C)在完成编码以后制定软件的测试计划; (D)选择发现错误可能性大的数据作为测试数据。 4.侧重于观察资源耗尽情况下的软件表现的系统测试被称为( B ) (A)强度测试(B)压力测试 (C) 容量测试(D)性能测试 5.必须要求用户参与的测试阶段是( D ) (A)单元测试(B)集成测试 (C) 确认测试(D)验收测试 6.软件测试员究竟做些什么。( C ) (A)软件测试员的目的是发现软件缺陷 (B)软件测试员的目的是发现软件缺陷,尽可能早一些 (C)软件测试员的目的是发现软件缺陷,尽可能早一些,并确保其得以修复 (D)软件测试员的目的是发现软件缺陷,尽可能早一些,并将其得以修复 7.下面四种说法中正确的是( C ) (A)因果图法是建立在决策表法基础上的一种白盒测试方法; (B)等价类划分法是边界值分析法的基础; (C)健壮性等价类测试的测试用例要求在有效等价类中取值; (D)在任何情况下做黑盒测试皆应首先考虑使用错误推断法。 8.划分软件测试属于白盒测试还是黑盒测试的依据是( C ) (A)是否执行程序代码 (B)是否能看到软件设计文档 (C)是否能看到被测源程序 (D)运行结果是否确定 9.下列项目中不属于测试文档的是( C ) (A)测试计划(B)测试用例 (C) 程序流程图(D)测试报告 10.如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的( A ) (A)判定覆盖(B)条件覆盖 (C) 判定/条件覆盖(D)组合覆盖 11.下列说法不正确的是( D ) q (A)测试不能证明软件的正确性; (B)测试员需要良好的沟通技巧; (C)QA与testing属于一个层次的概念; (D)成功的测试是发现了错误的测试。 12.对Web网站进行的测试中,属于功能测试的是( B ) (A)连接速度测试(B)链接测试

白盒测试用例设计方法

1.白盒测试用例设计方法 1.1. 白盒测试概述 由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子部的东西以及里面是如何运作的。 1.白盒的测试用例需要做到 ?保证一个模块中的所有独立路径至少被使用一次; ?对所有逻辑值均需测试true 和false; ?在上下边界及可操作围运行所有循环; ?检查部数据结构以确保其有效性。 2.白盒测试的目的 通过检查软件部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。 3.白盒测试的特点 依据软件设计说明书进行测试、对程序部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。 4.白盒测试的实施步骤 1)测试计划阶段:根据需求说明书,制定测试进度。 2)测试设计阶段:依据程序设计说明书,按照一定规化的方法进行软件结构划分和设计测试用例。 3)测试执行阶段:输入测试用例,得到测试结果。 4)测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。 5.白盒测试的方法

总体上分为静态方法和动态方法两大类。 ?静态分析:是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。 ?动态分析:主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后, 对软件系统行为的分析。动态分析包含了程序在受控的环 境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状 态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支 测试。下面要介绍的六种覆盖测试方法属于动态分析方法。 6.白盒测试的优缺点 ?优点:迫使测试人员去仔细思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底; 最优化 ?缺点:费用昂贵;无法检测代码中遗漏的路径和数据敏感性错误; 不验证规格的正确性。 1.2. 白盒测试基本技术 1.2.1.控制流图 1.2.1.1.定义 程序流程图是软件开发过程中进行详细设计时,表示模块部逻辑的一个常用的、也非常有效的图示法。程序流程图详细地反映了程序部控制流的处理和转移过程,它一般是进行模块编码的参考依据。在程序流程图中,通常拥有很多种图示元素,例如,“矩形框”表示一个计算处理过程,而“菱形框”表示一个判断条件等。通常测试人员为某个程序模块做白盒测试过程中,在做与路径相关的各种分析的时候,这些非常细节的信息往往是不太重要。因此,为了更清晰突出地显示出程序的控制结构,反映控制流的转移过程,一种简化了的程序流程图便出现了,就是程序的控制流图。在控制流图中一般只有两种简单的图示符号:节点和控制流。

白盒测试方法-覆盖

白盒测试方法 逻辑覆盖 一、语句覆盖 二、判定覆盖 三、条件覆盖 四、判定-条件覆盖 五、路径覆盖 逻辑覆盖 结构测试是依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成的测试。结构测试中的一个重要问题是,测试进行到什么地步就达到要求,可以结束测试了。这就是说需要给出结构测试的覆盖准则。 以下给出的几种逻辑覆盖测试方法都是从各自不同的方面出发,为设计测试用例 提出依据的。 IF((A>1)AND(B=0))THEN X=X/A IF((A=2)OR(X>1)THEN X=X+1 其中“AND”和“OR”是两个逻辑运算符。图1给出了它的流程图。a、b、c、 d和e是控制流上的若干程序点。

一、语句覆盖 语句覆盖的含意是,在测试时,首先设计若干个测试用例,然后运行被测程序, 使程序中的每个可执行语句至少执行一次。这时所谓“若干个”,自然是越少越好。 在上述程序段中,我们如果选用的测试用例是: A=2 B=0………………CASE1 X=3 则程序按路径ace执行。这样该程序段的4个语句均得到执行,从而作到了语句覆盖。但如果选用的测试用例是: A=2 B=1………………CASE2 X=3 程序按路径abe执行,便未能达到语句覆盖。 从程序中每个语句都得到执行这一点来看,语句覆盖的方法似乎能够比较全面地 检验每一个语句。但它也绝不是完美无缺的。假如这一程序段中两个判断的逻辑运算有问题,例如,第一个判断的运算符“AND”错成运算符“OR”或是第二个判断中的运算符“OR”错成了运算符“AND”。这时仍使用上述前一个测试用例CASE1,程序仍将按路径ace执行。这说明虽然也作到了语句覆盖,却发现不了判断中逻辑运算的错误。

相关文档
相关文档 最新文档