白盒测试的主要方法有:代码检查法,静态结构分析法,静态质量度量,逻辑覆盖法,基本路径测试法(应用最广),域测试,符号测试,Z路径覆盖,程序变异。很多重复的,实际中就是逻辑路径覆盖测试而已。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
定义:
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。
白盒测试技术一般可被分为静态分析和动态分析两类技术。
静态分析主要有:控制流分析技术、数据流分析技术、信息流分析技术。
动态分析主要有:逻辑覆盖率测试(分支测试、路径测试等),程序插装等。
缺点:
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
第四,昂贵;无法检测代码中遗漏的路径和数据敏感性错误;不验证规格的正确性。
优点:
迫使测试人员去仔细的思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;最优化。
规律:
1.语句覆盖每条语句至少执行一次。
2.判定覆盖每个判定的每个分支至少执行一次。
3.条件覆盖每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。
7.六种覆盖标准发现错误的能力呈由弱至强的变化。
逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖,根据覆盖目标、程度的不同分为以下6种
1.语句覆盖 Statement coverage 2.判定覆盖 Decision coverage
3.条件覆盖 Condition coverage 4.条件/判定覆盖 Condition/decision coverage
5.条件组合覆盖 Condition combination coverage 6.路径覆盖 Path coverage
以一个软件测试题目为例:
if (a>1) and (b = 0)
then x = x / a
if (a = 2) or (x > 1)
then x = x+ 1
1、根据以上程序段画出程序流程图
2、按照要求给出六种逻辑覆盖的测试用例
1.语句覆盖
-》定义:要求设计足够多的测试用例,使得程序中每条语句至少被执行一次
-》缺点:语句覆盖常常被人指责为“最弱的覆盖”,它只管覆盖代码中的执行语句,却不考虑各种分支的组合
-》题解分析:
1、可执行语句4条、变量3个(a,b,x)
2、设计最少的案例,每个语句至少执行一次
-》题解:
a=2, b=0, x=4 覆盖路径:a-c-e
(还有其他测试用例方案,满足条件即可)
(路径b、d没有被覆盖,这是其缺点所在)
2.判定覆盖
定义:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次
(所有分支路径都至少经过1次)
-》题解分析:需要覆盖的路径为:(a-c-e、a-b-d) 或 (a-b-e、a-c-d)
“判定覆盖”比“语句覆盖”严格,因为如果每个分支都执行过了,则每个语句也就执行过了。但是,“判定覆盖”还是很不够的,比如选择a-b-e和a-c-d案例就没有覆盖到a-d-b的情况
-》题解:测试用例如下:
题解1:覆盖路径(a-c-e、a-b-d)
a = 2, b = 0, x = 4 覆盖路径:a-c-e
a = 0, b = 0, x = 1 覆盖路径:a-b-d
题解2: 覆盖路径(a-b-e、a-c-d)
a = 2, b =2, x = 2 覆盖路径:a-b-e
a = 3, b = 0, x = 3 覆盖路径:a-c-d
3.条件覆盖
-》定义:选择足够多的测试用例,使程序中每个判定的每个条件取得各种可能的结果
-》题解分析:
需要满足的判定为:
判定1的条件取值(a > 1, a <= 1, b = 0, b != 0) ; 判定2的条件取值(a = 2, a != 2, x > 1, x <=1)
-》题解:
a = 2, b = 0, x = 4 覆盖(a > 1, a = 2, b = 0, x > 1)
a = 1, b = 1, x = 1 覆盖(a <= 1, b != 0, x <= 1)
4.判定-条件覆盖
-》定义:判定条件覆盖是设计足够的测试用例,得使判断中每个条件的所有可能取值至少执行一次,同时每个判断本身所有可能结果也至少执行一次。缺点是忽略了条件的组合情况
-》简单记忆:判定覆盖、条件覆盖 取交集
-》分析:
例如:一个判定包括两个条件如下
x>3andy=1
一组符合判定/条件覆盖的用例需要满足下面
1.使得判定为真
2.使得判定为假
3.使得x>3
4.使得x<=3
5.使得y=1
6.使得y!=1
-》题解分析:
需要覆盖的路径为:(a-c-e、a-b-d) 或(a-b-e、a-c-d)
需要满足的判定为:判定1(a > 1, a <= 1, b = 0, b != 0) ; 判定2(a = 2, a != 2, x > 1, x <= 2)
-》题解:
a = 2, b = 0, x = 4 覆盖路径a-c-e,覆盖条件(a > 1, a = 2, b = 0, x > 1)
a = 1, b = 1, x = 1 覆盖路径a-b-d,覆盖条件(a <= 1, b != 0, x <= 1)
5.条件组合覆盖
-》定义:选择足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次、
-》分析:满足“条件组合覆盖”的测试用例是一定满足“判定覆盖”、“条件覆盖”和“判定/条件覆盖”
-》题解分析:
判定1的条件取值(a > 1, a <= 1, b = 0, b != 0) ; 判定2的条件取值(a = 2, a != 2, x > 1, x <=1)
条件组合如下:
a > 1, b = 0
a>1, b != 0
a <= 1, b = 0
a <= 1, b != 0
a = 2, x > 1
a = 2, x< = 1
a != 2, x > 1
a != 2, x <= 1
-》题解:
a = 2, b = 0, x = 4 覆盖组合1,5
a = 2, b = 1, x = 1 覆盖组合2,6
a = 1, b = 0, x = 3 覆盖组合3,7
a = 1, b = 2, x = 1 覆盖组合4,8
6.路径覆盖
-》定义:选取足够多的测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)
-》分析:覆盖程度最高的就是路径覆盖,因为其覆盖程序中所有可能的路径
对于比较简单的小程序来说,实现路径覆盖是可能的,但是如果程序中出现了多个判断和多个循环,可能的路径数目将会急剧增长,以致实现路径覆盖是几乎不可能
-》题解分析:需要覆盖的路径为:a-c-e、 a-b-d、 a-b-e、 a-c-d
a = 2, b = 0, x = 4 覆盖路径:a-c-e
a = 1, b = 0, x = 1 覆盖路径:a-b-d
a = 2, b = 1, x = 1 覆盖路径:a-b-e
a = 3, b = 0, x = 4 覆盖路径:a-c-d
关注我们:请关注一下我们的微信:扫描二维码 (鼠标移入红色字)
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!