热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

大二汪的软件测试黑盒测试技术

第四章-黑盒测试技术4.1黑盒测试技术基本概念4.2黑盒测试的方法等价类划分法边界值分析法因果图法场景设计法错误推测法决策表法正交试验设计法4.3黑盒测试的依据和流程4.1黑盒测试


第四章-黑盒测试技术

  • 4.1 黑盒测试技术基本概念
  • 4.2 黑盒测试的方法
    • ==等价类划分法==
    • 边界值分析法
    • 因果图法
    • 场景设计法
    • 错误推测法
    • 决策表法
    • 正交试验设计法
  • 4.3 黑盒测试的依据和流程


4.1 黑盒测试技术基本概念

黑盒测试对程序的功能性测试要求:
(1)每个软件特性必须被一个测试用例或一个被认可的异常所覆盖。
(2)利用数据类型和数据值的最小集测试。
(3)利用假想的数据类型和数据值运行,测试处理不规则输入的能力
(4)利用一系列真实的数据类型和数据值运行,测试超负荷及其他“最坏情况”的结果。
(5)测试影响性能的关键模块,如基本算法、精度、时间、容量等是否正常。


4.2 黑盒测试的方法


等价类划分法

完全不考虑程序的内部结构,只根据程序规格说明书对输入范围进行划分,把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例,进行测试。

一、等价类划分方法简述:
首先应在分析需求规格说明的基础上划分等价类,再根据等价类设计出测试用例。

等价类即输入域的某个互不相交的子集,所有等价类的并集为整个输入域。即整个输入域提供了一种形式的完备性,而互不相交则可保证一种形式的无冗余性
等价类中的元素有一些共同的特点:如果用等价类中的一个元素作为测试数据进行测试不能发现程序中的故障,那么使用集合中的其他元素进行测试也不可能发现故障,表现了其代表性等效性

二、划分等价类:


  • 有效等价类:指符合程序规格说明书,有意义的、合理的输入数据所构成的集合。
    利用有效等价类,可以检验程序是否实现了规格说明预先规定的功能和性能。在具体问题中,有效等价类可以是一个或是多个
  • 无效等价类:指不符合程序规格说明书,无意义的或不合理的输入数据所构成的集合。
    利用无效等价类,可以检查软件功能和性能的实现是否有不符合规格说明要求的地方。对于具体的问题,无效等价类至少应有一个,也可能有多个。

三、常用的等价类划分原则:


  • 按区间划分:如果规格说明规定了输入条件的取值范围或值得数量,则可以确定一个有效等价类和两个无效等价类。

如果软件规格说明“学生允许选修5到8门课”,则一个有效等价类可取“选课5到8门”,无效等价类可取“选课不足5门”和“选课超过8门”。



  • 按数值划分:如果规格说明规定了一组输入数据,而且程序要对每一个输入值分别进行处理,则可为每一个输入值确立一个有效等价类,针对这组值确立一个无效等价类,它是所有不允许输入值的集合。

例:程序输入x取值于一个固定的枚举类型{1,3,7,15},且程序 中对这4个数值分别进行了处理,则有效等价类为x=1、x=3、 x=7、x=15,无效等价类为x≠1,3,7,15的值的集合。



  • 按数值集合分类:如果规格说明规定了输入值的集合,则可确定一个有效等价类和一个无效等价类(该集合有效值之外)。

例如,某程序要求输入TOM、DICK或HAPPY这些名字之一,那么定义一个等价有效类(采用有效名字之一)和一个无效等价类(采用有效名字之外的名字,如JOE)



  • 按限制条件或规则划分:如果规格说明规定了输入数据必须遵守的规则或限制条件,则可以确定一个有效等价类(符号规则)和若干个无效等价类(从不同角度违反规则)。

例如,若某个输入条件说明了一个必须成立的情况(如输入数据必须是数字),则可划分一个有效等价类(输入数据是数字)和一个无效等价类(输入数据为非数字)



  • 细分等价类:等价类中的各个元素在程序中的处理若不相同,则可将此等价类进一步划分为更小的等价类。

在确立了等价类之后,可按下表的形式列出所有划分出的等价类表。
在这里插入图片描述

四、划分等价类的要求:


  1. 测试完备合理,避免冗余。
  2. 划分输入条件、有效等价类和无效等价类时最重要的是将集合划分为互不相交的一组子集。
  3. 整个集合完备
  4. 子集互不相交,保证一种形式的无冗余性
  5. 同一类中标识(选择)一个测试用例,在同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”。

五、等价类划分测试用例设计
(1)首先为等价类表中的每一个等价类分别规定一个唯一的编号。
(2)设计测试用例,尽量覆盖尚未覆盖的有效等价类。重复该步骤,直到所有的有效等价类均被覆盖。
(3)设计测试用例,仅覆盖一个尚未覆盖的无效等价类。重复该步骤,直到所有的无效等价类均被覆盖。

六、等价类测试存在问题:
(1)规格说明往往没有定义无效测试用例的期望输出应该是什么样的。
(2) 是强类型语言没有必要考虑无效输入。


边界值分析法

在进行等价类分析时,往往先要确定边界。边界确定清楚了,等价类就自然产生了。
边界值分析方法是对等价类划分法的补充,它不是选择等价类的任意元素,而是选择等价类边界的测试用例,选取正好等于、刚刚大于或刚刚小于的边界值,而不是选取等价类中的典型值或任意值。在测试中,会将两者方法结合起来共同使用。
边界值分析不是从某等价类中随便挑一个作为代表,而是使等价类的每个边界作为测试条件。
边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

一、边界值分析方法简述:
边界值分析法用于列出单元功能、输入、状态及控制的合法边界值非法边界值,对数据进行测试,检查用户输入的信息、返回结果以及中间计算结果是否正确,补充等价划分的测试用例设计技术。

四、边界值分析测试:
边界值分析利用输入变量的最小值(min)稍大于最小值(min+)域内任意值(nom)、**稍小于最大值(max-)最大值(max)**来设计测试用例。
对于一个含有n个变量的程序,采用边界值分析法测试程序会产生4n+1个测试用例。

边界值设计原则:
(1)如果输入条件规定了取值范围,应以该范围的边界内及刚刚超范围的边界外的值作为测试用例。例如:以a和b为边界,测试用例应当包含a和b及略大于a和略小于b的值。
(2)若规定了值的个数,分别以最大、最小个数及稍小于最小、稍大于最大个数作为测试用例。例如:一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。
(3)针对每个输出条件使用前面的第1和2条原则。
(4)如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件、表格等),就应注意选取有序集的第一个和最后一个元素作为测试用例。


因果图法

一、因果图方法简述:
因果图法是一种适合于多种条件的组合、相应产生多个动作的情况的方法,利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
因果图法最终生成的是判定表,适合于检查程序输入条件的各种组合情况。

二、因果图的关系符号和约束:
(1)关系符号:
通常在因果图中,用Ci表示原因,Ei表示结果,各结点表示状态,可取值“0”或1”。“0”表示某状态不出现,“1”表示某状态出现。在这里插入图片描述
(2)约束:输入状态之间存在的依赖关系。


  • E:(异)余数符号。表示a和b之间至多只能一个为1,不能同时为1。
  • I:(或)约束符号。a,b,c之间至少有一个为1,不能同时为0。
  • O:(唯一)约束符号。a和b必须有一个且只有一个为1
  • R:(要求)约束符号。a为1时,b必须为1,即不可能a为1时b是0。
  • M:(强制)约束符号。a为1时,b强制为0
    在这里插入图片描述
    三、因果图法测试用力的设计步骤:
    在这里插入图片描述

场景设计法

一、场景法描述:
场景设计法的核心是事件流场景。其中事件流包括基本流和备选流

用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流。

要解决的问题:①如何获取基本流和备选流
②当路径上存在数量众多的备选流时,如何处理场景爆炸的问题

二、一般步骤:


  1. 构造基本流和被选修
  2. 根据基本流和备选流构造场景
  3. 根据场景设计测试用例
  4. 对每个测试用例补充必要的测试数据

三、测试过程:
如图,包括已知的基本流和四个备选流,共4个分支节点,其中备选流124涉及的是条件判定结点,备选流3涉及的是循环的情况。
在这里插入图片描述

(1)基本流:基本流是从系统某个初始态开始,经一系列状态后到达终止状态的过程中最主要的一个业务流程。(基本流只有一个)
(2)备选流:备选流是以基本流为基础,在经过的每个判定节点处满足不同的触发条件而导致的其他事件流。(备选流的起始和终止结点具有多种形式,可以有多个)
(3)场景:基本流和备选流的有序集合。场景中应至少包含一条基本流。(场景中包含的事件流数目越大,则场景越复杂,测试越困难)

基本流与备选流的区别在这里插入图片描述


错误推测法

错误推测法是基于测试人员的经验和直觉来推测系统中可能存在的各种缺陷,有针对性地设计测试用例的方法。这里的经验和直觉来自测试人员对被测软件系统特性的了解和以往在测试工作中的总结。


决策表法

决策表并不是因果图的一个辅助工具,在一个程序中,如果输入输出比较多,输入之间和输出之间相互制约的条件比较多,在这种情况下应用决策表很合适,它可以很清楚地表达它们之间的各种复杂关系。

一、决策表法简述:
决策表是把作为条件的所有输入的各种组合值以及对应输出值都罗列出来而形成的表格。它能够将复杂的问题按照各种可能的情况全部列举出来,简明并可避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。

决策表由以下四部分组成:


  • 条件桩:列出问题的所有条件
  • 条件项:针对条件桩给出的条件列出所有可能的取值
  • 动作桩:列出问题规定的可能采取的操作
  • 动作项:指出在条件项的各组取值情况下应采取的动作

将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在判定表中贯穿条件项和动作项的一列就是一条规则

二、决策表的构造及化简
构造决策表的步骤:


  1. 列出所有的条件桩和动作桩
  2. 确定规则的个数
  3. 填入条件项
  4. 填入动作项,得到初始决策表
  5. 简化决策表,合并相似规则

对于n个条件的决策表,相应有2n规则。
当n较大时,决策表很庞大。实际使用决策表时,常常先将它简化。决策表的简化以合并相似规则为目标,即若表中有两条或两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件在这里插入图片描述


正交试验设计法

一、正交试验设计法简述:
正交试验方法是依据Galois理论,从大量的数据(测试用例)中挑选适量的、有代表性的点(用例),从而合理地安排实验(测试)的一种科学实验设计方法。

正交试验方法是使用已经创建的正交表格来安排试验并运行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率

因素(因子):输入的条件(变量)
水平(因子的状态):条件的可能取值
一般用L表示正交表,如L8(27)中的7为因子数(即正交表的列数),2为因子的水平数,8为测试次数(即正交表的行数)。

二、正交试验设计发的设计步骤:
(1)提取功能说明,构造因子状态表
(2)加权筛选,生成因素分析表
(3)利用正交表构造测试数据集


4.3 黑盒测试的依据和流程

黑盒测试也称为功能测试、行为测试或数据驱动测试,在测试时,把程序看作一个不能打开的黑盒,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

黑盒测试注重于测试软件的功能性需求,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试,多应用于测试过程的后期

等价类划分和边界值分析:最常用、最简单有效
因果图法和决策表法:适于程序的功能说明中含有输入条件的组合情况
场景法:适于业务流清晰的情况
正交试验法:适于多参数多配置的情况


推荐阅读
  • addcslashes—以C语言风格使用反斜线转义字符串中的字符addslashes—使用反斜线引用字符串bin2hex—函数把包含数据的二进制字符串转换为十六进制值chop—rt ... [详细]
  • MPC控制算法代码matlab实现,matlab func实现,自编写matlab function实现MPC算法
    MPC工具箱提供的MPC模块不能实现权重参数的实时修改,有必要自己编写一个实现模型预测控制算法的matlabfunction。主义事项求解QP问题的时候使用哪一个 ... [详细]
  • 利用 Jest 和 Supertest 实现接口测试的全面指南
    本文深入探讨了如何使用 Jest 和 Supertest 进行接口测试,通过实际案例详细解析了测试环境的搭建、测试用例的编写以及异步测试的处理方法。 ... [详细]
  • 深入解析:主流开源分布式文件系统综述
    本文详细探讨了几款主流的开源分布式文件系统,包括HDFS、MooseFS、Lustre、GlusterFS和CephFS,重点分析了它们的元数据管理和数据一致性机制,旨在为读者提供深入的技术见解。 ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • Android中解析XML文件的实践指南
    本文详细介绍了在Android应用开发中解析XML文件的方法,包括从本地文件和网络资源获取XML文件的不同途径,以及使用DOM、SAX和PULL三种解析方式的具体实现。 ... [详细]
  • 在DELL Inspiron 14R上部署CentOS X64 6.4的详细步骤
    本文详细记录了在DELL Inspiron 14R笔记本电脑上安装CentOS X64 6.4操作系统的过程,包括遇到的问题及解决方法。 ... [详细]
  • Webpack中实现环境与代码的有效分离
    本文探讨了如何在Webpack中有效地区分开发与生产环境,并实现代码的合理分离,以提高项目的可维护性和加载性能。 ... [详细]
  • Eclipse 下 JavaFX 程序开发指南
    本文介绍了 JavaFX,这是一个用于创建富客户端应用程序的 Java 图形和媒体工具包,并详细说明了如何在 Eclipse 环境中配置和开发 JavaFX 应用。 ... [详细]
  • 本文详细探讨了Linux系统中insmod与modprobe两种模块加载命令的主要区别及其具体应用场景,特别是在处理模块依赖关系和避免重复加载方面的作用。 ... [详细]
  • 本文通过探讨React中Context的使用,解决了在多层级组件间传递状态的难题。我们将详细介绍Context的工作原理,并通过实际案例演示其在项目中的具体应用。 ... [详细]
  • 精通C++并非易事,为何它比其他语言更难掌握?这主要归因于C++的设计理念,即不强迫用户接受特定的编程风格或限制创新思维。本文探讨了如何有效学习C++,并介绍了几本权威的学习资源。 ... [详细]
  • 本文总结了WebSphere应用服务器出现宕机问题的解决方法,重点讨论了关键参数的调整,包括数据源连接池、线程池设置以及JVM堆大小等,旨在提升系统的稳定性和性能。 ... [详细]
  • 本文探讨了在CentOS操作系统中遇到的Docker服务启动失败以及Docker命令无响应的问题,并提供了一套详细的排查与解决步骤。 ... [详细]
  • 本文介绍了Linux环境下的多种进程间通信方法,包括管道、信号、消息队列、共享内存、信号量和套接字等。同时,探讨了JavaScript动态加载脚本的优势与使用XMLHttpRequest对象获取JavaScript代码的优缺点。 ... [详细]
author-avatar
颓废胖胖2502908443
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有