黑盒测试的方法,一般在功能测试中应用到的会比较多,我们先来整体的了解下都有哪些方法会在工作中会使用到。
我们由易到难的一一说明,首先来说一下等价类划分。
等价类划分:
定义:
是把所有可能输入的数据,分成若干部分(子集),在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。
策略:
只要有数据输入的地方,就可以使用等价类划分;
原因:
穷举测试不可能;
解决:
如何使用最少的数据,达到最大的覆盖;
有效等价类:
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。程序接收到有效等价类数据,可以正确执行。
无效等价类:
指对程序规格说明是不合理的或无意义的输入数据所构成的集合。程序接收到无效等价类,应给出错误提示,或根本不让用户输入。
常见应用:
边界值分析法:
定义:对输入或输出的边界值进行测试的一种黑盒测试方法。
作用:
作为等价类划分法的补充,其测试用例来自等价类的边界。
应用场合:
只要有数据输入的地方,一般就可以使用边界值。
常见的边界值:
(1)对16-bit的整数而言32767和-32768是边界;
(2)屏幕上光标在最左上、最右下位置;
(3)报表的第一行和最后一行;
(4)数组元素的第一个和最后一个;
(5)循环的第0次、第一次和倒数第2次、最后一次;
边界值与等价类划分法的区别:
(1)边界值分析不是从某等价类中随便随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
(2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
经验:
1、大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。
2、针对各种边界情况设计测试用例,可以查出更多的错误。
策略:
1、设计测试用例,首先应确定边界情况。
2、通常输入和输出等价类的边界,就是应着重测试的边界情况。
3、应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或者任意值作为测试数据。
常见的应用:
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
2)如果输入条件规定了值的个数,则用最大个数,最小个数比最小个数少已,比最大个数多一的数作为测试数据。
3)将规则1和2应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。
4)如果程序的规格说明给出输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
6)分析规格说明,找出其它可能的隐藏的边界条件。
总结:
1、边界值法是等价类的补充;
2、输入和输出的边界;
3、恰好大于小于或等于;
4、注意隐藏的边界。
因果图法:
简要说明:
因果图法即因果分析图,又叫特性要因图、石川图或鱼翅图。
通过带箭头的线,将质量问题与原因之间的关系表示出来,是分析影响产品质量的诸因素之间关系的一种工具。
来历:
由日本东京大学教授石川馨提出的。
什么是因果?
每种输入条件的组合就是“因”,必然的一个输出结果,就是“果”。
定义:
根据输入条件的组合,约束关系与输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法。
应用:
一个功能模块或个一界面中有 多个控件;这些控件有一定的关系,可以形成组合关系,并且输出依赖于输入的条件。
目的:
用于检查程序输入条件涉及的各种组合情况。
策略:
一般和判定表结合使用,通过映射同时发生相互影响的多个输入来确定判定条件。
意义:
采用因果图法能帮助我们按照一定的步骤选择一组高效的测试用例,同时,同时还能指出程序规范中存在什么问题。
操作步骤:
1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图。
3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用些记号表明约束或限制条件。
4)把因果图转换为判定表。
5)把判定表的每一列拿出来作为依据,设计测试用例。
输入与输出:
1)恒等:若a=1,则b=1;否则b=0;
2)非:若a=1,则b=0;否则b=1;
3)或:若a或b或c是1,则a为1,否则a为0;“或”可有任意个输入。
4)与:若a和b都是1,则a为1,否则a为0;“与”也可有任意个输入。
输入与输入:
E异(互斥):最多可能一个为1,不能同时为1;a=1时b=0; a=0时,b=0; a=0时,b=1;
I包含(或):不能同时为0,;a=1时 b=0; a=1时b=1;a=0时,b=1;
0唯一:有且仅有一个为1;a=1时,b=0;a=0时,b=0;
R要求:a要求b,a为1时b必须为1 a=1时b=1; a=0时b=1;a=0时,b=0;
输出与输出之间的关系:
M强制:a强制b, a为1时b必须为0,a=1时 b=0;a=0时b=1;a=0时,b=0;
判定表法:
定义:
是分析和表达多逻辑条件下执行不同操作的情况的工具。
组成:
条件桩:列出了问题的所有条件。
动作桩:列出了问题规定可能采取的操作。
条件项:列出针对它所列条件的取值,在所有可能情况下的真假值。
动作项:列出在条件项的各种取值情况下应该采取的动作。
判定表的建立步骤:
第一步:确定规则的个数;假如有n个条件,每个条件有两个取值(0,1),故有2的n次方种规则。
第二步:列出所有的条件桩和动作桩。
第三步:填入条件项
第四部:填入动作项,制定初始判定表。
第五步:简化。合并相似规则或者相同动作。
判定表的简化:实际使用决策表时,常常先将它简化,简化是以合并相似的规则为目标的。判定表的简化主要包含:规则合并与规则包含;
1、规则合并:
若两条或多条规则的动作项相同,条件项只有一项不同,则可将该项合并,合并后的条件项用符号“—”表示,说明执行的动作与该条件的取值没有关系,成为无关条件。
2、规则包含:
无关条件项“—”在逻辑上又可包含其它的条件项取值,具有相同动作的规则还可进一步合并。
合并(简化)的缺点:
1、合并也存在漏测的风险;
程序对于某个条件有不同的分支,若错误的将其合并,导致某条或某些路径没有被测试覆盖,造成漏测。
(原因:条件类似且动作相同的路径,在程序内部可能有不同的分支,简化会丧失对某些程序分支的覆盖)
2、写出的用例逻辑性会变差:
建议:不合并为好,不要为了节省几个用例去牺牲整个用例的逻辑性。
正交排列法:每一种不同的元素在同一行、同一列只出现一次。
应用场合:
1、有很多控件,每个控件有很多个取值;
2、要考虑不同控件不同取值之间的组合;
3、组合数较大,而且没有必要为每一种组合编写用例。
在这种情况下,我们就不采用因果图法来设计测试用例,而是选择正交排列法。
方法:
用部分试验来代替全面测试,通过对部分试验结果的分析,了解全面试验的情况;
正交排列设计方法:依据galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理的安排实验(测试)的一种科学实验设计方法;
方法步骤:
a、分析需求——有多少个控件组合,每个控件的取值列出表格;
b、选择正确的正交表:(Ln(m)k)
1.根据控件的个数,确定列数K.
2.根据每个控件的取值个数,确定m.
3、确定m、k后,可以查表,确定n,以及这个表
c、把控件名称和控件的取值映射到正交表中
1)把正交表的列名分别用控件名称替代
2)把正交表的内容替换为控件的取值
d、设计编写用例——把正交表的每一行转换成1条用例
和因果图法的区别:
因果图法适用于控件组合数量较少,要比较全面的考虑所有情况;
正交排列法适用于控件组合数量庞大,而从代码角度讲又没有必要全部测试;
正交排列法的核心思想是:从大量的数据中挑选适量的、有代表性的点进行测试。
场景法:用事件触发来控制流程,事件触发时的情景便形成了场景。
事件流:
同一件事情不同的触发顺序和处理结果就形成事件流。
场景法的流程图:
图中经过用例的每条路径都用基本流和备选流来表示。
基本流就是那一条主线,也就是那条笔直的黑线。
备选流就是曲曲的黑线。
举例来说,
应用的领域:
大多数软件都会用到这种方法,因为每个软件后面都有业务的支撑。
步骤:
1)详细分析需求(前提条件,一定要熟悉业务)
2)画出需要测试路径的流程图(一般选择工具Office Visio,也就是我上面画图的工具)
3)分析基本流个备选流
4)根据基本流和备选流设计测试用例
错误推算法:
基于经验和直觉推测程序中所有可能存在的各种错误有针对性的设计测试用例 的方法。
基本思想:
列举程序中
a、可能有的错误
b、容易发生错误的特殊情况
根据它们选择测试用例。
举例说明:
前提条件:
深度熟悉被测系统的业务、需求
对被测系统或类似系统之前的缺陷分布情况进行过系统的分析。包括功能缺陷,数据缺陷,接缺陷和界面缺陷。
优点:充分发挥个人的经验和潜能,命中率高;
缺点:覆盖率难以保证,过多依赖于个人经验;
总结:
1、长期的经验积累;2、熟知业务流程;3、了解编程思想;
综合策略:
1、在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强。
2、必要时用等价类划分方法补充一些测试用例。
3、用错误推算法再添加一些测试用例。
4、对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充一些测试用例。
5、如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法。
6、对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳的效果。
7、利用功能图法可以通过不同时期条件的有效性设计不同的测试数据。
8、对于业务流清晰的系统,可以利用场景法贯穿整个测试案例设计过程,在用例中综合使用各种测试方法。
我会在后续的文章中慢慢更一些关于java以及python的基础语法知识,帮助想要简单了解的那些小伙伴。有兴趣的小伙伴可以加861268173这个qq群,群里也会分享慢慢分享一些专业的知识,会做问题的解答。适合想要进入此专业的小伙伴,相信你能收获到很多实际的帮助。如果有想要了解的问题,可以在文章下方留言,我会尽心回复的。