【软件测试基础】黑盒测试(知识点 + 习题 + 答案)

《 软件测试基础持续更新中》

对于黑盒测试这一章,等价类划分、边界值测试、决策表、场景法,这四种是最容易出大题的,其他几种考察频率很低。下述的一些例题只是经典例题,掌握方法后,还要多加练习!

目录

3.1 等价类划分(重要)

【经典例题】三角形问题的等价类划分: 

3.2 边界值测试(重要)

【经典例题】登录界面

3.3 组合测试

3.4 决策表(重要)

【经典例题】订购单的检查

3.5 因果图

3.6 场景法(重要)

 【经典例题】围绕ATM机取款功能设计测试用例

3.7 状态转换法

3.8 错误猜测法

3.9 用例方法使用总结


黑盒测试,又称为功能测试数据驱动测试,是把测试对象当作看不见内部的黑盒。在完全不考虑程序内容结构和处理过程的情况下,测试者仅根据程序功能的需求规范考虑确定测试用例和推断测试结果的正确性。

3.1 等价类划分(重要

划分等价类:根据需求的输入或者输出划分有效等价类 和 无效等价类。

测试用例设计步骤:

  1. 划分等价类后,建立等价类表,并为每一个等价类规定一个唯一的编号
  2. 设计一个新用例,使它能够尽量多覆盖尚未覆盖的有效等价类。 重复该步骤,直到所有有效等价类均被用例所覆盖
  3. 设计一个新用例,使它仅覆盖一个尚未覆盖的无效等价类。重复该步骤,直到所有的无效等价类均被用例所覆盖 

【经典例题】三角形问题的等价类划分: 

测试背景:
某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作…处理 "。用等价类划分方法为该程序进行测试用例设计。

分析题目中给出和隐含的对输入条件的要求:

(1)整数  (2)3个数  (3)非零数  (4)正数  (5)两边之和大于第三边  (6)等腰  (7)等边

如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:

1)如果不满足条件(5),则程序输出为 " 不能构成三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。

(1)列出等价类表并编号

(2) 设计覆盖有效等价类的测试用例

(3)设计覆盖无效等价类的测试用例


3.2 边界值测试(重要

边界值测试是一种最基本、最简单的黑盒测试方法,通常可作为等价类测试的补充。刚好等于、刚好大于、刚好小于。

● 如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据
● 如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1、比最小个数少1的数做为测试数据
● 如果输入域是有序集合(如有序表、顺序文件等),则选取集合中特定次序的数据作为边界,如第一个或最后一个数据等
● 如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试用例;
● 分析规格说明,找出其他可能的边界条件

【经典例题】登录界面

以下是163邮箱的新用户注册页面:https://mail.163.com/register/index.htm?from=ntes_nav&regPage=163#/normal

注意是普通注册,见下图:

请用等价类和边界值对该注册功能设计用例,要求写出等价类划分的步骤

答案解析:

【1】划分等价类后,建立等价类表: (必须的不能少,划分的更加详细也没事,答案不唯一)

【2】 设计测试用例:

因为需要考虑边界值测试,所以对于邮箱地址,需要测试字符个数为:6、18、5、19的用例数据。对于密码需要考虑字符个数为:8、16、7、17的数据。

用例要求:一个用例可覆盖多个有效等价类  ,但一个用例只覆盖一个无效等价类 。

3.3 组合测试

目的:为组合爆炸情况提供一种相对合理的解决方案,在保证错误检出率的前提下采用较少的测试用例。

组合测试的实施步骤:

1、根据测试目标,识别出所需测试的软件功能,以及影响被测软件功能的参数。

2、依据步骤1的结果,识别每个参数的取值 范围。取值范围应为有限个离散取值。如果 某参数的取值范围不符合要求,则采用其他 测试技术对其进行离散化处理。

3、依据步骤1的结果识别出参数间的约束。 分析各参数间交互作用的强度,设定指导测试用例设计的组合强度。

4、根据步骤3中设定的组合强度,采用对应组合测试方法,生成与组合强度相符的测试 覆盖项。

5、依据步骤4中的测试覆盖项生成测试用例,直到每个测试覆盖项都包含在至少一个 测试用例中。


常见的组合强度包括:单一选择、基本选择、成对组合、全组合和K强度组合等。

我们使用某组织的旅行选项作为案例,来逐一说明不同的组合强度对用例设计的影响。 某组织为其员工到国内主要城市出差而记录了他们的旅行选项,分为目的地、舱位、座位三个分类的单选项。这些单选项的内容如表所示。

单选项

可选值

目的地

北京、上海、广州

舱位

头等舱、公务舱、经济舱

座位

靠过道、靠窗

【1】单一选择:被测软件中的所有参数取值范围的任意可能取值至少被一个测试用例覆盖。

对于单一选择测试,本案例只需要3个测试用例即可达到覆盖:

测试用例编号

输入值

预期结果

目的地

舱位

座位

1

北京

头等舱

靠过道

预订成功

2

上海

公务舱

靠窗

预订成功

3

广州

经济舱

靠过道

预订成功

 【2】基本选择:被测软件中,对于任意一个参数的N个取值 ,存在N条测试用例覆盖这N个取值,且其他参数的取值相同。

对于基本选择测试,测试覆盖项是通过选择每个参数的“基本选择” 来确定的。基本选择可以从操作手册、用例的基本路径或者等价类划分中得到的测试覆盖项中挑选。在本案例中,操作手册中给出了一个基本选择:上海、经济舱、靠窗 :

基本选择的测试用例如下表:

测试用例编号

输入值

预期结果

目的地

舱位

座位

1

上海

经济舱

靠窗

预订成功

2

北京

经济舱

靠窗

预订成功

3

广州

经济舱

靠窗

预订成功

4

上海

头等舱

靠窗

预订成功

5

上海

公务舱

靠窗

预订成功

6

上海

经济舱

靠过道

预订成功

【3】成对组合:被测软件中任意两个参数,它们取值范围的任意一对有效取值至少被一个测试用例所覆盖。

在成对组合中,测试覆盖项是两个不同参数的不重复键值对,如下表所示:

测试覆盖项编号

测试覆盖项内容

测试覆盖项编号

测试覆盖项内容

测试覆盖项编号

测试覆盖项内容

TCOVER1

北京,头等舱

TCOVER8

广州,公务舱

TCOVER15

广州,靠窗

TCOVER2

北京,公务舱

TCOVER9

广州,经济舱

TCOVER16

头等舱,靠过道

TCOVER3

北京,经济舱

TCOVER10

北京,靠过道

TCOVER17

头等舱,靠窗

TCOVER4

上海,头等舱

TCOVER11

北京,靠窗

TCOVER18

公务舱,靠过道

TCOVER5

上海,公务舱

TCOVER12

上海,靠过道

TCOVER19

公务舱,靠窗

TCOVER6

上海,经济舱

TCOVER13

上海,靠窗

TCOVER20

经济舱,靠过道

TCOVER7

广州,头等舱

TCOVER14

广州,靠过道

TCOVER21

经济舱,靠窗

 设计用例覆盖所有测试覆盖项,共9条用例,如下表:

测试用例编号

输入值

预期结果

测试覆盖项

目的地

舱位

座位

1

北京

头等舱

靠过道

预订成功

TCOVER1,10,16

2

北京

公务舱

靠窗

预订成功

TCOVER2,11,19

3

北京

经济舱

靠过道

预订成功

TCOVER3,10,20

4

上海

头等舱

靠过道

预订成功

TCOVER4,12,16

5

上海

公务舱

靠窗

预订成功

TCOVER5,13,19

6

上海

经济舱

靠过道

预订成功

TCOVER6,12,20

7

广州

头等舱

靠窗

预订成功

TCOVER7,15,17

8

广州

公务舱

靠过道

预订成功

TCOVER8,14,18

9

广州

经济舱

靠窗

预订成功

TCOVER9,15,21

【4】全组合:被测软件中所有参数取值范围的任意有效取值的组合至少被一个测试用例所覆盖。

根据乘法原理等排列组合知识,三个参数分别有3,3,2个取值可能,则一共可以得出3*3*2=18种不同的组合。

 【5】K强度组合:在组合强度要求为K的组合中(简称为K强度) ,任意K个参数取值范围的任意有效值的组合至少被一个测试用例覆盖。

当K=1 , K强度组合就是单一选择;当K=2 , K强度组合就等同于成对组合;而当K等于所有参数数量时, K强度组合等同于全组合。

3.4 决策表(重要

也称判定表法,是分析和表达多种逻辑条件下执行不同操作情况的工具。

在一些数据处理当中,某些操作的实施依赖与多个逻辑条件的组合,即对不同逻辑条件的组合值,分别执行不同的操作,决策表适合于处理这种问题。

 决策表通常由4个部分组成:

  • 条件桩(Condition Stub):列出了问题的所有条件(输入区)
  • 动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束(输出区)
  • 条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的真假值。(输入取值区)
  • 动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作(输出取值区)

规则(Rule):决策表中右部的每一列(条件项和对应的动作项)都是一条规则 。

图示:

使用决策表法设计用例的步骤:

1、分析输入域,并对输入域进行有效划分,确定规则的个数。

2、填入条件取值,填入相应的动作,得到初始决策表

3、简化决策表,合并相似规则(相同动作)

4、设计测试用例,一条规则对应一个测试用例 

【经典例题】订购单的检查

【例子】 某公司订购单的检查:如果金额超过500元,又未过期,则发出批准单和提货单;如果金额超过500元,但过期了,则不发批准单;如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。

得到初始决策表:

化简规则(下面两个要同时满足):

  • 输出相同:欲化简的多个测试用例的输出结果应相同
  • 输入相似:仅有一个输入条件的值可以不相同

 得到简化决策表:

3.5 因果图

因果图法是从需求中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转化成判定表。

输入与输出的依赖关系,考虑输入之间的约束、 输出之间的约束,最终也要转换成决策表(判定 表)。

输入与输出之间:恒等,非,或,与

输入与输入之间:E约束,I约束,O约束,R约束

输出与输出之间:M约束(强制约束)

:这里不做过多探讨……

因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:

1. 分析软件规格说明中哪些是原因,哪些是结果,并给每个原因和结果赋予一个标识符。

2. 分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系, 根据这些关系画出因果图。

3. 由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。

4. 把因果图转换为决策表。

5. 根据决策表中的每一列设计测试用例。

3.6 场景法(重要

场景法:通过分析不同事件的触发顺序处理结果,构建各个事件流,并基于这些事件的触发控制业务流程,形成多个不同场景,最终基于场景设计测试用例

适用:业务流程类软件,订单流程,政务系统审批流程,OA系统。

【1】基本流是从系统的某个初始状态开始,经一系列状态变化后到达终止状态的过程中最主要的一个业务流程。

【2】备选流是以基本流为基础,在经过基本流上每个判定节点(包括条件判定和循环判定)处满足不同的触发条件,而导致的其他事件流。

场景法使用步骤:

  • 分析需求(流程图)
  • 分析基本流和备选流
  • 根据基本流和备选流,构建场景
  • 设计测试用例,覆盖每一个分支(场景)

 【经典例题】围绕ATM机取款功能设计测试用例

过程描述:插入卡,校验成功后,输入密码,确定;密码校验通过后,输入取款金额,通过校验金额数,取钱成功;如果不通过,则不成功。

(1)画流程图:

基本流:插卡,正确的卡,正确的密码,……取款成功

备选流1:卡错误

备选流2:密码错误

备选流3:密码输入错误次数大于三次

备选流4:取款大于当天的取款额度

备选流5:卡余额小于取款数

备选流6: ATM机余额不足

(2)构建场景:

场景1(基本流):正确的卡,正确的密码,……取款成功

场景2(基本流+备选流1):卡错误

场景3(基本流+备选流2):卡正确,密码错误

场景4(基本流+备选流2+备选流3):卡正确,密码错误,输入错误次数大于三次

场景5(基本流+备选流4):卡正确,密码正确,取款金额大于当天允许额度

场景6(基本流+备选流5):卡正确,密码正确,取款额度符合,卡余额小于取款数

场景7(基本流+备选流6):卡正确,密码正确,当天额度正确,ATM机余额不足

(3)设计测试用例:

ID

场景

输入

预期输出

账户

密码

取款金额

取款额度

卡余额

ATM机余额

ATM-ST-001

1

4201

888888

1000

10000

50000

取款成功,账户余额更新为49000

ATM-ST-002

2

6789

N/A

N/A

N/A

N/A

N/A

提示卡错误,退卡

ATM-ST-003

3

4201

777777

N/A

N/A

N/A

N/A

提示密码错误,返回基本流

ATM-ST-004

4

4201

777777

777778

777779

N/A

N/A

N/A

N/A

提示密码错误,吞卡

ATM-ST-005

5

4201

888888

15000

10000

N/A

N/A

提示超过取款额度,返回基本流

ATM-ST-006

6

4201

888888

1000

10000

500

N/A

提示卡余额不足,返回基本流

ATM-ST-007

7

4201

888888

1000

10000

50000

500

提示ATM机余额不足,返回基本流


场景法使用注意事项:

  • 最少的场景数等于事件流的总数,基本流与备选流的总数
  • 有且唯一有一个场景仅包含基本流
  • 对应某个备选流,至少应有一个场景覆盖

3.7 状态转换法

使用场合:多状态变化的情况

目标:设计测试用例达到对系统状态的覆盖,状态-条件组合的覆盖以及状态迁移路径的覆盖。

状态图的使用步骤:

1.根据需求,理解关键字段,获得主要的状态

2.绘制状态迁移图

3.画出状态迁移树

4.抽取测试用例规则(每个状态至少到达一次)

由于我们学校不怎么考察,就简单概述了,需要更多可以查询其他博客。

3.8 错误猜测法

是基于经验和直觉,推测程序中可能出现的各种错误和容易发生错误的特殊情况 。

3.9 用例方法使用总结

【1】首先进行等价类,几乎所有输入框都可以使用。

【2】任何情况下都必须使用边界值,所用涉及数值的,几乎都需要。

【3】因果图, 描述多个输入之间的制约关系。

【4】决策表(判定表),输入较多时,因果图比较复杂,因此往往使用决策表法替代因果图法。

【5】业务流程清晰,事件触发,使用场景法,涉及到使用流程的。

【6】状态转移法,不同状态相互转换。

【7】参数配置类的软件,组合测试法,输入条件排列组合过多时。

【8】错误推测法,使用其他方法都已思考过,将错误推测法设计的用例作为补充。

结尾

下一章更新:白盒测试。有错误的地方还望指出,评论区共同探讨。

期待三连!

我的个人博客,欢迎访问!

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

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

相关文章

极快!宝藏EI,2-4周录用,接受范围广!

本周投稿推荐 SSCI • 2/4区经管类,2.5-3.0(录用率99%) SCIE(CCF推荐) • 计算机类,2.0-3.0(最快18天录用) SCIE(CCF-C类) • IEEE旗下,1/2…

短信视频提取批量工具,免COOKIE,博主视频下载抓取,爬虫

痛点:关于看了好多市面的软件,必须要先登录自己的Dy号才能 然后找到自己的COOKIE 放入软件才可以继续搜索,并且无法避免长时间使用 会导致无法正常显示页面的问题。 有没有一种方法 直接可以使用软件,不用设置的COOKIE的方法呢 …

文献速递:肺癌早期诊断---利用低剂量CT扫描的三维概率深度学习系统用于肺癌的检测与诊

Title 题目 A 3D Probabilistic Deep Learning System forDetection and Diagnosis of Lung Cancer Using Low-Dose CT Scans 利用低剂量CT扫描的三维概率深度学习系统用于肺癌的检测与诊 01文献速递介绍 肺癌既是最常见的癌症之一,也是导致癌症死亡的主要原因之…

【笔记】应对Chrome更新导致Chromedriver失效的解决方案:Chrome For Test

随着网络应用和网站的不断发展,自动化测试变得越来越重要,而Selenium成为了许多开发者和测试人员的首选工具之一。然而,对于使用Selenium来进行网站测试的人来说,Chrome浏览器的频繁更新可能会成为一个头疼的问题。每当Chrome更新…

Docker容器:镜像与容器管理命令

目录 一、镜像管理命令 1、搜索镜像 2、获取镜像 3、镜像加速下载 4、查看下载的镜像文件信息 5、查看下载到本地的所有镜像 6、获取指定镜像的详细信息 7、为本地的镜像添加新的标签 8、删除镜像 8.1 删除指定的镜像 8.2 批量删除多个镜像 9、导出镜像与导入镜像 …

Day 32 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

买卖股票的最佳时期Ⅱ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你…

云上如何实现 Autoscaling: AutoMQ 的实战经验与教训

01 背景 弹性是云原生、Serverless 的基础。AutoMQ 从软件设计之初即考虑将弹性作为产品的核心特质。对于 Apache Kafka 而言,由于其存储架构诞生于 IDC 时代,针对物理硬件设计,存储层强依赖本地存储,已不能很好地适应现在云的时…

Linux:Centos7.x系统,无效的密码问题处理

一、情景说明 我新创建了Centos7系统,在使用的过程中,我需要创建一个test账号 那么,同时我就要给这个账号设置一个密码 为了方便,我设置成123456 就报错了 二、解决办法 其实这个问题很容易处理,不需要像其他帖子说…

项目报错com.mall.common.domain.request那么就说明你的项目里面是找不到导入类的包名或者路径

当你的项目里面一直报错是找不到导入类的包名或者路径的时候:com.mall.common.domain.request 这个问题我们阔以分为几个角度来想 1、包路径错误:确保com.mall.common.domain.request这个包路径在项目中是正确的。可能的情况是包名写错了,或…

识别有效的IP地址和掩码并进行分类统计

问题概要 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。 所有的IP地址划分为 A,B,C,D,E五类 A类地址从1.0.0.0到126.255.255.255; B类地址从128.0.0.0到191.255.255.255; C类地址从192.0.0.0到223.…

大模型检索召回系统:RAG技术的全面调查与未来展望

随着人工智能技术的飞速发展,大型语言模型(LLMs)在自然语言处理(NLP)领域取得了显著成就。然而,这些模型在处理特定领域或知识密集型任务时仍面临挑战,如产生错误信息或“幻觉”。为了克服这些难…

MC33665 + MC33774 控制流程及 TPL3 帧结构介绍

一. 概述: MC33665A:通用电池管理通信网关和变压器物理层 (TPL) 收发器。该设备通过标准通信协议转发来自不同 TPL(NXP 的隔离菊花链协议)端口的消息,标准通信协议可确保与市场上可用的微控制器兼容。 MC33774&…

Fork for Mac v2.42 激活版 Git客户端

Fork for Mac是一款运行在Mac平台上的Git客户端,Fork Mac版具备基本的取、推、提交、修改、创建和删除分支和标签、创建和删除远程备份等功能,还有实用的差异查看器,你可以通过清晰的视图快速发现源代码中的更改。 Fork for Mac v2.42 激活版…

Golang | Leetcode Golang题解之第42题接雨水

题目&#xff1a; 题解: func trap(height []int) (ans int) {n : len(height)if n 0 {return}leftMax : make([]int, n)leftMax[0] height[0]for i : 1; i < n; i {leftMax[i] max(leftMax[i-1], height[i])}rightMax : make([]int, n)rightMax[n-1] height[n-1]for i…

git提交注释规范插件

1、前言 为什么要注重代码提交规范&#xff1f; 在团队协作开发时&#xff0c;每个人提交代码时都会写 commit message。 每个人都有自己的书写风格&#xff0c;翻看我们组的git log, 可以说是五花八门&#xff0c;十分不利于阅读和维护。 一般项目开发都是多分支共存&#x…

Seal^_^【送书活动第2期】——《Flink入门与实战》

Seal^_^【送书活动第2期】——《Flink入门与实战》 一、参与方式二、本期推荐图书2.1 作者简介2.2 编辑推荐2.3 前 言2.4 本书特点2.5 内容简介2.6 本书适用读者2.7 书籍目录 三、正版购买 一、参与方式 评论&#xff1a;"掌握Flink&#xff0c;驭大数据&#xff0c;实战…

Ubuntu下部署gerrit+报错分析(超详细)

Ubuntu下部署gerrit代码平台 之前安装过几次 最后都在Apache代理这里失败了&#xff0c;如下图&#xff0c;总是gerrit.config与Apache2.config配置有问题&#xff0c;后面换了使用ngnix代理&#xff0c;简单多了 安装Mysql、gerrit、jdk、git 这一步也是非必须得&#xff0…

【c++】list类接口函数介绍与深度剖析模拟实现

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章来到list有关部分&#xff0c;这一部分函数与前面的类似&#xff0c;我们简单讲解&#xff0c;重难点在模拟实现时的迭代器有关实现 目录 1.List介绍2.接…

转向敏捷财务规划,实现更快更自信的决策

随着数字化的到来&#xff0c;原本基于电子表格的时代正逐渐拉下帷幕&#xff0c;大部分企业开始摆脱依赖于电子表格进行计划、预算和预测的传统规划系统&#xff0c;寻求更符合当今市场要求的敏捷财务规划。但不得不承认&#xff0c;当下电子表格仍然是多数企业使用最广泛的工…

Wireshark数据包分析入门

Wireshark数据包分析 1. 网络协议基础1.1. 应传网数物&#xff08;应表会传网数物&#xff09; 2. 三次握手2.1. 第一次握手2.2. 第二次握手2.3. 第三次握手2.4. 三次握手后流量特征 3. 第一层---物理层&#xff08;以太网&#xff09;4. 第二层---数据链路层&#xff08;PPP L…