美文网首页
黑盒用例设计方法

黑盒用例设计方法

作者: 梦想编织着青春O | 来源:发表于2019-03-27 12:16 被阅读0次

    一.  黑盒测试

            黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试。

    黑盒测试示意图

            测试人员把被测程序当作一个黑盒子。

             黑盒测试主要测试的错误类型有:

            (1)不正确或遗漏的功能;

            (2)接口、界面错误;

            (3)性能错误;

            (4)数据结构或外部数据访问错误;

            (5)初始化或终止条件错误等等。

            运用黑盒测试方法,可以导出满足以下标准的测试用例集:

            (1)所设计的测试用例能够减少达到合理测试所需的附加测试用例数;

            (2)所设计的测试用例能够告知某些类型错误的存在或不存在,而不是仅仅与特定测试相关的错误。

            注:用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。但这是不可能的,因为穷举测试数量太大,无法完成。

            假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:

    程序P

            可能采用的测试数据组:232×232=264

            如果测试一 组数据需要1毫秒,一年工作365× 24小时,完成所有测试需5亿年。

            因此,我们只能在大量可能的数据中,选取其中一部分作为测试用例。

    二.  黑盒用例设计技术

            等价类划分方法

            边界值分析方法

            场景法

            错误推测方法

            因果图判定表方法

            正交试验设计方法

    1.  等价类划分

            是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数据有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法。

            方法简介:

            (1)划分等价类:等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类。

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

            b.  无效等价类:与有效等价类的定义恰巧相反。无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。

            注:设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性。

            (2)划分等价类的标准:

            a.  完备测试、避免冗余;

            b.  划分等价类重要的是:集合的划分、划分为互不相交的一组子集,而子集的并是整个集合;

            c.  并是整个集合:备性;

            d.  子集互不相交:保证一种形式的无冗余性;

            e.  同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”。

            (3)划分等价类的方法

    划分等价类的方法

            (4)设计测试用例

            a.  为每一个等价类规定一个唯一的编号;

            b.  设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;

            c.  设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

            例如:

    QQ登录 登录界面 等价类划分 等价类用例

    2.  边界值分析法

            边界值分析方法是对等价类划分方法的补充。

            边界值分析方法的考虑:

            (1)长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误。

            (2)使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

            与等价类划分的区别:

            (1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。

            (2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

            通常情况下,软件测试所包含的边界检验有几种类型:数字、字符、位置、重量、大小、速度、方位、尺寸、空间等。

            相应地,以上类型的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、  最短/最长、 空/满等情况下进行测试。

    边界值分析法

            (1)如果输入条件规定的是一个取值区间或取值个数,且该区间包含边界本身,比如,一个输入文件应包括[1~255]个记录,则测试用例可取1和255,还应取0及256等。

            (2)如果输入条件规定取值区间或取值个数,但是该区间不包含边界本身,比如,某学校的学生年龄为(17~24)岁,则测试用例可取17和24,还应取18及23等。

            边界值取值的个数最多只有4个,不会有超过4个数的情况。

    硬件设备

    3.  场景法

            场景法也叫流程分析法,是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支都能走到。

            现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。

            比较常见的有: 网上购物流程, ATM机取款流程等。

            (应用)基本流和备选流:如下图所示,图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)

    基本流和备选流

            基本流和备选流的识别原则:

            (1)一个业务只存在一个基本流;

            (2)基本流只有一个起点,一个终点;

            (3)基本流是主流,备选流是支流;

            (4)备选流可以起始于基本流,也可以起始于其它备选流;

            (5)备选流的终点可以是一个流程的出口,也可以是回到基本流,还可以是汇入其它的备选流。

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

            (1)画出需要测试路径的流程图(一般选择工具Office Visio);

            (2)分析基本流和备选流;

            (3)根据基本流和备选流设计测试用例。

            场景法例子1—ATM机取款

            基本流程:

            (1)用户向ATM提款机中插入银行卡,如果银行卡是合法的,ATM提款机界面提示用户输入提款密码;

            (2)用户输入该银行卡的密码,检验密码的正确性。如果输入密码正确,提示用户输入取钱金额,提示信息为,“请输入您的提款额度”;

            (3)用户输入取钱金额,系统校验金额正确,提示用户确认,提示信息为“您输入的金额是xxx,请确认,谢谢!”,用户按下确认键,确认需要提取的金额;

            (4)系统同步银行主机,点钞票,输出给用户,并且减掉数据库中该用户帐户中的存款金额;

            (5)用户提款,银行卡自动退出,用户取走现金,拔出银行卡,ATM提款机界面恢复到初始状态。

    参数1 参数2

            备选事件流(考虑可能失败的地方):

            在基本事件流1中:如果插入无效的银行卡,那么,在ATM提款机界面上提示用户“您使用的银行卡无效!”,3秒钟后,自动退出该银行卡。

            在基本事件流2中:

            a.  如果用户输入的密码错误,则提示用户“您输入的密码无效,请重新输入”;

            b.  如果用户连续3次输入错误密码,ATM提款机吞卡,并且ATM提款机的界面恢复到初始状态。此时,其他提款人可以继续使用其他的合法的银行卡在ATM提款机上提取现金;

            c.  用户输入错误的密码后,也可以按“退出”键,则银行卡自动退出。

            在基本事件流3中:

            a.  如果用户输入的单笔提款金额超过单笔提款上限,ATM提款机界面提示“您输入的金额错误,单笔提款上限金额是3000RMB,请重新输入”;

            b.   如果用户输入的单笔金额,不是以100RMB为单位的,那么提示用户“您输入的提款金额错误,请输入以100为单位的金额”;

            c.  如果用户在24小时内提取的金额大于20000RMB,则ATM提款机提示用户,“24小时内只能提取20000RMB,请重新输入提款金额”输入提取的金额超过了系统的设定的限制 ;

            d.  如果用户输入正确的提款金额,ATM提款机提示用户确认后,用户取消提款,则ATM提款机自动退出该银行卡;

            e.  如果ATM提款机中余额不足,则提示用户,“抱歉,ATM提款机中余额不足”,3秒钟后,自动退出银行卡。

            在基本事件流4中:如果用户银行户头中的存款小于提款金额,则提示用户“抱歉,您的存款余额不足!”,3秒钟后,自动退出银行卡。

            在基本事件流5中:如果用户没有取走现金,或者没有拔出银行卡,ATM提款机不做任何提示,直接恢复到界面的初始状态。

            数据设计:一旦确定了所有的测试用例,则应对这些用例进行复审和验证以确保其准确且适度,并取消多余或等效的测试用例。测试用例一经认可,就可以确定实际数据值(在测试用例实施矩阵中)并且设定测试数据。

    数据设计

            场景法例子2-在线购物系统

            我们都在当当网或china-pub华章网上书店都订购过书籍,整个订购过程为:用户登录到网站后,进行书籍的选择,当选好自己心仪的书籍后进行订购,这时把所需图书放进购物车,等进行结帐的时候,用户需要登录自己注册的帐号,登录成功后,进行结帐并生成订单,整个购物过程结束。

            那么我们通过以上的描述,从中确定哪是基本流,哪些是备选流:

    基本流和备选流

            根据基本流和备选流来确定场景:

    场景

            在下面的矩阵中,V(有效)用于表明这个条件必须是 VALID(有效的)才可执行基本流,而 I(无效)用于表明这种条件下将激活所需备选流。

            下表中使用的“n/a”(不适用)表明这个条件不适用于测试用例。

    测试用例 测试数据

    4.  错误推测法

            错误推测法: 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。    

            错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。

            例如, 输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例。

            例如,测试手机终端的通话功能,可以设计各种通话失败的 情况来补充测试用例:

            (1)无SIM 卡插入时进行呼出(非紧急呼叫);

            (2)插入已欠费SIM卡进行呼出;

            (3)射频器件损坏或无信号区域插入有效SIM卡呼出;

            (4)网络正常,插入有效SIM卡,呼出无效号码(如1、888、333333、不输入任何号码等);

            (5)网络正常,插入有效SIM卡,使用“快速拨号”功能呼出设置无效号码的数字。

            再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:

            (1)输入的线性表为空表;

            (2)表中只含有一个元素;

            (3)输入表中所有元素已排好序;

            (4)输入表已按逆序排好;

            (5)输入表中部分或全部元素相同。

    5.  因果图方法

            前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等。

            考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图( Cause一Effect Graphics )方法。

            采用因果图方法能够帮助我们按一定步骤,高效率地选择测试用例,同时还能为我们指出,程序规格说明描述中存在着什么问题。

            4种符号分别表示了规格说明中向4种因果关系。

    因果关系

            因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。 

            Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。ci和ei均可取值0或1,0表示某状态不出现,1表示某状态出现。

            关系:

            (1)恒等:若ci是1,则ei也是1;否则ei为0。

            (2)非:若ci是1,则ei是0;否则ei是1。

            (3)或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。

            (4)与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。

            约束:

            输入状态相互之间还可能存在某些依赖关系,称为约束。例如, 某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。

    约束

            输入条件的约束有以下4类:

            (1)E约束(异):a和b中至多有一个可能为1,即a和b不能同时为1。

            (2)I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。

            (3)O约束(唯一);a和b必须有一个,且仅有1个为1。

            (4)R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。

            输出条件约束类型:

            输出条件的约束只有M约束(强制):若结果a是1,则结果b强制为0。

            因果图方法最终生成的是判定表。它适合于检查程序输入条件的各种组合情况。利用因果图生成测试用例的基本步骤:

            (1)分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。

            (2)分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图。

            (3)由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。

            (4)把因果图转换为判定表。

            (5)把判定表的每一列拿出来作为依据,设计测试用例。

    判定表(决策表)

            规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少。

            条件桩(Condition Stub):列出了问题的所有条件.通常认为列出的条件的次序无关紧要。

            动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束。

            条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值。

            动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

            例1:某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。

    原因和结果

            其对应的因果图如下:

            11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。

    因果图 原因和结果 根据因果图建立判定表

            表中8种情况的左面两列情况中,原因①和原因②同时为1,这是不可能出现的,故应排除这两种情况。表的最下一栏给出了6种情况的测试用例,这是我们所需要的数据。

            例2:有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。 其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。分析这一段说明,列出原因和结果。

    原因和结果 因果图

            所有原因结点列在左边,所有结果结点列在右边。

            建立中间结点,表示处理的中间状态。

            中间结点: 11. 投入1元硬币且押下饮料按钮

            12. 押下〖橙汁〗或〖啤酒〗的按钮

            13. 应当找5角零钱并且售货机有零钱找

            14. 钱已付清

    判定表

            在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。

            总结:

            (1)因果图方法是一个非常有效的黑盒测试方法,它能够生成没有重复性的且发现错误能力强的测试用例,而且对输入、输出同时进行了分析。

            (2)从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。

            (3)如果哪个开发项目在设计阶段就采用了判定表,也就不必再画因果图,而是可以直接利用判定表设计测试用例了。

            因果图判定表法适用于检查程序输入条件的各种组合情况。利用因果图设计测试用例需要考虑输入条件与输出结果之间的因果关系,而这些因果关系很难从需求规格说明书中直接得出,一般软件系统的因果关系非常的复杂,所以利用因果图设计用例时费时、费力。

    6.  正交试验设计法

            正交试验设计是研究多因素多水平的又一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点。

            测试用例的设计步骤:

            (1)提取功能说明,标明因子和水平

            因子:影响实验指标的条件.在测试中,影响软件其功能实现的操作对象和外部因素称为因子。

            水平:影响实验因子的条件.在测试中,把各个因子的取值当作水平.

            (2)生成正交分析表

            正交表的表示方式:N=试验次数(行数)=∑(水平数-1)*因子数+1

            LN (水平数因子数)

            因子数:正交表中列的个数;

            水平数:任何单个因素能够取得的值的最大个数;

            (3)利用正交表构造测试数据集,按行来编写测试用例。

    正交表

            正交试验法例子—银行转账

            例子说明:进行测试例估计和设计的依据是需求规格说明书和设计说明书。一般的步骤如下:

            (1)分析影响测试对象的要素;

            (2)为每个要素确定取值;

            (3)生成正交表;

            (4)在初始测试例集上依据对测试对象的分析来进行测试例集的修改;

            (5)把测试例转化为可以测试执行使用的测试例。

            例如在对某一应用系统的转账功能进行测试过程中,利用正交矩阵生成测试用例步骤如下:

    测试用例

            a.  因素和水平数分析:

            在本例中,因素数为5,水平值有两个,一个是2,因为前四个操作条件取值个数是2个;另一个水平值为4;

            b.  生成正交表达示: LN(2441)

            N=(2-1)X4+(4-1)X1+1=8

            c.  生成正交表

            列数=因素个数=5列

            行数=测试次数N=8次

    正交表

            测试方法选择的综合策略:

            (1)首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效方法。

            (2)在任何情况下都必须使用边界值分析方法。经验表明用这种方法设计出测试用例发现程序错误的能力最强。

            (3)用错误推测法再追加一些测试用例。

            (4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。

            (5)对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。

    相关文章

      网友评论

          本文标题:黑盒用例设计方法

          本文链接:https://www.haomeiwen.com/subject/ycgavqtx.html