黑盒白盒测试

任务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.rhkb.cn/news/490792.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux普通用户,配置python环境及oracle客户端

需求&#xff1a; 有一个python脚本&#xff0c;需要在linux普通用户下运行&#xff0c;脚本中需要连接oracle数据库查询数据 本地环境&#xff1a;centos7.6 Python版本&#xff1a;Python3.6 Oracle版本&#xff1a;12c 配置Python环境 选择对应Python版本进行下载 注意&am…

单元测试-FATAL ERROR in native method: processing of -javaagent failed

文章目录 前言单元测试-FATAL ERROR in native method: processing of -javaagent failed1. 报错信息2. 解决方案 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运…

如何平衡向量检索速度和精度?深度解读HNSW算法

向量检索&#xff08;向量相似性搜索&#xff09;是AI时代最重要的技术之一。其典型应用场景包括&#xff1a;推荐系统、检索增强生成&#xff08;RAG&#xff09;等高级GenAI应用。 向量检索最突出的优势是准确性和速度。 过去&#xff0c;向量搜索通常是用暴力扫描的方式来找…

Python的3D可视化库【vedo】2-2 (plotter模块) 访问绘制器信息、操作渲染器

文章目录 4 Plotter类的方法4.1 访问Plotter信息4.1.1 实例信息4.1.2 演员对象列表 4.2 渲染器操作4.2.1 选择渲染器4.2.2 更新渲染场景 4.3 控制渲染效果4.3.1 渲染窗格的背景色4.3.2 深度剥离效果4.3.3 隐藏线框的线条4.3.4 改为平行投影模式4.3.5 添加阴影4.3.6 环境光遮蔽4…

强化学习的学习笔记

什么是强化学习&#xff1f; 强化学习&#xff08;Reinforcement Learning, RL&#xff09;&#xff0c;又称再励学习、评价学习或增强学习&#xff0c;是机器学习的范式和方法论之一&#xff0c;用于描述和解决智能体&#xff08;agent&#xff09;在与环境的交互过程中通过学…

Leetcode42-环形链表

题目 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使…

ElasticSearch 简介

一、什么是 ElastcSearch&#xff1f; ElasticSearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎。 1.1 ElasticSearh 的基本术语概念 index 索引 索引类似与 mysql 中的数据库&#xff0c;ES 中的索引是存储数据的地方&#xff0c;包含了一堆有相似结构的文档数据…

【学习笔记】桌面浏览器的视口

概念&#xff1a;设备像素和CSS像素 设备像素&#xff1a;设备物理屏幕的像素分辨率&#xff0c;使用screen.width/height获取 这里有四个像素100%缩放&#xff0c;CSS像素完全覆盖设备像素 缩小后&#xff0c;CSS像素开始缩小&#xff0c;意味着一个设备像素覆盖多个CSS像素…

嵌入式软考学习笔记(1)超详细!!!

目录 第一章计算机系统基础知识 1、逻辑运算 2、数的表示 3、总线系统 5、流水线 6、存储器 7、可靠性、校验码 第一章计算机系统基础知识 1、逻辑运算 与&#xff1a;有0则0&#xff0c;全1才1 或&#xff1a;有1则1&#xff0c;全0才0 异或&#xff1a;相同为0…

FFmpeg功能使用

步骤&#xff1a;1&#xff0c;安装FFmpeg Download FFmpeg 在这里点击->Windows builds from gyan.dev&#xff1b;如下图 会跳到另外的下载界面&#xff1a; 在里面下拉选择点击ffmpeg-7.1-essentials_build.zip&#xff1a; 即可下载到FFmpeg&#xff1b; 使用&#…

接口开发笔记-WebApi

一、基础概念与原理 1、WebAPI的基本概念。 WebAPI是一种基于HTTP协议的网络应用程序接口&#xff0c;它使用JSON或XML格式来传输数据。WebAPI是服务器端应用程序&#xff0c;允许客户端应用程序通过HTTP请求来访问服务器上的数据。WebAPI支持RESTful服务&#xff0c;是构建这…

文件转曲,限制PDF文件编辑的最佳方案!

随着数字化进程的推进&#xff0c;PDF文件凭借其多样化的功能和优越的兼容性已经被广泛使用&#xff0c;成为了现代文档交流和存储的重要工具&#xff0c;满足了不同用户和行业的需求。 虽然PDF格式文件的功能很多&#xff0c;常见的比如阅读、编辑、加密、转换、还可用于印刷…

数据仓库工具箱—读书笔记01(数据仓库、商业智能及维度建模初步)

数据仓库、商业智能及维度建模初步 记录一下读《数据仓库工具箱》时的思考&#xff0c;摘录一些书中关于维度建模比较重要的思想与大家分享&#x1f923;&#x1f923;&#x1f923; 博主在这里先把这本书"变薄"~有时间的小伙伴可以亲自再读一读&#xff0c;感受一下…

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…

FireFox火狐浏览器企业策略禁止更新

一直在用火狐浏览器&#xff0c;但是经常提示更新&#xff0c;进入浏览器右上角就弹出提示&#xff0c;比较烦。多方寻找&#xff0c;一直没有找到合适的方案&#xff0c;毕竟官方没有给出禁用检查更新的选项&#xff0c;甚至about:config里都没有。 最终找到了通过企业策略控…

java+springboot+mysql高校社团网

项目介绍&#xff1a; 使用javaspringbootmysql开发的高校社团网&#xff0c;系统包含管理员、学生角色&#xff0c;功能如下&#xff1a; 管理员&#xff1a;登录系统&#xff1b;首页&#xff1b;用户管理&#xff1b;社团分类管理&#xff1b;社团信息管理&#xff08;社团…

[Maven]构建项目与高级特性

有关于安装配置可以看我的另一篇文章&#xff1a;Maven下载安装配置与简介。 构建项目的生命周期和常用命令 这一节的内容熟记即可&#xff0c;要用了认得出来即可。 在Maven出现之前&#xff0c;项目构建的生命周期就已经存在。对项目进行清理、编译、测试、部署等一系列工作…

多分类交叉熵与稀疏分类交叉熵

总结: 标签为 One-hot 编码的多分类问题,用分类交叉熵对于标签为整数的多分类问题,用稀疏分类交叉熵稀疏分类交叉熵内部会将整数标签转换为 One-hot 编码,而如果标签已经是 One-hot 编码的形式,再使用稀疏分类交叉熵就会多此一举。 算例 假设我们有三个类别:A、B 和 C。…

【学一点儿前端】本地或jenkins打包报错:getaddrinfo ENOTFOUND registry.nlark.com

问题 今天jenkins打包一个项目&#xff0c;发现报错了 error An unexpected error occurred: “https://registry.nlark.com/xxxxxxxxxx.tgz: getaddrinfo ENOTFOUND registry.nlark.com”. 先写解决方案 把yarn.lock文件里面的registry.nlark.com替换为registry.npmmirror.…

前端(模块化)

未使用模块化 定义两个js文件simple1.js和simple2.js let a11; let a11; 两个js文件变量重名 在html测试 传统引入js文件 <script src"./simple1.js"></script> <script src"./simple2.js"></script> 浏览器报错 使用模块…