当前位置: 首页 > news >正文

软件质量保证——单元测试之白盒技术

笔记内容及图片整理自XJTUSE “软件质量保证” 课程ppt,仅供学习交流使用,谢谢。

程序图

程序图定义

程序图P=(V,E),V是节点的集合(节点是程序中的语句或语句片段),E是有向边的集合(有向边是程序语句或语句片段之间的有向控制流)。若程序图P存在两个节点i和j,存在一条从i到j的有向边,这说明语句片段j能在i后立即被执行。

在实际案例中程序图仅仅包含实际执行的语句。

程序图案例

三角形问题程序源码:

三角形问题程序路径图:

DD路径

DD路径定义

DD路径,全称Decision to Decision Paths,是从决策到决策的语句序列路径(决策语句指一个节点的入度或出度大于等于2),DD路径中的语句序列内部没有分支。起始节点和终止节点不同的路径是链,链中每个节点的入度和出度都是1。DD路径图是一种压缩格式的程序图。

DD路径是程序图中的一条链,分为五种情况:

1)源节点——由一个入度为0的节点组成

2)汇节点——由一个出度为0的节点组成

3)判定语句/判定结束语句——由一个入度或出度>=2的节点组成

4)短分支——由一个入度和出度都是1的节点组成

5)串行语句序列——由长度>=1的最大链组成

DD路径案例

三角形问题DD路径:

三角形问题DD路径图(左边程序图压缩为右边DD路径图):

测试覆盖指标

黑盒测试技术常常缺乏合适的度量标准,因而采用提供相应测试覆盖指标的结构性测试进行辅助,覆盖率是用于度量测试完整性的一种手段。

覆盖率 = 被执行的测试项数量 / 总项数 * 100%

程序图的覆盖指标

采用给定的测试用例集作用于被测软件时,分析其程序图:

节点覆盖——要求程序图中的所有节点都被遍历到。

边覆盖——要求程序图中的所有边都被遍历到。

路径覆盖——要求程序图中的所有从源节点到汇节点的路径都被遍历到。

逻辑覆盖指标

逻辑覆盖主要针对程序内部的逻辑结构进行测试用例设计,包含以下6种指标:

1)语句覆盖——程序中的每条可执行语句都至少被执行一次,与节点覆盖等同

2)判定覆盖——程序中的每个判定的取真分支和取假分支都至少被执行一次

3)条件覆盖——程序中的每个判定的每个条件的各种取值都至少被执行一次

4)判定-条件覆盖——结合了判定覆盖和条件覆盖

5)条件组合覆盖——程序中的每个判定的所有条件的各种取值组合都至少被执行一次

6)路径覆盖——程序中的每个路径都至少被执行一次

Miller覆盖指标

Miller覆盖指标主要是基于程序DD路径的指标,并通过实践表明当一组测试用例满足DD路径覆盖指标时,可以发现程序中大约85%的缺陷。

循环覆盖指标

简单循环:存在while-do和do-until两种形式,采用改进的边界值分析设计测试用例。

嵌套循环:一个循环体内包含其他循环,采用由内向外逐层测试的思想设计测试用例。

串接循环:程序中两个及以上的连续循环,根据循环间是否独立采用简单循环/嵌套循环的测试策略设计测试用例。

复杂循环:循环体内存在入度/出度大于1的节点,甚至两个及以上循环相互嵌套,是一种实际程序设计中需要避免的情况。

http://www.lryc.cn/news/494719.html

相关文章:

  • Vue0-生命周期-03
  • Flutter:页面滚动
  • 【CameraPoseRefinement】以BARF为例介绍三维重建中的位姿优化
  • YOLO系列论文综述(从YOLOv1到YOLOv11)【第13篇:YOLOv10——实时端到端物体检测】
  • 多数元素
  • EasyDSS视频推拉流技术的应用与安防摄像机视频采集参数
  • 在CentOS7上更换为阿里云源
  • 小程序跳转到本页面并传参
  • Vim操作
  • 金碟云星空-企微通知
  • Java中的运算符“instanceof“详解
  • SVG无功补偿装置MATLAB仿真模型
  • Java 虚拟机:承载 Java 生态的神奇魔盒
  • 多输入多输出 | Matlab实现TCN-LSTM时间卷积神经网络结合长短期记忆神经网络多输入多输出预测
  • 快速排序算法讲解(c基础)
  • 数据结构--二叉树的创建和遍历
  • 2024143读书笔记|《遇见》——立在城市的飞尘里,我们是一列忧愁而又快乐的树
  • 计算机毕业设计Python+卷积神经网络股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • leetcode hot100【LeetCode 48.旋转图像】java实现
  • 力扣1382:将二叉搜索树便平衡
  • ElasticSearch学习篇19_《检索技术核心20讲》搜推广系统设计思想
  • 实战ansible-playbook:Ansible Vault加密敏感数据(三)
  • Python 视频合并工具
  • JavaScript实用工具lodash库
  • mapstruct DTO转换使用
  • Linux(Centos7)---安装nginx(很简单)
  • 【接口调试】OpenAI ChatGPT API
  • 云轴科技ZStack助力 “上科大智慧校园信创云平台”入选上海市2024年优秀信创解决方案
  • CPU性能优化-CPU特性
  • Idea使用Maven连接MySQL数据库