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

软件工程:黑盒测试等价分类法相关知识和多实例分析

目录

一、黑盒测试和等价分类法

1. 黑盒测试

2. 等价分类法

二、黑盒测试等价分类法实例分析

1. 工厂招工年龄测试

2. 规定电话号码测试

3. 八位微机测试

4. 三角形判断测试


一、黑盒测试和等价分类法

1. 黑盒测试

黑盒测试就是根据被测试程序功能来进行测试,所以也称为功能测试。

黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。

2. 等价分类法

所谓等价分类,就是把输入数据的可能值划分为若干等价类,使每类中的任何一个测试用例,都能代表同一等价类中的其他测试用例。换句话说,如果从某一等价类中任意选出一个测试用例未能发现程序的错误,就可以合理地认为使用该类中的其他测试用例也不会发现程序的错误。

采用这一技术要注意以下两点:

其一,划分等价类不仅要考虑代表有效输入值的有效等价类,还需考虑代表无效输入值的无效等价类;

其二,每一无效等价类至少要用一个测试用例,不然就可能漏掉某一类错误,但允许若干有效等价类合用同一个测试用例,以便进一步减少测试的次数。

二、黑盒测试等价分类法实例分析

1. 工厂招工年龄测试

某工厂公开招工,规定报名者年龄应在16 周岁至35周岁之间(到2008年3月止)。若出生年月不在上述范围内,将拒绝接受,并显示“年龄不合格”等出错信息。试用等价分类法设计对这一程序功能的测试用例。

第一步:划分等价类。假定已知出生年月由6位数字字符表示,前4位代表年后2位代表月,则可以划分为3个有效等价类、7个无效等价类。 

第二步:设计有效等价类需要的测试用例。①⑤⑧等3个有效等价类可以共用一个测试用例。

第三步:为每一无效等价类至少设计一个测试用例。本例具有7个无效等价类,至少需要7个测试用例。

2. 规定电话号码测试

某城市电话号码由三部分组成。它们的名称和内容分别是:

地区码:空白或三位数字;

前  缀:非‘0’或‘1’的三位数字;

后  缀:4位数字。

假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。

① 划分等价类: 

② 设计测试用例:

3. 八位微机测试

某一8位微机,其十六进制常数定义为:以0x或0X开头的数是十六进制整数,其值的范围是-7f~7f(表示十六进制的大小写字母不加区别),如0X13,0X6A,-0X3c。

① 划分等价类并编号,如下表所示: 

② 为合理等价类设计测试用例,表中有三个合理等价类,设计两个例子:

③ 为每个不合理等价类至少设计一个测试用例:

4. 三角形判断测试

根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。

"一个程序读入 3 个整数,它们分别代表一个三角形的 3 个边长。该程序判断所输入的整数是否构成一个三角形,以及该三角形是一般的、等腰的或等边的,并将结果打印出来。"

要求:设三角形的 3 条边分别为 A、B、C

① 列出等价类表:

② 设计测试用例

用例 1:

        输入【3,4,5】覆盖等价类(1),输出结果为构成一般三角形。

用例 2:三者取一

        输入【0,1,2】覆盖等价类(2),输出结果为不构成三角形。

        输入【1,0,2】覆盖等价类(2),输出结果为不构成三角形。

        输入【1,2,0】覆盖等价类(2),输出结果为不构成三角形。

用例 3:三者取一

        输入【1,2,3】覆盖等价类(3),输出结果为不构成三角形。

        输入【1,3,2】覆盖等价类(3),输出结果为不构成三角形。

        输入【3,1,2】覆盖等价类(3),输出结果为不构成三角形。

用例 4:三者取一

        输入【3,3,4】覆盖等价类(1)(4),输出结果为等腰三角形。

        输入【3,4,4】覆盖等价类(1)(4),输出结果为等腰三角形。

        输入【3,4,3】覆盖等价类(1)(4),输出结果为等腰三角形。

用例 5:

        输入【3,4,5】覆盖等价类(1)(5),输出结果为不是等腰三角形。

用例 6:

        输入【3,3,3】覆盖等价类(1)(6),输出结果为等边三角形。

用例 7:三者取一

        输入【3,4,4】覆盖等价类(1)(4)(7),输出结果为不是等边三角形。

        输入【3,4,3】覆盖等价类(1)(4)(7),输出结果为不是等边三角形。

        输入【3,3,4】覆盖等价类(1)(4)(7),输出结果为不是等边三角形。

相关文章:

软件工程:黑盒测试等价分类法相关知识和多实例分析

目录 一、黑盒测试和等价分类法 1. 黑盒测试 2. 等价分类法 二、黑盒测试等价分类法实例分析 1. 工厂招工年龄测试 2. 规定电话号码测试 3. 八位微机测试 4. 三角形判断测试 一、黑盒测试和等价分类法 1. 黑盒测试 黑盒测试就是根据被测试程序功能来进行测试&#xf…...

stable-diffusion 学习笔记

必看文档: 万字长篇!超全Stable Diffusion AI绘画参数及原理详解 - 知乎 (提示词)语法控制 常用语法: 加权:() 或 {} 降权:[](word)//将括号内的提示词权重提高 1.1 倍 ((word))//将括号内的提示…...

手写webpack核心原理,支持typescript的编译和循环依赖问题的解决

主要知识点 babel读取代码的import语句算法:bfs遍历依赖图为浏览器定义一个require函数的polyfill算法:用记忆化搜索解决require函数的循环依赖问题 Quick Start GitHub:https://github.com/Hans774882968/mini-webpack npm install npm…...

开箱即用之MyBatisPlus XML 自定义分页

调用方法 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;public Page<User> queryListByPage(User user) { Page<User> page new Page<>(1, 12); return userMapper.queryListByPage(page, user); } mapper接口 import co…...

GPT应用开发:运行你的第一个聊天程序

本系列文章介绍基于OpenAI GPT API开发应用的方法&#xff0c;适合从零开始&#xff0c;也适合查缺补漏。 本文首先介绍基于聊天API编程的方法。 环境搭建 很多机器学习框架和类库都是使用Python编写的&#xff0c;OpenAI提供的很多例子也是Python编写的&#xff0c;所以为了…...

力扣刷MySQL-第一弹(详细解析)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…...

Xcode 15 for Mac:超越开发的全新起点

作为一名开发人员&#xff0c;你是否正在寻找一款强大而高效的开发工具&#xff0c;来帮助你在Mac上构建出卓越的应用程序&#xff1f;那么&#xff0c;Xcode 15就是你一直在寻找的答案。 Xcode 15是苹果公司最新推出的一款集成开发环境&#xff08;IDE&#xff09;&#xff0…...

2021腾讯、华为前端面试题集(基础篇)

Vue 面试题 生命周期函数面试题 1.什么是 vue 生命周期2.vue 生命周期的作用是什么 3.第一次页面加载会触发哪几个钩子 4.简述每个周期具体适合哪些场景 5.created 和 mounted 的区别 6.vue 获取数据在哪个周期函数 7.请详细说下你对 vue 生命周期的理解&#xff1f; **vue 路由…...

怎么修改或移除WordPress后台仪表盘概览底部的版权信息和主题信息?

前面跟大家分享『WordPress怎么把后台左上角的logo和评论图标移除&#xff1f;』和『WordPress后台底部版权信息“感谢使用 WordPress 进行创作”和版本号怎么修改或删除&#xff1f;』&#xff0c;其实在WordPress后台仪表盘的“概览”底部还有一个WordPress版权信息和所使用的…...

计算机三级(网络技术)——应用题

第一题 61.输出端口S0 &#xff08;直接连接&#xff09; RG的输出端口S0与RE的S1接口直接相连构成一个互联网段 对172.0.147.194和172.0.147.193 进行聚合 前三段相同&#xff0c;将第四段分别转换成二进制 11000001 11000010 前6位相同&#xff0c;加上前面三段 共30…...

Node.js基础知识点(四)

本节介绍一下最简单的http服务 一.http 可以使用Node 非常轻松的构建一个web服务器&#xff0c;在 Node 中专门提供了一个核心模块&#xff1a;http http 这个模块的就可以帮你创建编写服务器。 1. 加载 http 核心模块 var http require(http) 2. 使用 http.createServe…...

持久双向通信网络协议-WebSocket-入门案例实现demo

1 介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短连接&#xff0…...

LV.13 D10 Linux内核移植 学习笔记

具体实验步骤在lv13day10 实验十 一、Linux内核概述 1.1 内核与操作系统 内核 内核是一个操作系统的核心&#xff0c;提供了操作系统最基本的功能&#xff0c;是操作系统工作的基础&#xff0c;决定着整个系统的性能和稳定性 操作系统 操作系统是在内核的基础上添…...

STM32面试体验和题目

目录 一、说一下你之前的工作主要干了什么&#xff1f; 二、stm32有关的知识点 1.stm32的外设有哪一些 2.你的毕业论文的项目里面是怎么设计的 三&#xff0c;C语言的考察 1.写一个结构体&#xff08;结构体的内容自由发挥&#xff09; 2.写一个指针型的变量 3.结构体是…...

微软.NET、.NET Framework和.NET Core联系和区别

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;我小时候喜欢看小人书&#xff08;连环画&#xff09;&#xff0c;在那个没有电视、没有手机的年代&#xff0c;这是…...

Shell脚本同时调用#!/bin/bash和#!/usr/bin/expect

如果你想在一个脚本中同时使用bash和expect&#xff0c;你可以将expect部分嵌入到bash脚本中。以下是一个示例&#xff1a; #!/bin/bash# 设置MySQL服务器地址、端口、用户名和密码 MYSQL_HOST"localhost" MYSQL_PORT"3306" MYSQL_USER"your_usernam…...

C++ Webserver从零开始:基础知识(一)——Linux网络编程基础API

目录 前言 一.socket地址API 1.主机字节序和网络字节序 2.通用socket地址 3.专用socket地址 二.创建socket 三.绑定socket&#xff08;命名socket) 四.监听socket 五.接受连接&#xff08;服务端&#xff09; 六.发起连接&#xff08;客户端&#xff09; 七.关闭连接…...

cookie和session的工作过程和作用:弥补http无状态的不足

cookie是客户端浏览器保存服务端数据的一种机制。当通过浏览器去访问服务端时&#xff0c;服务端可以把状态数据以key-value的形式写入到cookie中&#xff0c;存储到浏览器。浏览器下次去服务服务端时&#xff0c;就可以把这些状态数据携带给服务器端&#xff0c;服务器端可以根…...

【蓝桥杯选拔赛真题30】C++字母转换 第十三届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

目录 C/C++字母转换 一、题目要求 1、编程实现 2、输入输出...

资产负债表#通俗易懂

资产负债表&#xff08;the Balance Sheet&#xff09;亦称财务状况表&#xff0c;表示企业在一定日期&#xff08;通常为各会计期末&#xff09;的财务状况&#xff08;即资产、负债和业主权益的状况&#xff09;的主要会计报表。 (99 封私信 / 11 条消息) 能通俗易懂的给小白…...

面部SDF阴影锯齿问题的探索

近期做的一些工作涉及到面部SDF阴影&#xff0c;网上普遍做法是不做插值&#xff0c;直接Step硬性裁剪&#xff0c;不是很理解为什么不用插值&#xff0c;于是我通过SmoothStep做了简单修改&#xff0c;看下效果。 看上去还可以是因为gif有压缩&#xff0c;但面部SDF阴影做插值…...

8051项目代码流程图工具选择与应用指南

1. 流程图工具概述接手一个大型8051项目时&#xff0c;快速理解代码结构是每个嵌入式工程师都会面临的挑战。我在处理遗留代码时&#xff0c;第一件事就是寻找合适的流程图工具来可视化程序逻辑。市面上确实存在多种能够解析C51代码并生成流程图的软件&#xff0c;但选择时需要…...

Sunshine游戏串流实战指南:构建跨平台私人云游戏服务器完整方案

Sunshine游戏串流实战指南&#xff1a;构建跨平台私人云游戏服务器完整方案 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 你是否曾经希望将高配置PC上的游戏体验延伸到客厅电视、…...

AI Agent 架构设计与实现原理深度解析

AI Agent 架构设计与实现原理深度解析 摘要 本文深入解析 AI Agent 的核心架构设计、关键组件原理及主流实现模式。从 ReAct 推理循环到记忆系统设计&#xff0c;从工具调用机制到生产级部署考量&#xff0c;全面剖析构建可靠智能体的技术要点。读者将掌握 AI Agent 的底层原…...

SQL 语句:从产生、发展到内容全景

引言&#xff1a;数据世界的通用语言 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是当今数据领域最核心、最通用的语言。无论是数据分析师、后端工程师还是数据科学家&#xff0c;都离不开 SQL。它就像数据世界的“普通话”&#xff0c;连…...

别再用curl硬刚了!3种主流语言(Python/Node.js/Java)调用ChatGPT API的工业级封装方案

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ChatGPT API调用方法概览与工业级封装核心原则 ChatGPT API 作为 OpenAI 提供的标准化接口&#xff0c;支持文本生成、对话管理、函数调用等多种能力。其核心调用方式基于 RESTful HTTP 请求&#xff0c;需通过…...

【收藏干货】2026年AI Coding全面爆发!程序员终极职业升级攻略,告别被替代焦虑

2026年&#xff0c;AI编码技术迎来规模化落地爆发期&#xff0c;行业彻底告别“人工纯编码”的传统模式。对于所有程序员而言&#xff0c;当下最核心的生存与发展策略&#xff0c;早已不是埋头敲代码&#xff0c;而是从“被动写代码的执行者”全面升级为“主动驾驭AI的价值创造…...

【linux学习】linux工具篇(下)

Linux调试器-gdb使用&#xff0c;Linux项目自动化构建工具-make/Makefile我是程序员小青蛙&#xff0c;下面分享linux的工具利用前言程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xf…...

Claude Mythos:首个具备自主渗透能力的通用AI安全模型

1. 这不是一次普通升级&#xff1a;Mythos 的能力跃迁到底意味着什么 如果你过去三年一直在跟进大模型的演进节奏&#xff0c;大概率会记得2023年Claude 2发布时那种“稳扎稳打”的观感——推理更连贯、长文本更可靠、代码能力有提升&#xff0c;但整体仍属于渐进式优化。2024年…...

Burp Suite客户端证书失效的三大TLS握手决策点解析

1. 这不是证书问题&#xff0c;是Burp对TLS握手阶段的“信任错位”你有没有遇到过这样的场景&#xff1a;在Burp Suite里配置好了Client SSL Certificate&#xff0c;也勾选了“Use client certificate for all requests”&#xff0c;可一发请求&#xff0c;目标服务器就直接返…...