软件测试之黑盒测试详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

概念与定义

  1. 黑盒测试:又称功能测试、数据驱动测试或基于需求规格说明书的测试。通过黑盒测试来检测每个功能是否都能正常使用。黑盒测
    试把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程。
  2. 等价类划分法:把所有可能的输入数据,即程序的输入域划分成若干互不相交的子集,称为等价类。所有子集的并集则构成整个输入域。然后从每一个子集中选取少量具有代表性的数据作为测试用例。
  3. 有效等价类:对于程序规格说明而言,由合理的、有意义的输入数据构成的集合。
  4. 无效等价类:对于程序规格说明而言,由不合理的、无意义的输入数据构成的集合。(根据具体问题,无效等价类存在至少一个或多个)
  5. 边界值测试:在输入或输出变量范围的边界值上进行测试的一种黑盒测试方法。
  6. 边界点:可能导致被测系统内部处理机制发生变化的点。
  7. 标准边界值测试:最小值,略高于最小值,正常值,略低于最大值,最大值。产生4n+1个测试用例。
  8. 健壮边界值测试:略小于最小值,最小值,略高于最小值,正常值,略低于最大值,最大值,略大于最大值。产生6n+1个测试用例。
  9. 场景法:基于系统业务,分析触发的事件,判断控制流形成测试场景,围绕着事件流和场景进行的测试。
  10. 场景法以事件流为核心。
  11. 用例场景:从系统的某个初始状态开始,到达某个结束状态为止,所经过的路径。
  12. 基本流:从初始态到终止态过程中最主要的业务流程。基本流只有一个。往往选择高风险事件流作为基本流。
  13. 备选流:以基本流为基础,在基本流所经过的每个判定节点处满足不同的触发条件而导致的其它事件流。
  14. 场景:基本流和备选流的++有序集合++。一个场景中至少应包含一条基本流或者由一条基本流和零到多条备选流构成。

简答

黑盒测试的优缺点

优点:

  • 方法简单有效;
  • 可以整体测试系统的行为;
  • 开发与测试可以并行;
  • 对测试人员技术要求相对较低;
  • 容易实现自动化测试;
  • 依据测试用例有针对性地寻找问题,定位更准确,容易生成测试数据。

缺点:

  • 无法测试代码;
  • 如果需求规格说明设计有误,很难发现错误所在;
  • 测试不能充分地进行;
  • 准确性取决于测试用例的设计;
  • 自动化测试的复用性较低。

黑盒测试方法的评价标准

在最短时间内,以最少的人力,有利于发现最多的,以及最严重的缺陷。

  • 精确的:测试针对性强
  • 完备的:测试覆盖全面,无漏洞
  • 无冗余:测试用例所关联的风险有所区别
  • 简单的:测试方法简单易行
  • 易于调试:缺陷定位难度小

对于测试用例设计的要求:

  • 测试用例的覆盖度:高
  • 测试用例的数量:少
  • 测试用例的冗余度:低
  • 测试用例的缺陷定位能力:高
  • 测试方法的复杂度:低

等价类的意义

  • 完备性:整个输入域提供一种形式的完备性
  • 无冗余:若互不相交则可保证一种形式的无冗余性

等价类划分方法

1.当输入是连续数值区间:一个有效等价类和两个无效等价类

2.当输入是一组特定取值:一个有效等价类和一个无效等价类

3.当输入是二值属性,例如布尔值,有两种处理方式:

①一个有效等价类(True),一个无效等价类(False)

②将True和False都视为有效等价类,即两个有效等价类,和一个无效等价类(非布尔值)

4.当输入是一组值(n个值):n个有效等价类,一个无效等价类

5.当输入被规定了若干条必须遵守的规则(例如用户名):一个有效等价类和若干个无效等价类(从不同角度违反规则)

拆分无效等价类的时候,一次只能违反一条规则,即要遵守单缺陷原则。

等价类测试用例的覆盖要求

  • 弱覆盖:测试用例应覆盖所有的有效等价类
  • 强覆盖:测试用例应覆盖所有的有效等价类的所有组合

等价类测试的流程

  1. 确定有几个输入条件
  2. 划分每个输入条件的等价类(有效等价类、无效等价类)
  3. 选择合适的覆盖标准(强覆盖、弱覆盖)
  4. 设计测试用例

场景法设计测试用例的步骤

  1. 理解软件的业务需求,确定业务流程;
  2. 绘制流程图 ,从流程图中定义基本流和备选流 ,然后定义测试场景;
  3. 将测试场景的多种输入条件与场景对应起来,形成场景条件表;
  4. 根据场景条件表设计测试用例。

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

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关推荐
第九序言T2 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路2 小时前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_426003962 小时前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_3 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
Da Da 泓4 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
quantdash_cc4 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl4 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
Pniubi4 小时前
力扣283移动零(双指针法)
算法·leetcode·职场和发展
云和数据.ChenGuang5 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真5 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法