软件测试要学习的基础知识——黑盒测试

概述

黑盒测试也叫功能测试,通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作是一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当接收输入数据而产生正确的输出信息。

黑盒测试以用户角度,从输入数据与输出数据的关系触发,试图发现一下几类错误:

  • 功能不正确或遗漏

  • 界面错误

  • 数据库访问错误

  • 性能错误

  • 初始化和终止错误

用例设计方法包括:

等等

等价类划分

1 等价类

等价类是指某个输入域的子集,在该子集合中,测试某等价类的代表值就等于这一类其他值的测试,对于揭露程序的错误是等效的。因此,全部输入数据可以合理划分为若干个等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量的代表性的测试数据取得比较好的效果。

等价类划分可以分为:

有效等价类:对于程序的规格说明来说是合理的,有意义的输入数据构成的集合,利用有效等价类可以检验程序是否实现了规格说明中所规定的功能和意义

无效等价类:与有效等价类相反,是指对程序的规格说明无意义,不合理的数据构成的集合

2 划分原则

  • 如果规定了输入值的范围,可以定义一个有效等价类和两个无效等价类

如果规定了输入的规则,可以划分出一个有效的等价类(符合规则)和若干无效的等价类(从不同角度违反原则)

如果规定了输入数据的已组织,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类

如果规定了输入数据是整型,可以划分出正整数、零、负整数三个有效等价类

处理表格时,有效类为空表、含一项的表、含多项的表等

边界值分析

1 边界值分析设计原则

边界值分析作为等价类划分的补充,通过选择等价类的边界值作为测试用例。

基于边界值分析有如下原则:

如果输入条件规定了值的范围,应选择刚到达这个范围的边界的值,以及刚刚超过这个范围边界的值作为测试输入数据

如果输入条件中规定了值的个数,则用最大个数、最小个数、比最小个数少一,比最大个数多一作为测试数据

如果规格说明书给出的输入域或输出域的有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例

如果程序中使用了内部数据结构,则应选择内部数据结构的边界上的值作为测试用例

2 边界值分析的两种方法

一般边界值分析:一般取Min、Min+、Normal、Max-、Max

健壮性边界值分析:除了一般边界值分析外,还包括Min-、Max+

决策表

决策表又叫判定表,是分析多种逻辑条件下执行不同操作的技术。决策表由四个部分组成,包括

  • 条件桩:列出问题的所有条件,条件的顺序无关紧要
  • 动作桩:列出问题规定可能采取的所有动作,排列顺序没有约束
  • 条件项:列出了针对条件桩的取值在所有可能情况下的真假值
  • 动作项:列出了在条件项的各种取值的有机关联情况下应采取的动作

另一方面,决策表中的规则,指的是任何条件组合的特定取值以及相应要执行的动作,在决策表中贯穿条件项和动作项的列就是规则,决策表中列出多少条件取值,就对应多少规则,条件项就有多少列。

比如下面是一个使用决策表制作的打印机测试用例:

因果图

1 定义

因果图利用图解法分析输入的各种组合情况,适合于描述多种输入条件的组合,相应产生多个动作的方法,因果图的好处如下:

  • 考虑多个输入之间的相互组合、相互制约的关系
  • 指导测试用例的选择,指出需求规格说明描述中存在的问题
  • 能够帮助测试人员按照一定的步骤,高效率地开发测试用例
  • 因果图法是一种严格地将自然语言规格说明转化为形式语言规格说明的方法,可以指出规格说明存在的不完整性和二义性

2 基本图形符号

原因结果图:

ci和ei都可以取值0或1,0表示状态不出现,1表示状态出现。

约束图:

场景法

同一事件不同的触发顺序和处理结果形成事件流,每个事件流触发时的情景便形成了场景。

场景法一般包含基本流和备选流(也叫备用流),从一个流程开始,通过描述经过的路径来确定过程,经过遍历所有的基本流和备用流来形成整个场景。场景法的基本设计步骤如下:

  • 根据说明,描述程序的基本流以及各项备选流
  • 根据基本流和各项备选流生成不同的场景
  • 对每一个场景生成相应的测试用例
  • 对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值

图示:

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
linsa_pursuer12 分钟前
快乐数算法
算法·leetcode·职场和发展
王俊山IT21 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
南宫生2 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
武子康3 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
使者大牙3 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
As977_3 小时前
前端学习Day12 CSS盒子的定位(相对定位篇“附练习”)
前端·css·学习
ajsbxi3 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
Rattenking3 小时前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
dsywws4 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习