软件测试之控制流图

article/2025/9/4 6:53:14

为了应对软件工程考试,本文对控制流图常见考法进行整理,主要是针对软件评测师的题型来整理。

什么是控制流图

控制流图是一个过程或程序的抽象表现,常以数据结构链的形式表示。简称流图,是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。

控制流图中包含两种图形符号:

  • 节点
  • 控制流线

边上一般是条件,点上一般是操作。

如何画控制流图

常见结构的控制流图:
在这里插入图片描述
图1:常见结构的程序控制流图

对于复合条件,要分解为简单条件,即如果判断中的条件表达式是一个或者多个逻辑运算符连接的复合条件表达式,则需要改为一系列只有单条件的嵌套判断。
当我们画控制流图的时候,一般将 1 号节点设为程序的入口,看作初始化(起始)操作。如果有条件判断,那么边上是选择条件;每个节点对应着一个操作,例如赋值、计算、调用函数等。
在这里插入图片描述

但是一般在做题时,若无特殊要求,是不需要将操作或条件写在点上、边上的;知道操作对应节点、条件对应边,可以方便我们画出控制流图。

例如:将程序流程图转化为控制流图
在这里插入图片描述
图2:程序流程图举例

上图中存在复合表达式,需要分解为简单条件,对应的程序控制流程图如下所示:
在这里插入图片描述
图3:程序对应控制流图

一个节点包含一个或多个连续的无分支语句,节点不允许含有复合节点。
判定节点(谓词节点)

  • 由判定节点出发的边必须终止于某一节点
  • 由边和节点所限定的范围被称为区域
  • 当对区域进行计数时,图形外的区域也应记为一个区域
计算环路复杂度

McCabe环路复杂度为程度逻辑复杂性提供定量的测度;该度量用于计算程序的基本独立路径数目,也即是确保所有语句至少执行一次的起码测试数量。

  1. V(G) = m - n + 2,其中 m 是边数,n 是顶点数,这是最常用的一种计算方法;
  2. 除此之外,V(G) = P + 1,其中 P 是程序流图中判定节点数;
  3. 如果A是程序流程图的封闭区域数目,区域的个数定义为边和节点圈定的封闭区间域数加上图形外的区域数1,那么V(G) = A + 1。

继续以 图3 举例,那么该程序控制流图 V(G)= 10 - 7 + 2 = 5

什么是控制流图的线性无关路径与独立路径

线性无关路径 = 线性独立路径
而一条独立路径是指,和其它的独立路径相比,至少引入一个新处理语句或者一个新判断的程序通路。一个程序的 V(G)值正好等于该程序的独立路径数。

找出程序的一个独立路径集合

确定独立路径集合需要在画出程序控制流图以及求出环路复杂性 V(G) 后才能开始。
一般步骤为:

  1. 画出程序控制流图
  2. 计算环路复杂性V(G)
  3. 确定独立路径集合

前两步已经在上文讲解过,下面以图3为例找出其对应的独立路径集合。

路径1:1-2-4-7
路径2:1-2-3-4-7
路径3:1-3-4-7
路径4:1-2-4-5-7
路径5:1-2-4-5-6-7

注意,独立路径集合不是唯一的。
上述集合中之所以没有添加路径:1-2-3-4-5-7,是因为该路径在上述集合中并未引入一个新处理语句或一个新判断,所以不应加入。当然,如果把1-2-4-5-7 换成 1-3-4-5-7 是可以的,因为他们都引入了新的处理语句。

参考资料

  • 姜楠、马蕾,软件工程技术与应用,上海:上海交通大学出版社,2018,194-196
  • zhuohanzhuo的博客
  • Dic0k的博客
  • 晚安` 的博客

http://chatgpt.dhexx.cn/article/1vUZhhKv.shtml

相关文章

控制流图(Control Flow Graph)-(CFG)

1.定义 百度百科: 控制流图(Control Flow Graph, CFG)也叫控制流程图,是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。它用图的形式…

【大学生软件测试基础】白盒测试 - 控制流图 - 01

任务1、画出程序流程图; 任务2、画出控制流图; 任务3、根据程序环形复杂度的计算公式,求出程序路径集合中的独立路径数目; 任务4、根据环形复杂度的计算结果,源程序的基本路径集合中有多少条独立路径; …

控制流图(Control Flow Graph, CFG)

The if Statement if (x < y) {y 0;x x 1; } else {x y; } if (x < y) {y 0;x x 1; } The if-return Statement if (x < y) {return; } print (x); return; 注意&#xff1a;2到3 没有边 while and for Loops x 0; while (x < y) {y f (x, y);x x …

C语言之美——平方根倒数快速计算

C语言之美——平方根倒数快速计算 前言 由于特殊原因&#xff0c;陆陆续续接触陀螺仪很长一段时间&#xff0c;对于各种解析算法的运算速率有了切身体会&#xff0c;不断追求更快、更准。最近&#xff0c;发现了一份比较特殊的平方根倒数速算法&#xff0c;一下子来了兴趣&am…

【C语言求素数(质数)的三种方法】

失踪人口回归&#xff0c;假期因为太懒&#xff0c;刚开学的这几天又真的忙&#xff0c;所以好长时间没有发文章了&#xff0c;马上我们要进行C语言考试了&#xff0c;我发现学的东西好多都不太懂&#xff0c;所以慢慢要在进行一次复习了&#xff1b;上周数据结构课上老师让写程…

平方根求和c语言编程,计算并输出3到100(包括3和100)之间所有素数之和的平方根。 C语言,求救...

满意答案 zh19951006 2014.07.02 采纳率&#xff1a;56% 等级&#xff1a;12 已帮助&#xff1a;6562人 //先求3到100间的所有素数,存在数组中; //求该数组的所有为素数的元素之和,然后开方求平方根 #include <stdio.h> #include <math.h> int sushu[98];//开辟…

word封面下划线怎么对齐(非常简单+彻底解决)

之前遇到这个问题&#xff0c;也在网上百度了很多次&#xff0c;有的说段落调整对齐方式为两端对齐&#xff0c;对称什么的&#xff0c;试了一下都不管用&#xff0c;也有的说是加一个表格&#xff0c;但是并没有解决根本问题&#xff0c;最后突然想起&#xff0c;有一次打印东…

【Office】Word空格无法添加下划线

缘由 在弄文档封面的时候&#xff0c;需要在项目名称后面加一条下划线 于是出现了这个情况&#xff1a; 1.在没有内容的一行&#xff0c;带下划线的空格直接不显示下划线了&#xff08;下图第一行&#xff09; 2.空格应用下划线格式&#xff0c;内容前面的是能显示的&#…

Word公式居中,公式编号右对齐

1. 选择开始-样式-新建样式。编辑名称为公式 2. 左下角选择格式-制表位 打开Word标尺&#xff0c;找到中间和最右边的位置。比如我这里是17和34&#xff0c;输入位置分别设置居中对齐和右对齐 3. 在样式中选择公式 4. 在公式右侧键入编号&#xff0c;然后将光标放在公式左侧&am…

php输入域无法对齐,下划线输入内容后怎么对齐

下划线输入内容后设置对齐的方法&#xff1a;首先打开Word&#xff1b;然后依次选择“菜单栏->插入->表格”&#xff1b;接着将内容分别输入表格中&#xff0c;并调整表格的列宽等格式&#xff1b;最后右键选择“边框和底纹”&#xff0c;并设置只保留底部边框和中间横线…

Word 里文字对齐的4种方法

转自&#xff1a;微点阅读 https://www.weidianyuedu.com 我们在用Word写论文、制作简历的时候&#xff0c;通常会遇到把word中某些特定文字对齐的情况。那么问题来了&#xff0c;你平时都是怎么对齐文字的&#xff1f;傻傻的用空格来对齐吗&#xff1f; 在字符数不等的情况下&…

Word 里文字对齐4种方法推荐

我们在用Word写论文、制作简历的时候&#xff0c;通常会遇到把word中某些特定文字对齐的情况。那么问题来了&#xff0c;你平时都是怎么对齐文字的&#xff1f;傻傻的用空格来对齐吗&#xff1f; 在字符数不等的情况下&#xff0c;加空格不仅麻烦而且不准确&#xff0c;下面传…

Windows系统中Word文档中文字后面的空格下的下划线不显示的解决办法

笔者最近在做课程设计&#xff0c;需要写Word文档&#xff0c;在写文档的时候遇到了一堆bug&#xff0c;现在课程设计肝完了&#xff0c;终于有时间梳理梳理这些bug然后发布出来做个备忘录。    第一个bug是Windows系统中Word文档中文字后面的空格下的下划线不显示&#xff0…

word里面怎样输入空白下划线

在编写文档时&#xff0c;有时需要留些空格下划线的位置&#xff0c;那怎么加入空白下划线呢&#xff1f;下面我用我常用的speedoffice来说明一下。 方法1&#xff1a;将输入法设置为英文状态&#xff0c;同时按下“Shift”键和“-”键即可可持续不断敲空白下划线。 方法2&…

Word空格自动加下划线

经常用到在文档签署页加下划线&#xff0c;老是忘记&#xff0c;记录下来&#xff0c;步骤如下&#xff1a; 文件——选项——高级——为尾部空格添加下划线&#xff08;选中&#xff09;——确定。

解决word空格后无法打出下划线

问题 即使点击了word开始菜单栏中的下划线选项&#xff0c;也打不出下划线 解决办法 找到word的&#xff1a; 1-文件 ——>2-选项——>3-高级——>4-以下对象的布局选项——>5-为尾部空格添加下划线

Word中下划线自动换行版式不…

原文地址&#xff1a;Word中下划线自动换行版式不变形 作者&#xff1a;破烂小笔 Word中编辑合同、协议、考卷、介绍信一类文档时&#xff0c;往往需要在文本中留出一定的空格并设置下划线以便填写。当这些空格出现在上一行末和下一行开头时&#xff0c;如果空格后有字符则会造…

怎么让WORD中多行(常带下划线)头和尾都完全对齐

『如何』让WORD中多行&#xff08;常带下划线&#xff09;头和尾都完全对齐 “为啥Word多行下划线后面总是长短不一&#xff0c;无论怎么调不是多了就是少了&#xff1f;怎样才能完美对齐呢&#xff1f;” 通过本文你可以 如何对齐Word中的多行文本&#xff0c;达到可以容忍的…

解决 Word 中空格下划线居中后下划线不显示的问题

1、Word 左上角“文件”--“选项”--“高级”--“以下对象的布局选项”--“为尾部空格添加下划线” 2、选中要居中的部分&#xff0c;右键“段落”--“缩进和间距”--常规 对齐方式“居中”&#xff0c;一定要在这里选才可以 “中文版式”--选中“允许西文在单词中间换行” 效果…