第3章黑盒测试及其用例的设计3.1黑盒测试法的概念3.2三角形问题与NextDate函数3.3等价类划分法3.4边界值分析法3.5因果图法3.6决策表法习题1、某城市电话号码由三部分组成。它们的名称和内容分别是:地区码:空白或三位数字;前缀:开头位非‘0’或开头位非‘1’的三位数字;后缀:4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该程序的规格说明,作等价类的划分,并设计测试方案。步骤1.划分等价类输入条件有效等价类无效等价类地区码1.空白;2.三位数;1.有非数字字符;2.少于三位数字;3.多于三位数字。前缀3.从200到999之间的三位4.有非数字字符;5.起始位为‘0’;6.起始位为‘1’;7.少于三位数字;8.多于三位数字。后缀4.四位数字。9.有非数字字符;10.少于四位数字;11.多于四位数字。步骤2:选择测试方案弱一般等价类测试强一般等价类测试弱健壮等价类测试强健壮等价类测试选择弱健壮等价类设计有例个数max(mi)+(l1+l2+…+ln)个=2+11个。方案内容输入预期输出地区码前缀后缀1空白200~999之间的三位数字四位数字()276-2345有效2三位数字四位数字(635)805-9321有效3有非数字字符(20A)723-4567无效4少于三位数字(33)234-5678无效5多于三位数字(5555)345-6789无效6有非数字字符(345)5A2-3456无效7起始位为‘0’(345)012-3456无效8起始位为‘1’(345)132-3456无效9少于三位数字(345)92-3456无效10多于三位数字(345)4562-3456无效11有非数字字符(345)342-3A56无效12少于四位数字(345)342-356无效13多于四位数字(345)562-34567无效习题2、找零钱最佳组合假设商店货品价格(R)都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。假定此商店的货币面值只包括:50元(N50)、10元(N10)、5元(N5)、1元(N1)四种。请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。步骤1.划分等价类输入条件有效等价类无效等价类R价格1.0~5;2.6~10;3.11~50;4.51~100;1.小于0;2.大于100;P付款1.0~5;2.6~10;2.11~50;3.51~1001.小于0;2.大于100;步骤2:选择测试方案弱一般等价类测试强一般等价类测试弱健壮等价类测试强健壮等价类测试选择强一般等价类设计有例个数m1*m2*…*mn个=3*3=9个。方案内容用例输入预期输出价格R付款PRP招零钱张数10~100~10;792张一元211~50;812不可能351~100960不可能411~500~10;325不够511~50;35462张五元1张一元651~100751~1000~10;811~50;951~100对此题考虑边界值测试?3.6因果图法3.6.1因果图法的简介3.6.2因果图3.6.3因果图法测试举例因果图(续)ab异Eab或Icab唯一ORab要求Mab强制因果图中用来表示约束关系的约束符号:因果图(续)因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:(1)分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为决策表。(5)根据决策表中的每一列设计测试用例。3.6.3因果图法测试举例实例用因果图法测试以下程序。程序的规格说明要求:输入的第一个字符必须是#或*,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是#或*,则给出信息N,如果第二个字符不是数字,则给出信息M。解题步骤:(1)分析程序的规格说明,列出原因和结果。(2)找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。(3)将因果图转换成决策表。(4)根据(3)中的决策表,设计测试用例的输入数据和预期输出。因果图法测试举例(续)(1)分析程序规格说明中的原因和结果:(2)画出因果图(编号为10的中间结点是导出结果的进一步原因):原因结果c1:第一个字符是#e1:给出信息Nc2:第一个字符是*e2:修改文件c3:第二个字符是一个数字e3:给出信息Mc1c2c3e110e2e3~∨E~∧因果图法测试举例(续)(3)将因果图转换成如下所示的决策表:12345678条件:C1C2C310111110101110010111010100100000动作:e1e2e3不可能√√√√√√√√√测试用例#3#A*6*BA1GT规则选项因果图法测试举例(续)(4)根据决策表中的每一列设计测试用例:测试用例编号输入数据预期输出1#3修改文件2#A给出信息M3*6修改文件4*B给出信息M5A1给出信息N6GT给出信息N和信息M习题1、某软件的一个模块的需求规格说明书中描述:(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。请绘制出因果图和判定表,并给出相应的测试用例。(1)分析程序规格说明中的原因和结果:(2)画出因果图(编号为10的中间结点是导出结果的进一步原因):原因结果c1:员工是年薪制e1:扣年终风险金的4%c2:员工有严重过失e2:扣年终风险金的2%c3:员工有过失e3:扣当月薪资的8%e4:扣当月薪资的4%c1c2c3e110e2e3~∨E~∧C2C1C3E10102~E2E3E4∧∧∧∧E(3)将因果图转换成如下所示的决策表:12345678条件:C1C2C3111110101100011010001000动作:e1e2e3e4不可能√√测试用例规则选项(4)根据决策表中的每一列设计测试用例:测试用例编号输入数据预期输出1234563.7决策表法3.7.1决策表3.7.2决策表应用3.7.3决策表测试应用案例3.7.1决策表在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。决策表的概念:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。决策表实例决策表的组成决策表通常由以下4部分组成:条件桩—列出问题的所有条件条件项—针对条件桩给出的条件列出所有可能的取值动作桩—列出问题规定的可能采取的操作动作项—指出在条件项的各组取值情况下应采取的动作条件桩动作桩条件项动作项规则将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则。决策表的生成构造决策表的5个步骤:(1)确定规则的个数。有n个条件的决策表有2n个规则(每个条件取真、假值)。(2)列出所有的条件桩和动作桩。(3)填入条件项。(4)填入动作项,得到初始决策表。(5)简化决策表,合并相似规则。若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。三角形问题的决策表习题1、根据教材P85中给出的简化后的决策表,设计相应的测试用例。2、某软件的一个模块的需求规格说明书中描述:“……对于功率大于50马力的机器或者维修记录不全的或已经运行10年以上的机器应予以优先的维修处理……”。这里假定“维修记录不全”和“优先维修处理”有严格的定义。请建立该需求的决策表,并绘制出化简(合并规则)后的决策表。习题2、有一个处理单价为5角钱的饮料的自动售货机,相应规格说明如下:若投入5角钱或1元钱的硬币,按下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。(每次只投入一个硬币,只押下一种饮料的按钮)如投入5角的硬币,按下按钮后,总有饮料送出。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯会亮,这时再投入1元硬币并按下按钮后,饮料不送出来而且1元硬币也退出来。若有零钱找,则显示〖零钱找完〗的红灯不会亮,若投入1元硬币及按饮料按钮,则送出饮料的同时找回5角硬币。请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,设计出相应的测试用例。