黑盒白盒测试

news2024/12/16 17:44:03

任务1 黑盒测试之等价类划分法

【任务需求】

【问题】例:某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。如何用等价类划分法设计测试用例, 来测试程序的日期检查功能?

【实验效果图】

  • 有效等价类
    • 年份在有效范围内且月份在有效范围内:代表符合系统要求能正常处理的日期范围,即 2003 年 1 月至 2008 年 12 月的所有日期组合。例如 200301、200812 等。
  • 无效等价类
    • 年份小于 2003 年:如 200212 等,输入的年份早于系统限定的起始年份,不符合要求。
    • 年份大于 2008 年:像 200901 等,输入的年份超出了系统限定的结束年份,不应被接受。
    • 月份小于 1 月:例如 200300,输入的月份小于有效范围的起始月份,属于无效输入。
    • 月份大于 12 月:比如 200313,超出了正常月份的范围,不符合日期规范。
    • 非 6 位数字字符组成:像 abc123、2003-01(包含非数字字符或格式不符合要求)等情况,不符合系统规定的输入格式。

测试用例编号

输入日期值

预期输出结果

是否通过测试(示例,实际需执行后填写)

等价类划分

1

200301

系统正常处理该日期对应的报表

(待执行测试确认)

有效等价类(规定范围内正常日期)

2

200812

系统正常处理该日期对应的报表

(待执行测试确认)

有效等价类(规定范围内正常日期)

3

200212

显示输入错误信息

(待执行测试确认)

无效等价类(年份小于规定起始年份)

4

200901

显示输入错误信息

(待执行测试确认)

无效等价类(年份大于规定结束年份)

5

200300

显示输入错误信息

(待执行测试确认)

无效等价类(月份小于规定起始月份)

6

200313

显示输入错误信息

(待执行测试确认)

无效等价类(月份大于规定结束月份)

7

123abc

显示输入错误信息

(待执行测试确认)

无效等价类(输入非 6 位数字字符)

任务2 白盒测试之逻辑覆盖

【任务需求】

【问题】假设有一个简单的Java函数,用于计算两个数的最大值,并考虑边界条件和异常情况。函数代码如下:


(1)给出满足语句覆盖和条件组合覆盖的测试用例。

(2)设计驱动程序main函数,运行题(1)中的测试用例,并将测试结果截图。

【实验效果图】

  1. 语句覆盖和条件组合覆盖的测试用例
    1. 语句覆盖
      1. 语句覆盖要求程序中的每一条可执行语句至少被执行一次。
      2. 对于给定的max函数,有三条可执行语句:return a;(当a > b时),return b;(当a < b时),return a;(当a == b时)。
      3. 测试用例:
        1. 输入a = 5, b = 3,预期结果:5(覆盖a > b的情况)。
        2. 输入a = 3, b = 5,预期结果:5(覆盖a < b的情况)。
        3. 输入a = 5, b = 5,预期结果:5(覆盖a == b的情况)。
    2. 条件组合覆盖
      1. 条件组合覆盖要求考虑所有可能的条件组合。
      2. max函数中,有两个条件:a > ba < b
      3. 可能的条件组合:
        1. a > b为真,a < b为假(a > b)。
        2. a > b为假,a < b为真(a < b)。
        3. a > b为假,a < b为假(a == b)。
      4. 测试用例:
        1. 输入a = 5, b = 3,预期结果:5(覆盖a > b)。
        2. 输入a = 3, b = 5,预期结果:5(覆盖a < b)。
        3. 输入a = 5, b = 5,预期结果:5(覆盖a == b)。

将测试给代码运行截图得

任务3 白盒测试之基本路径覆盖

【任务需求】

【问题】有一个程序,根据用户输入的三个边长(a, b, c)来判断这三个边长是否能构成三角形,并进一步判断该三角形的类型(等边三角形、等腰三角形或普通三角形)。如果不能构成三角形,则输出相应的提示信息。

(1)给出被测模块的程序流程图。

(2)设计满足基本路径覆盖的测试用例设计。

【实验效果图】

(2)设计满足基本路径覆盖的测试用例设计。

  • 基本路径覆盖要求覆盖程序中所有可能的独立路径。
  • 对于上述程序,有以下几条独立路径:
    • 路径 1:输入边长,判断能构成三角形,判断为等边三角形
      • 测试用例:a = 3, b = 3, c = 3
      • 预期输出:“等边三角形”
    • 路径 2:输入边长,判断能构成三角形,判断为等腰三角形(非等边)
      • 测试用例:a = 3, b = 3, c = 4
      • 预期输出:“等腰三角形”
    • 路径 3:输入边长,判断能构成三角形,判断为普通三角形
      • 测试用例:a = 3, b = 4, c = 5
      • 预期输出:“普通三角形”
    • 路径 4:输入边长,判断不能构成三角形
      • 测试用例:a = 1, b = 2, c = 4
      • 预期输出:“不能构成三角形!”

【实验思考】

  1. 白盒测试与黑盒测试的区别?
  2. 三种黑盒测试方法比较?
  1. 白盒测试与黑盒测试的区别

(1)测试对象的关注点

  • 白盒测试
    • 白盒测试主要关注程序的内部结构和逻辑。它是基于代码的测试,测试人员需要了解程序内部的代码实现细节,如编程语言、算法、数据结构、控制流和数据流等。例如,在测试一个排序算法时,白盒测试人员会检查算法的实现步骤,如比较和交换元素的操作是否正确执行。
    • 测试用例的设计是根据程序的内部逻辑来进行的,通常会覆盖程序中的不同执行路径、条件分支、循环等结构,以确保程序的每个部分都能正确运行。
  • 黑盒测试
    • 黑盒测试侧重于软件的外部功能,不关心程序内部的实现细节。测试人员将软件系统看作一个 “黑盒子”,只关注软件的输入和输出。例如,对于一个在线购物系统,黑盒测试人员主要关注用户的操作(如添加商品到购物车、下单、支付等)以及系统相应的反馈(如购物车内容更新、订单确认信息、支付成功提示等)。
    • 测试用例的设计是基于软件的功能需求规格说明书,通过对各种可能的输入情况进行组合和分析,来验证软件是否满足功能要求。

(2)测试用例设计方法

  • 白盒测试
    • 常用的设计方法包括语句覆盖、判定覆盖、条件覆盖、路径覆盖等。例如,路径覆盖要求设计的测试用例能够覆盖程序中所有可能的执行路径。以一个简单的 if - else 语句嵌套循环的程序为例,测试人员需要找出所有可能的路径组合,包括不同条件下循环的执行次数和路径走向。
  • 黑盒测试
    • 主要有等价类划分法、边界值分析法、错误推测法等。等价类划分法是将输入数据划分为有效等价类和无效等价类,然后从每个等价类中选取代表数据进行测试。例如,在测试一个要求输入年龄(18 - 60 岁)的系统功能时,18 - 60 岁这个区间就是有效等价类,小于 18 岁和大于 60 岁就是无效等价类。

(3)测试人员所需知识

  • 白盒测试
    • 要求测试人员具备较强的编程知识,能够读懂和理解程序代码。他们需要熟悉编程语言的语法、数据类型、控制结构等,并且要了解程序所采用的算法和数据结构。例如,测试一个用 Java 编写的复杂数据处理程序,测试人员需要精通 Java 语言。
  • 黑盒测试
    • 测试人员更侧重于业务知识和功能需求的理解。他们需要清楚软件系统的功能用途、用户操作流程和预期的输出结果。对于一个企业资源规划(ERP)软件,黑盒测试人员要了解企业的业务流程,如采购、销售、库存管理等环节的功能需求。

(4)发现的缺陷类型

  • 白盒测试
    • 能够发现程序内部逻辑错误,如算法错误、条件判断错误、循环终止条件错误等。例如,在一个计算利息的程序中,白盒测试可能会发现计算复利的算法实现有误。
  • 黑盒测试
    • 主要发现功能缺陷,如软件功能不符合需求规格说明书的要求、用户界面不友好、系统对异常输入处理不当等。例如,在一个手机应用程序中,黑盒测试可能会发现某个功能按钮点击后没有正确的响应,或者在输入特殊字符时系统出现崩溃。

  1. 三种黑盒测试方法比较

(1)等价类划分法

  • 优点
    • 可以有效减少测试用例的数量。通过将输入数据划分为等价类,只需要从每个等价类中选取少数代表性的测试数据,就能够在一定程度上覆盖所有可能的输入情况。例如,在测试一个输入范围为 1 - 100 的整数输入框时,不需要对 1 - 100 中的每个整数进行测试,只需要从有效等价类(1 - 100)和无效等价类(小于 1 和大于 100)中选取几个典型数据即可。
    • 能够关注输入数据的范围和边界,有助于发现边界附近的错误。因为在划分等价类时,边界值往往是划分的关键依据。
  • 缺点
    • 可能会遗漏一些特殊情况。虽然等价类划分能够覆盖大部分情况,但有些复杂的、特殊的输入组合可能没有被充分考虑。例如,在测试一个包含多个输入字段的表单时,某些输入字段之间可能存在相互关联的特殊情况,这些情况可能在划分等价类时被忽略。
    • 对于等价类的划分需要一定的经验和对需求的深入理解,如果划分不合理,会导致测试用例不全面或冗余。

(2)边界值分析法

  • 优点
    • 着重关注边界情况,而边界值往往是程序最容易出错的地方。例如,在测试一个循环结构,循环次数的边界值(如最小次数、最大次数)是测试的重点,通过测试这些边界值能够有效地发现程序在边界条件下的错误。
    • 可以作为等价类划分法的补充,与等价类划分法结合使用能够更全面地测试软件。通常在等价类的边界上选取测试数据,能够更好地保证测试的完整性。
  • 缺点
    • 只关注边界值,可能会忽略非边界情况。如果程序在非边界值的输入情况下也存在错误,边界值分析法可能无法发现这些错误。
    • 对于复杂的、多变量的输入情况,边界值的确定和组合会变得复杂。例如,对于一个有多个输入参数且每个参数都有自己的边界的函数,确定所有边界值的组合来进行测试是一项繁琐的工作。

(3)错误推测法

  • 优点
    • 充分利用测试人员的经验和直觉。测试人员根据以往的测试经验、对软件功能的理解以及对常见错误的认识,推测软件可能出现错误的地方,然后有针对性地设计测试用例。例如,对于一个文件上传功能,测试人员根据经验推测可能在文件格式不支持、文件过大、网络不稳定等情况下出现错误,从而设计相应的测试用例。
    • 可以发现一些其他测试方法不易发现的错误。尤其是对于一些特殊的、与业务逻辑紧密相关的错误,或者是在软件设计和实现过程中容易被忽略的细节错误。
  • 缺点
    • 对测试人员的经验和能力依赖较大。如果测试人员经验不足或对软件系统的了解不够深入,可能会遗漏很多可能出现错误的情况。

推测的准确性难以保证。即使是经验丰富的测试人员,也很难保证能够准确地推测出所有可能的错误情况,而且软件的复杂性也可能导致一些新的、未被推测到的错误出现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2260630.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习物体检测之YOLOV5源码解读

V5比前面版本偏工程化,项目化,更贴合实战 一.V5版本项目配置 (1)整体项目概述 首先github直接查找yolov5&#xff0c;下载下来即可。在训练时&#xff0c;数据是怎么处理的&#xff1f;网络模型架构是怎么设计的(如各层的设计)&#xff1f;yolov5要求是大于python3.8与大于等…

Go 怎么做性能优化芝麻开门篇

一、性能优化的流程 我们在对某个功能&#xff08;或单个接口&#xff09;做性能优化的时候。一般是该功能&#xff08;或接口&#xff09;性能无法满足我们的业务要求&#xff0c;所以被迫优化。在开始优化之前&#xff0c;我们需要明白一些理论知识。 1、常见的性能优化指标…

【Elasticsearch入门到落地】4、Elasticsearch的安装

接上篇《3、es与mysql的概念对比》 上一篇我们学习了Elasticsearch与Mysql的概念与区别。本篇我们来进行Elasticsearch的环境准备及软件安装。 一、环境准备 如果我们没有自己的Linux服务器&#xff0c;且现在正在使用的是Windows操作系统的电脑&#xff0c;那么首先我们需要安…

CRYPTO密码学

加解密算法/编码 哈希算法SM3SHA-3base家族GBGB18030GB2312GBKutf家族恺撒二进制分区法unicodeASCIIDSADSSCRC32校验对称非对称gbk编码h264SEA初探smc动态代码保护四方密码曼彻斯特编码剖析基本概念什么是编码?什么是加密与解密寻找银弹-有没有无法破解的密码通过Java代码入门…

我们来学mysql -- 探讨win安装方式(安装篇)

题记 书接上回&#xff0c;在我们来学mysql – 闲聊(安装篇)中&#xff0c;拿到安装包&#xff0c;当宝贝一样揣在怀里 然而&#xff0c;还没捂热乎&#xff0c;得粉丝秘报&#xff0c;U哥&#xff0c;上篇文章用了滞后的官方文档&#xff0c;哈哈哈…内心的小倔强&#xff0c…

pip 如何快速安装包

一、问题描述 当使用Python通过pip安装一些包时&#xff0c;pip默认是访问的国外的源&#xff0c;但在国内访问又是异常的慢&#xff0c;而且还经常因为网络问题导致安装失败&#xff0c;比如下面通过pip install jupyter来安装jupyter Notebook&#xff0c;这网速真的超级慢&…

CodeBook-Ubuntu-sandbox Linux 沙箱服务 docker pull

CodeBook-Ubuntu-sandbox Linux 沙箱服务 开源技术栏 这是一个多用户的 Linux SSH 服务沙箱&#xff0c;支持启动时动态加载用户列表&#xff0c;并可随时更新用户信息。每个用户仅能修改自己目录下的文件&#xff0c;确保了环境的安全性和隔离性。 目录 文章目录 CodeBook-…

【echarts】数据过多时可以左右滑动查看(可鼠标可滚动条)

1. 鼠标左右拖动 在和 series 同级的地方配置 dataZoom&#xff1a; dataZoom: [{type: inside, // inside 鼠标左右拖图表&#xff0c;滚轮缩放&#xff1b; slider 使用滑动条start: 0, // 左边的滑块位置&#xff0c;表示从 0 开始显示end: 60, // 右边的滑块位置&#xf…

【数据分享】2014-2024年我国POI兴趣点数据(免费获取/来源于OSM地图)

POI是Point of Interest的简称&#xff0c;意为“兴趣点”&#xff0c;是互联网电子地图中用于表示特定位置的地理实体的核心数据类型。POI通常用于标注具体地点&#xff0c;例如餐厅、商场、学校、医院、景点等。这些数据以点的形式呈现&#xff0c;并附带详细属性信息&#x…

使用html和JavaScript实现一个简易的物业管理系统

码实现了一个简易的物业管理系统&#xff0c;主要使用了以下技术和功能&#xff1a; 1.主要技术 使用的技术&#xff1a; HTML: 用于构建网页的基本结构。包括表单、表格、按钮等元素。 CSS: 用于美化网页的外观和布局。设置字体、颜色、边距、对齐方式等样式。 JavaScript…

SSM 垃圾分类系统——高效分类的科技保障

第五章 系统功能实现 5.1管理员登录 管理员登录&#xff0c;通过填写用户名、密码、角色等信息&#xff0c;输入完成后选择登录即可进入垃圾分类系统&#xff0c;如图5-1所示。 图5-1管理员登录界面图 5.2管理员功能实现 5.2.1 用户管理 管理员对用户管理进行填写账号、姓名、…

ip_done

文章目录 路由结论 IP分片 数据链路层重谈Mac地址MAC帧报头局域网的通信原理MSS&#xff0c;以及MAC帧对上层的影响ARP协议 1.公司是不是这样呢? 类似的要给运营商交钱&#xff0c;构建公司的子网&#xff0c;具有公司级别的入口路由器 2&#xff0e;为什么要这样呢?? IP地…

排序算法(5):归并排序

问题 排序 [30, 24, 5, 58, 18, 36, 12, 42, 39] 归并排序 归并排序采用分治法&#xff0c;将序列分成若干子序列&#xff0c;每个子序列有序后再合并成有序的完整序列。 在数组排序中&#xff0c;如果只有一个数&#xff0c;那么它本身就是有序的。如果有两个数&#xff0…

uniapp打包apk教程

文章目录 一、uniapp是什么&#xff1f;二、使用步骤1.需要有Java环境&#xff0c;安装jdk2.安装hbuilderx开发工具3.自签证书4.使用云打包 总结 一、uniapp是什么&#xff1f; ‌uni-app是一个基于Vue.js的跨平台应用开发框架&#xff0c;允许开发者使用一套代码同时构建iOS、…

Titanic - Machine Learning from Disaster————泰坦尼克号幸存者预测————逻辑回归、随机森林和梯度提升树(XGBoost、LightGBM)

目录 1. 引言 2. 理解 Titanic 数据集 目标变量 数据的初步探索 3. 数据预处理 3.1 处理缺失值 3.2 处理类别型特征 3.3 创建新特征 3.4 删除无关特征 3.5 确保所有特征都是数值型 4. 模型选择与训练 4.1 数据集拆分 4.2 选择和训练模型 4.2.1 逻辑回归模型 4.2…

MySQL笔记--多表查询

1--多表关系 多表关系基本上分为三种&#xff1a; 一对多&#xff08;多对一&#xff09;&#xff1b; 多对多&#xff1b; 一对一&#xff1b; 1-1--多对一 在多的一方建立外键&#xff0c;指向一的一方的主键&#xff1b; 1-2--多对多 建立第三张中间表&#xff0c;中间表至少…

利用git上传项目到GitHub

GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了&#xff0c;非常受欢迎&#xff0c;比之svn更好。 GitHub可以免费使用&#xff0c;并且快速稳定。 利用GitHub&#xff0c;你可以将项目存档&#xff0c;与其他人分享交流&#xff0c;并让其他开发者帮助你一…

Gate学习(7)引入体素源

一、从GitHub下载体素源模型源码 下载地址&#xff1a;BenAuer2021/Phantoms-for-Nuclear-Medicine-Imaging-Simulation&#xff1a;用于核医学成像应用的模型&#xff08;闪烁显像、SPECT 和 PET&#xff09; --- BenAuer2021/Phantoms-For-Nuclear-Medicine-Imaging-Simulat…

快速启动Go-Admin(Gin + Vue3 + Element UI)脚手架管理系统

Go-Admin 是一个基于 Gin Vue Element UI & Arco Design & Ant Design 的前后端分离权限管理系统脚手架。它包含了多租户支持、基础用户管理功能、JWT 鉴权、代码生成器、RBAC 资源控制、表单构建、定时任务等功能。该项目的主要编程语言是 Go 和 JavaScript。 ps&a…

epoll反应堆模型

epoll反应堆模型 基于该视频所做笔记&#xff0c;视频里面讲的也挺难的&#xff0c;最好先让chat给你梳理一遍整体的代码再去看视频吧 15-epoll反应堆模型总述_bilibili_哔哩哔哩_bilibili 文章目录 epoll反应堆模型1.epoll反应堆模型概述2.具体讲解1.myevent_s结构体2.超时检…