软件质量保护与测试(第2版)学习总结第十一章 白盒测试

简介: 本文是《软件质量保护与测试》(第2版)第十一章的学习总结,详细讲解了白盒测试中的控制流测试技术,包括语句覆盖、判断覆盖、条件覆盖、判定-条件覆盖和路径覆盖等方法,并通过具体代码示例展示了如何设计测试用例来验证程序中的不同执行路径。

错误隐藏在角落里、集聚在边界处 ----Boris Beizer

白盒测试是看源代码的,静态分析和动态分析

11.2 控制流测试

程序结构主要有3种 顺序结构、分支结构、循环结构

#include "stdafx.h"
#include <iostream>
using  namespace std;
int main(int argc,char* argv[])
{

     double a,b,x;
     cin>>a>>b>>x;
     if((a>1)&&(b==0))
     x=x/a;
     if((a==2)||(x>1))
     x=x+1;
     cout<<x;
     return 0;

}

11.2.1 语句覆盖

就是将程序的每个分支都走一遍

就比如上面的代码,case1:(A=2,B=0,X=2)就可以做到语句覆盖

判断覆盖

类似于

两个条件,两个都满足,一个满足 就完成了判断覆盖

Case1: (A=2,B=0,X=3)

Case2: (A=1,B=0,X=1)

当然,还有另外的选择

case4:(A=3,B=0,X=3)

Case5: (A=2,B=1,X=1)

条件覆盖

第一个条件a>1 有四种情况,就是a>1为真的,或者a>1为假的,b=0为真的,b=0为假的。

同理,第二个条件,也是有四种情况

自然条件覆盖用例也可以为:

  1. a>1, b=0, x任意 比如说 a=2, b=0,x=0
  2. a<=1, b=0, x任意 比如说 a=1,b=0,x=1
  3. a>1, b!=0, x任意 比如说 a=3,b=1,x=9
  4. a<=1, b!=0, x任意 等等
  5. a=2, b任意, x<=1
  6. a!=2, b任意, x<=1
  7. a=2, b任意, x>1
  8. a!=2, b任意, x>1

其中第1、2、3、4个用例覆盖了if语句中的所有条件分支,第5、6、7、8个用例覆盖了第二个if语句中的所有条件分支。

判定-条件覆盖

根据给出的代码,我们可以列出以下判定条件:

  1. a>1 且 b==0
  2. a==2 或 x>1

那么我们可以列出以下四个用例:

  1. a=2, b=0, x=0
  2. a=0, b=0, x=0
  3. a=2, b=0, x=2
  4. a=1, b=1, x=1

对于第一个用例,判定条件1不成立,判定条件2成立,输出x+1=1。 对于第二个用例,判定条件1不成立,判定条件2不成立,不执行任何操作,输出x=0。 对于第三个用例,判定条件1成立,判定条件2成立,执行x=x+1=3操作,输出x=3。 对于第四个用例,判定条件1不成立,判定条件2不成立,不执行任何操作,输出x=1。

因此,四个用例分别覆盖了两个判定条件的所有情况。

路径覆盖

接下来就是设计测试用例:

SABCDE

SACDE

SACE

SABCE

如果我不解释上面的图,你们肯定会认为,我给出的用例是有问题的。

它这个图的解释是,只要到了B,就说明第一个条件是对的,同理只要到了D,第二个条件就是对的,反过来,没有到就是没有B,就是第一个条件是错的。

总之,我个人认为书上这个图是很s “b”的

可以看出四条路径,再按照这四条路径出用例就是了

a=2,b=0,x=2 SABCDE

a=1,b=9,x=3 SACDE

a=3,b=0,x=0 SABCE

a=-1,b=9,x=-1 SACE

程序的控制流图

控制流图就长右边这样

假设程序为这个:

1、if  a  or  b
2、x
3、else
4、y

有时候,过程两个东西会放在一起,只要没有分支就行了,就比如说上上的图的2,3放在一起,等等

目录
相关文章
|
5月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
217 3
|
1月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
5月前
|
安全 测试技术 Linux
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
162 2
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
|
5月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
253 4
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
|
4月前
|
测试技术
软考软件测评师大题——案例分析之白盒测试
历年下午案例试题一固定考察白盒测试,主要包含三大核心问题:推导逻辑条件、绘制控制流图及计算环路复杂度、确定线性无关路径集合。内容涵盖覆盖层级标准(语句、分支、判定、条件覆盖等)、控制流图构建规范(顺序、分支、循环结构转换原则)、环路复杂度计算公式以及线性无关路径生成方法。通过典型题型示例解析,如代码路径分析与验证指标,帮助考生掌握解题思路和技巧。
|
4月前
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。
|
4月前
|
安全 测试技术 持续交付
软考软件评测师——基于风险的测试技术
本文详细阐述了测试计划的核心要素与制定流程,涵盖测试范围界定、实施策略规划、资源配置及风险管理机制。通过风险识别方法论和评估模型,构建了完整的质量保障体系。同时,针对不同测试级别与类型提供具体配置建议,并提出技术选型原则与实施规范,确保测试活动高效有序开展,为项目成功奠定基础。内容结合实际经验,具有较强指导意义。
|
9月前
|
安全 测试技术
关于Courtney定律与软件测试(质量)
Courtney定律由Robert H. Courtney提出,涵盖系统安全与质量评估。第一定律强调特定环境对安全性和质量评论的重要性;第二定律指出安全或质量支出不应超过潜在损失,完美性需无限代价且零风险/缺陷不可实现;第三定律表明管理问题无技术解,技术问题有管理解。这些定律适用于安全及软件测试领域,指导合理资源分配和风险管理。
95 18
|
11月前
|
测试技术 持续交付
探索自动化测试在软件质量保证中的关键作用
本文深入探讨了自动化测试在现代软件开发生命周期中的重要性,以及它是如何成为确保软件产品质量的不可或缺的一环。通过分析自动化测试的优势、挑战和最佳实践,本文旨在为读者提供对自动化测试全面而深刻的理解,从而帮助他们在实际工作中更有效地应用自动化测试策略。
120 2

热门文章

最新文章

下一篇
oss教程