第四章 白盒测试

4.1:白盒测试概述

白盒测试与程序内部测试有关,故也称结构测试或逻辑驱动测试。测试者必须检查程序的逻辑结构等内部因素。得出测试数据。

4.2:程序控制流图

4.2.1:基本块

如果P是一个过程式程序设计语言(例如C、Java等)写的程序,那么一个只有一个入口块和出口块的连续的语句序列就可以被认为是一个基本块。
基本块的特征:
1:一个基本块只有唯一的入口块和出口块,这个入口块即为基本块的第一条语句,出口块是最后一条语句:
2:程序的控制从入口块进入,出口块退出,除此之外程序不能在基本块其它点退出或是中止:
3:如果基本块仅有一条语句,那么认为入口和出口是重合的。

4.2.2:流图的定义与图形表示

一般来说我们用G=(N,E)来表示流图G,其中N是结点的有限集合,E是有向边的有限集合,每一条边(i,j)用由i指向j的箭头表示,这条边连接的就是结点集合N中的结点ni和nj。Start和End是N中两个特殊的结点,N中的任何其它结点都可以从Start出发到达,同样,任何一个N中的起点也都有一道终止于End的路径。Start结点没有输入边,End结点没有输出边。
一般来说,在程序P的流图中,使用结点来对基本块进行表示,边则表示基本块之间的控制流。同时,对基本块和结点进行标识,基本块bi对应结点ni。若基本块bi和bj被边(i,j)连接,则表示控制可能从基本块bi转移到bj。

4.2.3:测试覆盖率

测试覆盖是对测试完全程度的评测。测试覆盖率是用于确定测试所执行到的覆盖项的百分比,其中覆盖项是作为指作为测试基础的一个入口或属性,如语句、分支、条件等。
测试覆盖率是对测试充分性的表示,它可以作为在测试分析报告中的一个可量化的指标依据,一般认为测试覆盖率越高,则测试效果越好。但是测试覆盖率并非测试的绝对目标,而只是一种手段。
测试覆盖分为覆盖策略,基于需求,基于代码。

4.2.4:逻辑覆盖

  • 语句覆盖(SC)
    简言之,语句覆盖,就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。这里的“若干个”,意味着使用测试用例越少越好。语句覆盖率的公式可以表示如下:
    语句覆盖率=可执行的语句总数/被评价到的语句数量×100%

  • 判定覆盖(DC)
    判定覆盖又叫做分支覆盖,是设计足够多的测试用例,使得程序中的每一个判断至少获得一次“真”和一次“假”,即使得程序流程图中的每一个真假分支至少被执行一次。分支(判定)覆盖具有比语句覆盖更强的测试能力。

  • 条件覆盖(CC)
    条件覆盖是指选择足够的测试用例,使得运行这些测试用例后,要使每个判断中每个条件的可能取值至少满足一次,覆盖程序中所有可能的数据。

  • 条件/判定组合覆盖(CDC)
    条件/判定组合覆盖是通过设计足够多的测试用例,使得运行这些测试用例后,要使每个判断中每个条件的可能取值至少满足一次,也使得程序中的每一个判断至少获得一次“真”和一次“假”。条件/判定组合覆盖的测试用例一定也符合条件覆盖和判定覆盖。

  • 多条件覆盖(MCC)
    多条件覆盖是指选择足够的测试用例,使得运行这些测试用例后,要使每个判断中每个条件的各种可能组合至少出现一次,但在判断语句较多时条件的组合也会相应变多。

  • 修正条件判定覆盖(MCDC)
    条件组合覆盖要求覆盖判定中所有条件取值的所有可能组合,它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。

  • 组合覆盖
    组合覆盖是执行足够的测试用例,使得程序中每个判定的所有可能的条件取值都至少出现一次。满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和条件判定组合覆盖。

  • 路径覆盖
    利用设计足够多的测试用例,覆盖程序中所有可能的路径。

4.2.5:测试覆盖准则

一:ESTCA(Error Sensitive Test Cases Analysis)错误敏感测试用例分析
二:LCSAJ(Linear Code Sequence and Jump)线性代码序列与跳转

4.3:路径测试

路径测试(path testing)是指根据路径设计测试用例的一种技术,经常用于状态转换测试中。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次路径覆盖是利用设计足够多的测试用例,覆盖程序中所有可能的路径。

路径测试的基本步骤:

  • 画出程序的控制流图。
  • 计算程序的环形复杂度,导出程序基本路径集中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
  • 导出基本路径集,确定程序的独立路径。
  • 根据上一步中的独立路径,设计测试用例的输入数据和预期输出。

4.4:测试充分性

4.4.1:测试充分性基础

软件测试的充分性准则描述有谓词形式和度量函数形式两种。谓词形式的充分性准则描述将充分性定义为一个谓词,用于确定测试数据必须具备什么性质才是一个彻底的测试;度量函数形式的充分性准则将充分性描述为测试的充分程度,是一种更广义的充分性准则定义。

4.4.2:测试充分性准则的度量

  • 揭错能力
    揭错能力是测试充分性准则有效性的最直接度量之一,如果使用充分性准则A比使用充分性准则B可以发现更多的软件错误,则认为准则A的有效性要高于准则B。揭错能力可由缺陷检测效力(fault detection effectiveness,fde)和缺陷检测概率(fault detection probability,fdp)来表示。

  • 缺陷检测效力fde
    给定测试集T和软件P,T对P的缺陷检测效力定义为T所检测到的缺陷占P所包含的缺陷的比率

  • 缺陷检测概率fdp
    对软件P所包含的缺陷类型Fi,满足测试准则C的所有测试集中能检测到该缺陷的测试集占整个测试集的比率。

  • 缺陷检测效力(fde)定义了满足测试准则C的单个测试集的检测出缺陷的能力,而缺陷检测概率(fdp)定义了满足测试准则C的测试集对软件包含某一类缺陷类型的检测能力。

  • 软件可靠性

  • 潜在失效距离

  • 测试的开销等

4.4.3:测试集充分性的度量

4.4.4:数据流测试

数据流测试面向的是程序中的变量。

一:变量的定义和使用
根据程序设计的理论,程序中的变量有两种不同的作用,一个是对数据进行存储,另一个则是对已经存储的数据进行取出。变量在程序中的具体位置决定了该变量具体实现的是两种作用的哪一种。例如,在y=x1+x2语句中,出现在赋值语句左边的y就表示要把赋值语句右边的计算结果存放在该变量所对应的存储空间内,也就是对数据和变量进行绑定。而出现在赋值语句右边的x1和x2则是表示该变量所存储的数据被取出,参与计算,即与该变量绑定的数据被引用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353