有关白盒测试

2023-11-12

一.对以下程序代码,设计测试用例,分别实现语句覆盖,判定覆盖,条件覆盖,

判定/条件覆盖,条件组合覆盖,路径覆盖。

void  DoWork(int x,int y,int z)

{
   int 
k=0,j=0;
   if((x>3)&&(z<10))
   {
       k=x*y-1;     //语句块1
       j=sqrt(k);
   }
   if((x= =4)||(y>5))
  {
       j=x*y+10;   //语句块2
  }
  j=j%3;             //语句块3
}

程序流程图如下:在这里插入图片描述

(1) 语句覆盖

由题可知,只要遍历路径abd,就能实现语句覆盖,

用例可为:x=4, y=4, z=4

(2) 判定覆盖

由题可知,只要遍历路径abd和ace 或者 abe和acd,就能实现判定覆盖,

用例可为:

x=4, y=4, z=4 【abd】
x=2, y=2, z=2 【ace】

或者

x=5, y=4, z=4 【abe】
x=4, y=6, z=11 【acd】

(3) 条件覆盖

由题可知,第一个判断条件的可能取值情况是:x>3 或 x<=3, z<10或者z>=10

第二个判断条件的可能取值情况是:x=4 或 x!=4 , y>5或者y<=5

用例可为:

x=4, y=6, z=6
x=3, y=5, z=10

(4) 判定/条件覆盖

由题可知,第一个判断条件的可能取值情况是:x>3 或 x<=3, z<10或者z>=10

第二个判断条件的可能取值情况是:x=4 或 x!=4 , y>5或者y<=5

只要遍历路径abd和ace 或者 abe和acd,就能实现判定覆盖

判定/条件覆盖必须同时满足判定覆盖和条件覆盖

用例可为:

x=4, y=6, z=6 【abd】
x=3, y=5, z=10 【ace】

在这里插入图片描述

(5) 条件组合覆盖

由题可知,满足多重条件覆盖准则的测试用例,必须覆盖以下8种组合:

第一个判定 第二个判定
x>3,z<10 【组合1】 x=4,y>5【组合5】
x>3,z>=10【组合2】 x=4,y<=5【组合6】
x<=3,z<10【组合3】 x!=4,y>5【组合7】
x<=3,z>=10【组合4】 x!=4,y<=5【组合8】

用例可为:

x=4, y=6, z=4 【组合1、5】
x=4, y=5, z=10 【组合2、6】
x=3, y=6, z=9 【组合3、7】
x=3, y=5, z=10 【组合4、8】

(6) 路径覆盖

由题可知,程序共有两个必经过节点,其中两两间均有两条不同路径,所以有w(1)、w(2),且必经节点1、2下的路径数分别为2、2条(个人认为该路径数指的是该节点与下一必经节点/ 结束节点之间的路径数),因此路径数为:(注意此处是非独立路径数)

w(1)w(2)=22=4 (推荐,将流程图的路径全部写出来就可以理解这个公式由来了)

(路径数也可通过 (1+11)(1+1*1)= 4 获得,路径同步即*,异步即+
区别于上种算法,每一个小路径都要计算,包括非必经节点之间的)

故,要实现路径覆盖,用例需覆盖【abd】、【abe】、【acd】、【ace】四个路径。

用例可为:

x=4, y=5, z=5 【abd】
x=5, y=4, z=5 【abe】
x=2, y=6, z=5 【acd】
x=2, y=5, z=5 【ace】

二. 根据如下给出的程序流程图,完成以下要求:

(1)画出相应的控制流图。

(2)计算环形复杂度。

(3)找出程序的独立路径集合。(此处就是计算独立路径数,用于完全路径覆盖用例测试)

在这里插入图片描述

(1) 控制流图如下:

在这里插入图片描述

(2) 环形复杂度V(G)= E – N +2 = 10-7+2=5
(也可以= P+1=4+1=5)

注:此处的 E为控制流图边数(上图中指向1的不算入,若7有自循环的话也不计入,环形复杂度测量的是程序的逻辑复杂度),N为节点数,P为判断节点数

(3) 独立路径数 = w(1)w(3)= 33 = 9
也可以=(111 + 11 +1)( 11 + 111 + 11) = 9

路径集合如下:

路径一:1→2→5→3→6→7

路径二:1→2→3→6→7

路径三:1→3→6→7

路径四:1→2→5→3→4→6→7

路径五:1→2→3→4→6→7

路径六:1→3→4→6→7

路径七:1→2→5→3→4→7

路径八:1→2→3→4→7

路径九:1→3→4→7

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有关白盒测试 的相关文章

  • 真的干不过,00后整顿职场已经给我卷麻了,想离职了...

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 软件测试|Python Selenium 库安装使用指南

    简介 Selenium 是一个用于自动化浏览器操作的强大工具 它可以模拟用户在浏览器中的行为 例如点击 填写表单 导航等 在本指南中 我们将详细介绍如何安装和使用 Python 的 Selenium 库 安装 Selenium 库 使用以下
  • 软件测试|Windows系统配置pytest+allure环境教程

    前言 allure可以输出非常精美的测试报告 也可以和pytest进行完美结合 不仅可以渲染页面 还可以控制用例的执行 本文我们将介绍Windows系统中如何配置allure环境 第一步 配置Java环境 因为 allure 的运行依赖于J
  • Python接口自动化测试处理不同接口间参数依赖

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 软件测试/测试开发/全日制/测试管理丨Redis内存数据库

    Redis是一种开源 内存中的数据结构存储系统 它提供了高性能 灵活性和丰富的数据结构 以下是Redis内存数据库的基本介绍 键值存储 Redis基于键值对的存储模型 其中每个键都与一个特定的值相关联 这种简单的数据模型使其易于使用和理解
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 测试工程师能否作为一份「终身职业」?30岁+怎么办?

    讨论 测试工程师可否作为一份终生的职业 这是我在论坛看到的一个讨论 你的答案是什么呢 我希望大家能认真思考后给出一个属于自己的答案 无论你是新手入门 还是资深专家 回答这个问题请不要凭一腔热血 也不用过分消极 别总和钱挂钩 平心而论即可 就
  • 测试开发必知:有Tomcat,为什么还要Nginx?

    只用Tomcat 不用Nginx搭建Web服务 行不行 我曾经提出的愚蠢问题 今天详细给自己解释下 为什么必须用Nginx 不用Nginx 只用Tomcat的Http请求流程 浏览器处理一个Http请求时 会首先通过DNS服务器找到域名关联
  • 测试用例评审流程优化

    测试用例 评审是QA日常工作流程中的关键一环 是QA同学完善测试用例 交流测试经验的好机会 负责组内测试用例建设以来 作者对于评审流程做了一些优化工作 本文作者将整个优化过程中的心得体会做了一个总结 希望能给大家带来帮助 01 原始流程 1
  • 软件测试|使用Python读写yaml文件,你会了吗?

    简介 YAML YAML Ain t Markup Language 是一种可读的数据序列化格式 它常用于配置文件和数据交换 Python 提供了许多库来处理 YAML 文件 在本文中 我们将探讨如何使用 PyYAML 库来读取和写入 YA
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 月薪2W的软件测试工程师,到底是做什么的?

    在生活中 我们常常会遇到以下几种窘迫时刻 准备骑共享单车出行 却发现扫码开锁半天 车子都没有反应 手机导航打车 却发现地图定位偏差很大 司机总是跑错地方 买个水 却遭遇自动售货机吐币 或者不找零钱 好不容易休息打个游戏 却一直出现卡顿 闪退
  • 一文让你了解UI自动化测试

    测试都起什么作用 是项目的保险 但不是项目的救命草 测试无实际产出 但作用远大于实际产出 测试是从项目维度保证质量 而不是测试阶段 UI自动化 下面简称自动化 基于UI进行自动功能测试 以Web端作为例子 一般的UI功能自动化都是基于HTM
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 20年通过校招进入广州某软件公司 干了接近3年的 功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了3年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • Airtest自动化测试工具

    一开始知道Airtest大概是在年初的时候 当时 看了一下官方的文档 大概是类似Sikuli的一个工具 主要用来做游戏自动化的 通过截图的方式用来解决游戏自动化测试的难题 最近 移动端测试的同事尝试用它的poco库来做自动化 看样子还不错
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!

    自动化关键数据记录 简介 关键数据记录是 Web 自动化测试中的关键部分 它们提供了关于系统行为和执行过程的详细信息 有助于验证用例的正确性 排查问题和确保应用程序的质量 行为日志 行为日志是一种用于记录系统或应用程序的操作和事件的技术 它

随机推荐

  • stm32固件升级之U盘(四)

    目录 序言 什么是IAP升级 STM32代码启动介绍 IAP设计思路 bootloader设计 stm32内部flash分区 移植U盘底层源码 总结 序言 对于嵌入式软件开发来说 U盘离线更新固件是一种常用的更新手段 本篇文章讲述了如何通过
  • MyBatis核心配置文件详解

    siwuxie095 MyBatis 核心配置文件详解 1 核心配置文件的名称和位置没有固定要求 1 位置 建议在 src 下 2 名称 建议为 mybatis config xml 2 核心配置文件的内容全部写在根标签
  • delete 与 deleteLater()

    deleteLater 是QT的产物 而C 标准是没有的 delete是C 与QT公用的 所以很多人 是不太相信deleteLater 的 简单地讲一下deleteLater 的作用吧 很多人应该用过 QPointer 吧 deleteLa
  • 小议关于前端HTML的DTD(文档类型定义)

    小议关于前端HTML的DTD 文档类型定义 什么是文档类型定义 Document Type Defination DTD DTD 是用来定义XML文档结构的 HTML可以看做是XML的一种应用 其中DTD作为标准被保留了下来 规定了XML文
  • 放肆一点又何妨(一)-银川与腾格里沙漠

    此时家里的9420智障大音响放着许巍的 生活不止眼前的苟且 由于我不觉得眼前的生活很苟且 于是乎 切成了许巍的 蓝莲花 显然 一首符合心境的歌曲更能提高我的码字速度 言归正传 沙漠回来之后一直想写游记 记录下这一路上遇到的小伙伴 发生以及听
  • ArcGIS Flex热图

    ArcGIS Flex热图 一直都认为HeatMap是一个伟大的widget 它可以清晰的表达当前的热点区域 无论是直观上还是动态性方面 都是一项了不起的二维地图革新 之前在农业项目中多是等值面的应用 等值面它是通过精确插值计算所得到的结果
  • 【线性代数的几何意义】什么是线性代数

    一 什么是线性代数 线性与非线性 非线性问题则可以在一定基础上转化为线性问题求解 线性空间 对所谓的要满足 加法 和 数乘 等八条公理的元素的集合 线性函数 几何意义 过原点的直线 平面 超平面 代数意义 可加性 比例性 可加性 线性的可加
  • elk笔记19--es python api

    elk笔记19 es python api 1 Elasticsearch 1 1 基础连接 写入 查询 1 2 通过 scroll api 拉取数据 2 Indices 2 1 indices 基础创建 删除 3 Ingest 4 Clu
  • H5 页面 不对 px 进行转 rem

    H5 页面使用 postcss px2rem 对 H5 页面进行适配后 px 样式都会转化为 rem 但有些地方的 px 不需 要转化为 rem 不需要进行转化的在样式后面加 no 或 PX 大写 vant 修改样式使用 no 后 px 还
  • Intellij IDEA--插件配置plugins

    公司网络设置代理 File gt settings gt plugins gt Browse repositories gt HTTP Proxy Settings 设置代理服务的ip 端口 查找插件安装 File gt settings
  • 测试框架jmockit入门(示例demo以及踩坑记录)

    一 什么是jmockit jmockit的优点 1 为了让程序更加可靠 健壮 以及保证在项目重构时前后的业务逻辑保持一致 通俗说就是 尽量避免bug 从而需要编写单元测试 2 一个好的单元测试是指 在能测试覆盖它所有的逻辑代码下 同时实现解
  • GPT时代,一定要收藏的结构化提问技巧

    有一种被称为 SMART 的结构化提问方法 可以帮助你更好的组织和明确提出的问题 SMART 是一个缩写 它代表了以下几个关键元素 S Specific 具体 确保问题具体明确 避免模糊或含糊不清的表达 明确你想要得到的具体信息或解决的问题
  • 在cmd命令行输入python出现Warning:This Python interpreter is in a conda environment, but the environment has

    1 当我们在cmd中输入python后出现warning 意思是python的解释器处于conda环境中 但是该环境没有被激活库可能无法加载 解决办法请看官方网站 https conda io activation 2 官方网站是全英文的
  • android linearlayout weight工作原理

    阿里线下一面中 面试官问我 view的渲染过程 回答不会 然后他就问了linearlayout中 weight的工作原理 weight实际上并不能理解为权重 要把其理解为权重 则要把对应的height width 0dp 设 linearl
  • linux系统安装时间的设置

    sudo cp usr share zoneinfo Asia Shanghai etc localtime 覆盖localtime 文件即可 date 命令即可显示正常命令
  • python爬取抖音用户评论_python实现模拟器爬取抖音评论数据的示例代码

    目标 由于之前和朋友聊到抖音评论的爬虫 demo做出来之后一直没整理 最近时间充裕后 在这里做个笔记 提示 大体思路 通过fiddle app模拟器进行抖音抓包 使用python进行数据整理 安装需要的工具 python3 下载 fiddl
  • 2022年最新全国各省五级行政区划代码及mysql数据库代码(省市区县乡镇村)

    2022年最新全国各省五级行政区划代码及mysql数据库代码 省 市 区县 乡镇 村 原创不易 如有遗漏请留言 1 全国统计用区划代码和城乡划分代码更新维护的标准时点为2021年10月31日 2 全国31省 多达 61W 行数据 3 mys
  • 三次握手、四次挥手过程;TCP保证可靠传输

    三次握手 四次挥手过程 一 TCP 3次握手的过程 1 1 为什么要3次 2次 4次不行吗 二 四次挥手的过程 2 1 为什么要等待2MSL的时间才关闭 三 TCP怎么保证传输过程的可靠性 一 TCP 3次握手的过程 建立连接前server
  • Linux 中 awk 与 sed 操作

    4 awk之文本操作运算 awk是一种操作数据流的行和列的工具 也是一种编程语言 awk有很多内建的功能 比如数组 函数等 这和C语言有相同之处 sudo apt get install gawk awk BEGIN print start
  • 有关白盒测试

    一 对以下程序代码 设计测试用例 分别实现语句覆盖 判定覆盖 条件覆盖 判定 条件覆盖 条件组合覆盖 路径覆盖 void DoWork int x int y int z int k 0 j 0 if x gt 3 z lt 10 k x