定义

基本路径测试法又称独立路径测试,是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出基本可执行路径集合,从而设计出相应的测试用例的方法。设计出的测试用例要保证在测试中程序的语句覆盖100%,条件覆盖100%。

测试步骤

基本路径测试法包括以下4个步骤:

        (1) 画出程序的控制流图:描述程序控制流的一种图示方法;

        (2) 计算程序的环形复杂性:McCabe复杂性度量;从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界;

        (3) 导出测试用例;根据圈复杂度和程序结构设计用例数据输入和预期结果;

        (4) 准备测试用例,确保基本路径集中的每一条路径的执行;

第一步:画出控制流图

流程图用来描述程序控制结构。可将流程图映射到一个相应的流图(假设流程图的菱形决定框中不包含复合条件)。在流图中,每一个圆,称为流图的结点,表示一个或多个无分支的语句或源程序语句。一个处理方框序列和一个菱形决测框可被映射为一个结点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。一条边必须终止于一个结点,即使该结点并不代表任何语句。由边和结点限定的范围称为区域,计算区域时应包括图外部的范围。

在控制流图中的两种图形符号:

  1. 结点:

    ①标有编号的圆圈;

    ②程序流程图中矩形框所表示的处理 ;

    ③菱形表示的两个甚至多个出口判断;

    ④多条流线相交的汇合点。

  2. 边或连接:

    ①箭头;

    ②与程序流程图中的流线一致,表明了控制的顺序;

    ③控制流线通常标有名字。

常见结构的控制流图

在将程序流程图简化成控制流图时,应注意:

  • 在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。

  • 如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。

  • 在程序流图中一系列的顺序执行语句可以合成为一个结点,但是对于多分支的判断则需要分界为独立的分支,每个分支一个结点。

详解软件测试中基本路径测试法相关推荐

  1. python中filepath路径怎么写_详解Python中的路径问题

    1. 绝对路径引入 Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止.下面命令可以查看当前的搜索路径: import sys print(sys.path) sys.pa ...

  2. 详解软件测试中白盒测试基本概念及四种白盒测试方法以及六种逻辑覆盖法(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖)

    在这篇文章中,我们将讲解白盒测试的基本概念,以及四大常用的白盒测试方法. 一.白盒测试基本概念 1.白盒测试的定义 白盒测试又称为结构测试或逻辑驱动测试,它是把测试对象看成一个透明的盒子,它允许测试人 ...

  3. python join_详解Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...

  4. python中pandas安装视频教程_详解Python中pandas的安装操作说明(傻瓜版)

    很多人来问我pandas的安装(python数据分析里面的必修课) 步骤如下: 安装python的时候,把路径加到系统里,这样,随时可以用pip 路径添加方法: 查找路径: 路径1: 2.例如: 即: ...

  5. ai进入轮廓模式怎么退出_详解AI中扩展、扩展外观、轮廓化描边、创建轮廓

    详解AI中扩展.扩展外观.轮廓化描边.创建轮廓 在学习AI软件中,有不少同学分不清扩展.扩展外观.轮廓化描边.创建轮廓这四个概念具体的功能区别,今天我们具体聊一下. 先说"扩展", ...

  6. 详解CorelDRAW中如何合并与拆分对象

    合并两个或多个对象可以创建带有共同填充和轮廓属性的单个对象,以便将这些对象转换为单个曲线对象.可以合并的对象包括矩形.椭圆形.多边形.星形.螺纹.图形或文本等,本教程将详解CorelDRAW中关于合并 ...

  7. 三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程)

    三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程) 一.显示运动轨迹原理讲解 二.前期准备 三.git管理子模块及克隆源代码 1.学习使用Git Submodule 2.克隆源 ...

  8. java 配置文件的路径_详解java配置文件的路径问题

    详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...

  9. python中break怎么用_详解Python中break语句的用法

    详解Python中break语句的用法 在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中 ...

最新文章

  1. 物理学走到尽头了吗?
  2. Scrum立会报告+燃尽图(十二月六日总第三十七次):程序功能逻辑优化
  3. SetWindowOrg等相关函数
  4. ceph对象存储折腾记
  5. 1.17 选择排序法
  6. Window10/Linux 下安装 scrapy (twisted 安装失败的解决办法 )
  7. 从钱龙数据中读取股票权息信息导入到数据库
  8. 网络编程中客户端链接的合法性,socketserver模块
  9. 基于JAVA后勤管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  10. 23_Open_Loop
  11. 单片机多级菜单的简单实现
  12. 区块链众生的六个层级,你了解吗?
  13. 3208点阵时钟c语言程序,点阵万年历(带时间、年月日星期调整及闹钟功能)C程序...
  14. 健身房训练计划—背部
  15. 数学建模常用算法:启发式优化算法合辑(内含多种智能优化算法,使用java实现算法、详细注释、并进行结果可视化)
  16. JavaScript原型详解(通俗易懂)
  17. 【English】Day 2 大英读写2 U1 A 7.11.12 翻译
  18. 组播路由协议——PIM DM工作机制
  19. 【leafletjs】搭建二维地图
  20. JSCanvas画板

热门文章

  1. 【Android 教程系列第 14 篇】Android 系统版本和 API 等级对应关系表(持续更新)
  2. R如何提取数据框中的元素
  3. php裁剪插件,简单功能强大的jQuery图片剪裁插件Image Cropper 中文api
  4. 基于MAX7800羽毛板语音控制ESP8266小车
  5. [Python123]Python语言程序设计:练习1-Python基本语法元素 (第1周)第五题——货币转换 |
  6. 用python实现PCA降维
  7. Python nan ,ref的含义
  8. c语言点餐对话系统,智能点餐系统的设计与实现.pdf
  9. pod访问外部mysql_pod连接外部数据库超时分析和处理方法
  10. 九宫格穷举所有解——九宫Killer