上周学习了白盒,本周开始学习黑盒测试。
4.3黑盒测试
黑盒测试(Black Box Testing)也称功能测试,主要测试每个功能是否正常使用。是软件测试使用中最广泛的一类测试。在黑盒测试中,通常把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,对程序接口进行测试,指检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,如图4-5所示
黑盒测试着手程序外部结构,不考虑内部逻辑结构,主要对软件界面和软件功能进行测试、是从用户角度考虑,从输入数据与输出数据的对应关系出发进行测试。关注的是软件的功能需求,主要试图发现以下类型的错误。
1)功能是否正确,是否有遗漏
2)界面是否有错误
3)数据结构或外部数据库访问错误
4)性能错误
5)初始化和终止错误
常见的黑盒测试方法有:功能性测试、性能测试、安心性测试、兼容性测试、稳定性测试、可靠性测试以及安装卸载测试等。
要有针对性的选择测试用例,通过定制案例测试的实施,保证测试由组织、有计划的进行。只有
对黑盒测试进行量化,才能保证软件的质量具体量化的方法之一就是测试用例。
黑盒测试用例设计方法包括;等价类划分法、边界值分析法、判定表分析法、因果图分析法、正交试验法、流程分析法、状态迁移法、异常分析法以及错误推测法等。
4.3.1等价类划分法
是典型的黑盒测试用例设计方法,是将软件的输入域分成若干部分,然后从每个部分中选取少数具有代表性的数据进行测试,可以避免穷举产生的大量用例。
等价类是指某个输入域的子集合,指输入该输入域中的某一个数据,如不能揭露被测对象的缺陷,那么我们就说这个输入域中的所有数据都无法揭露该缺陷,反义亦然。
一般分为两种情况:有效等价类和无效等价类
1)有效等价类:对需求规格而言、合理的、有效的输入数据构成的集合。
2)无效等价类:对需求规格而言、不合理的、无效的输入数据构成的结合。
因为软件不仅要能接收合理的数据,不合理的数据也需要做出正确响应。所有在设计用例时,两种等价类都需要考虑,这样有更高的可靠性。
等价类划分的标准:划分的子集必须是互不相交的,符合完备测、避免出现冗余。
等价类划分法的划分原则,通常按照以下规则进行划分等价类。
1)如规定输入的取值范围或个数时,则划分一个有效等价类和两个无效等价类。如:注册用户名的长度限制6-18个字符,6-18个字符是有效等价类,小于6和大于18字符则是两个无效等价类。
2)如果规定了输入的集合或规则必须要遵循的条件,则划分一个有效等价类和一个无效等价类。如:注册用户的格式要求必须以字母开头时,以字母开头是有效等价类,非字母开头则是无效等价类。
3)如果输入条件是一个布尔值,则划分一个有效等价类和一个无效等价类。如:在注册用户需要遵循协议或条款是否接收时,“接收”是有效等价类,“不接收”则是无效等价类。
4)如果输入条件是一组数据(枚举值),并且程序对每个输入的值做不同的处理,则化为若干有效等价类和一个无效等价类。如:网游中充值VIP等级(3个等价)对每个VIP的等级优惠不同,VIP1、VIP2、VIP3不同等级是三个有效等价类,不是VIP用户则是无效等价类。
5)如果输入条件规定了必须要遵循的某些规则下,则划分一个有效等价类和若干个无效等价类(无效等价类需要从不同的角度去违法规则)如:密码要求首位要求必须是大写字母,首字母是大写的是有效等价类,首字母是小写或未数字或特殊字符的则是无效等价类。
6)不是所有的等价类都有无效等价类,如性别的选择只有男或女两种。
等价类划分的设计用例的步骤如下:
步骤1:根据需求规格说明书,等价类划分。
步骤2:设计等价表,填写好划分好的内容并设计编号。根据划分原则将划分好的有效等价和无效等价填入等价类划分表中,间表4-3
步骤3:设计覆盖表,填写覆盖的所有的有效、无效等价类、编号。
设计设计覆盖所有等价类时,有以下2个原则
1)设计新的测试数据,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖完为止。
2)设计新的测试数据,尽可能多地覆盖尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖完为止。
步骤4:根据每组测试数据生成对应的测试用例。
等价类划分法:
优点考虑了单个输入域,所有可能的取值情况,避免了我们在设计用例时盲目或随机选取输入测试不完整或不稳定的数据。
缺点:产生的测试用例比较多,而且在设时没有考虑输入条件之间的约束关系,啃会插手一些无效的测试用例,也没有对边界条件进行考虑,所以在设时需要结合其他的设计方法进行补充,如边界值分析法。
4.3.2边界值分析法
是对等价划分的一个补充,该方法不仅需要考虑输入域的边界,而且还要关注输入域的边界。测试经验得知,大量的错误发生在输入和输出范围的边界上。因此针对各种边界情况设计用例,可以查出等多的错误。该方法一般在规定了取值范围或规定了值的个数,或者明确输入条件的有序集合中使用。使用边界值分析设计用例需要考虑3个点的选择。
3点的关系图如图4-7所示
1、上点:就是边界上的点,它不区分区间还是闭区间。
2、离点:是里面最近的点,如果输入域是封闭的。则离点在域的范围外;如熟人价域是开区间,则离点在域的范围内。
3、内点:是输入域内任意的一个点。
通常按照以下规则进行边界点的划分
1)如果规定了输入域的取值范围,则选取刚好在范围内边界的点,以及刚好超过边界的点,作为测试的数据数据。
2)如果规定了输入值的个数,最小个数,比最小个数少1,比最大个数多1的数作为测试数据。
3)如果规定了输入是一个有序的集合,则选取集合的第一元素和最后一个元素作为测试数据。
注意:在设计时,通常选择上点和离点。在选择离点时,需要考虑数据的类型和精度。如:上点数据类型是实数,精确度0.001,那么离点就是上点减0.001或加0.001.
边界值分析设计用例的基本步骤如下:
步骤1:设计等价表,填写划分好的内容并设计编号
步骤2:为每一个等价类的边界点设计上点、离点、内点并设计好编号,
步骤3:设计测试数据,覆盖所有的等价类及边界点直到所有的点全部进行覆盖。
步骤4:根据每组测试数据生成对应的测试用例。
4.3.3判定表分析法
在等价类设计中,没有考虑输入域的组合情况,导致设计的用例中无法覆盖输入域之间存在的关联的地方。为了弥补等价类设计的不足,介绍一种新的用例设计方法-判定表分析法。
主要是分析和表达多种条件下系统执行不同动作的技术。在程序设计发展的初期,判定表就已经被当作编写程序的辅助工具了,它可以把复杂的逻辑关系和多种条件组合的情况表达的很明确,判定表由四个部分组成,如图4-8所示
1)条件桩:列出被测对象的所有输入,并列出输出条件与次序无关。
2)动作桩:列出输入条件系统可能采取的操作,这些操作的排序没有约束。
3)条件项:列出输入条件的其他取值,在所有可能情况下的真假值。
4)动作项:列出条件的各种取值情况下应采取的动作。
规则:将条件项和动作项组合在一起,即在条件项的各种取值情况下应采取的动作。在判定表中贯穿条件项和动作项的每一列构成一条规则,即测试用例。可以针对每个合法的输入组合的规则设计测试用例进行测试。
规则计算方法为2n 个 n 表示条件个数
在根据判定表设计好的测试用例中,可能存在相似的规则,即条件桩取值对动作桩无影响的情况。此时,可以将规则进行合并。合并的规则是动作桩相同的情况下,并且条件项中存在相似的关系,则可以合并规则。合并规则如图4-9所示
图中Y表示真,N表示假、X表示动作。
判定表分析法的设计用例的步骤如下:
步骤1:找出条件桩和动作桩
步骤2:分析条件项、并计算规则个数、然后构成判定表。
步骤3:根据条件项的各种取值将动作项填入判定表中。
步骤4;简化判定表,合并相似的规则。
步骤5:根据每条规则生成对应的测试用例
在使用判定表时,需要注意,合并是存在缝隙的。因为它是以牺牲输入条件的组合为代价的。一般测试用例少的时候并不建议合并,如果用例设计多需要合并时,最多只进行一次合并。
4.3.4因果图分析法
在利用判定表设计用例的过程中,如果条件过多,导致设计判定表比较困难,为了弥补该缺点,接收一种新的测试用例设计方法-因果图分析法
因果图分析法是分析输入条件之间的约束情况,然后生成判定表,进行用例设计。介绍一下因果图基本图形符号“因果符号”和“约束符号”
1、因果符号
因果是指输入和输出的因果关系。因果符号有恒等、非、或、与四种表示方法,如图4-10所示。
其中c1 表示输入的状态,即原因 , e1 表示输出的状态,即结果。从c1和e1均可以取值为0或1(0表示某种状态不出现,1表示某种状态出现)。
1)恒等:当输入条件发生时,则一定会产生对应的输出,相反当输入条件不发生时,则不产生对应的输出,即c1为1, e1一定为1,否则c1为0, e1一定为0
2)非:与恒定相反,当输入条件发生时,则不产生对应的输出;反义亦然。即c1为1, e1一定为0,负责c1为0, e1一定为1;
3)或:当输入多个条件时,只有其中一个条件发生,则产生对应的输出。即只有c1、c2、c3其中一个为1,e1为1,只有c1、c2、c3全部为0,e1为0,
4)与:当输入多个条件时,只有所有的输入条件发生时,才会产生对应的输出。即c1、c2为1时,e1为1,只要c1、c2、其中一个为0,e1为0,
2、约束符号
是指输入域输出之间存在的某些依赖关系,称为约束。约束符号有异、或、唯一、要求、强制五种表示方法;其中前面四种是针对输入条件的约束,最后一种强制只针对输出条件的约束。如图4-11所示,其中a 、b分别代表条件。条件的取值为0或1(0表示状态不出现,1表示状态出现)
1)异:在所有输入条件中,至少有一个可能不发生。即图4-11中,a 和b最多只有一个为1,不能同时为1,但可以同时为0
2)或:在所有输入条件中,至多有一个不可能发生,即图4-11中,a 、b 、c最少有1个为1,不同同时为0,也不能同时为1.
3)唯一:在所有输入条件中,有且只有一个发生。即图4-11中,a 和b只有一个为1,不同同时为1,也不能同时为0
4)要求:做所有输入条件中,只有有一个发生,则要求其他条件也发生,即图4-11中,a 和b,a为1时,要求b也为1
5)强制:指针对结构的结束关系,当一个结果发生,强制另一个结构不发生,即图4-11中,a 和b,a为1时,要求b也为0
因果图分析法的设计用例步骤如下
步骤1:找出输入条件(原因)和输出条件(结果)
步骤2:画出因果关系图,如果一步不能达到结果,可以借助中间节点。
步骤3:因果关系图转换为判定表
步骤4:简化判定表,合并相似的规则
步骤5:根据每条规则生成对应的测试用例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)