1、上节回顾等价类划分法步骤边界值分析基本知识点任务一等价类需求:城市的电话号码由两部分组成。这两部分的名称和内容分别是:1)地区码:以0开头的三位或者四位数字(包括0);2)电话号码:以非0、非1开头的七位或者八位数字。假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,请使用等价分类法来设计它的测试用例。输入条件有效等价类编号无效等价类编号地区码0开头(1)非0开头(7)三位数字串(2)四位数字串(9)电话号码非0 and 非1开头(4)以0开头(10)以1开头(11)七位数字串(5)八位数字串(13)序号输入参数覆盖等价类输出参数1012-8725656(1)(2)(
2、4)(5)输入正确20123-8546523(1)(3)(4)(5)输入正确3012-84864878(1)(2)(4)(6)输入正确4110-6845316(7)输入错误501-5645642(8)输入错误601111-4552135(9)输入错误7012-0464534(1)(2)(10)输入错误8012-1455544(1)(2)(11)输入错误9012-15454(1)(2)(12)输入错误100123-454514542(1)(3)(13)输入错误输入条件有效等价类编号无效等价类编号地区码0开头(1)非0开头(7)三位数字串(2)四位数字串(9)电话号码非0 and 非1开头(4)以
3、0开头(10)以1开头(11)七位数字串(5)八位数字串(13)任务二日期计算给出某一天(年,月,日),计算出它的下一天,取值范围为:年:1000=year =3000 月:1=month=12 日:1=day=31 如 1999年3月4日的下一天是:1999年3月5日要求:输入:三个参数(年,月,日)输出:如能正确计算,计算出它的下一天,否则,输出相应的错误信息。1)使用C语言编写程序实现2)请结合等价类划分法和边界值分析法设计出相应的测试用例,并依照测试用例对所编写的程序进行测试。输入条件有效等价类编号无效等价类编号年1000=year=3000(1)3000(5)月1=month=12(
4、2)12(7)日1=day=31(3)31(9)序号输入参数覆盖等价类输出结果120020105(1)(2)(3)2002年1月6日29910502(4)输入错误!请从新输入!330120515(5)输入错误!请从新输入!420120015(1)(6)输入错误!请从新输入!520141325(1)(7)输入错误!请从新输入!620070400(1)(2)(8)输入错误!请从新输入!720010632(1)(2)(9)输入错误!请从新输入!序号输入参数输出结果1200002282000年3月1日29990105输入错误!请从新输入!330010312输入错误!请从新输入!420120012输入错
5、误!请从新输入!520111323输入错误!请从新输入!620180300输入错误!请从新输入!720560432输入错误!请从新输入!3.6因果图法3.6.13.6.1因果图法的简介因果图法的简介3.6.23.6.2因果图因果图3.6.33.6.3因果图法测试举例因果图法测试举例3.6.1因果图法的简介因果图法产生的背景:等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,
6、因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。因果图法的简介(续)因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。采用因果图法设计测试用例的步骤:(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。(2)将得到的因果图转换为判定表。(3)为判定表中每一列所表示的情况设计一个测试用
7、例。因果图法的简介(续)使用因果图法的优点:(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系。(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例。(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性。因果图(续)因果图中的4种基本关系在因果图的基本符号中,图中的左结点ci表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci与ei取值0或1,0表示某状态不出现,1则表示某状态出现。恒等:若c1是1,则e1也为1,否则e1为0。非:若c1是1,则e1为0,否则e1为1。或:若c1或c2或c3是1,则
8、e1为1,否则e1为0。与:若c1和c2都是1,则e1为1,否则e1为0。因果图(续)因果图中的约束在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1(但可能多个同时为0)。I约束(或):a、b、c中至少有一个必须为1,即a、b、c不能同时为0(但可能多个同时为1)。O约束(唯一):a和b必须有一个且仅有一个为1。R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。M约束(强制):若结果a为1,则结果b强制为0。因果图
9、(续)因果图中用来表示约束关系的约束符号:a ab b异Ea ab b或Ic ca ab b唯一ORa ab b要求Ma ab b强制因果图(续)因果图法最终生成的是决策表。利用因果图生成测试用例的基本步骤如下:(1)分析软件规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系画出因果图。(3)由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图
10、转换为决策表。(5)根据决策表中的每一列设计测试用例。3.6.3因果图法测试举例n n实例实例 用因果图法测试以下程序。用因果图法测试以下程序。程序的规格说明要求:输入的第一个字符必须是程序的规格说明要求:输入的第一个字符必须是#或或*,第二个字符必须是,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是一个数字,此情况下进行文件的修改;如果第一个字符不是#或或*,则给出信息,则给出信息N N,如果第二个字符不是数字,则给出信息,如果第二个字符不是数字,则给出信息MM。解题步骤:解题步骤:(1 1)分析程序的规格说明,列出原因和结果。)分析程序的规格说明,列出原因和结果。(2
11、 2)找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。)找出原因与结果之间的因果关系、原因与原因之间的约束关系,画出因果图。(3 3)将因果图转换成决策表。)将因果图转换成决策表。(4 4)根据()根据(3 3)中的决策表,设计测试用例的输入数据和预期输出。)中的决策表,设计测试用例的输入数据和预期输出。因果图法测试举例(续)原因原因结果结果c1c1:第一个字符是:第一个字符是#e1e1:给出信息:给出信息N Nc2c2:第一个字符是:第一个字符是*e2e2:修改文件:修改文件c3c3:第二个字符是一个数字:第二个字符是一个数字e3e3:给出信息:给出信息MM(1 1)分析
12、程序规格说明中的原因和结果:)分析程序规格说明中的原因和结果:(2 2)画出因果图(编号为)画出因果图(编号为1010的中间结点是导出结果的进一步原因):的中间结点是导出结果的进一步原因):c1c2c3e110e2e3E因果图法测试举例(续)(3 3)将因果图转换成如下所示的决策表:)将因果图转换成如下所示的决策表:12345678条件:条件:C1C2C310111110101110010111010100100000动作:动作:e1e2e3不可能不可能测试用例测试用例#3#A*6*BA1GT规则选项因果图法测试举例(续)测试用例编号测试用例编号输入数据输入数据预期输出预期输出1 1#3#3修
13、改文件修改文件2 2#A#A给出信息给出信息MM3 3*6 6修改文件修改文件4 4*B B给出信息给出信息MM5 5A1A1给出信息给出信息N N6 6GTGT给出信息给出信息N N和信息和信息MM(4 4)根据决策表中的每一列设计测试用例:)根据决策表中的每一列设计测试用例:经典案例分析经典案例分析有一个处理单价为有一个处理单价为1元元5角的盒装饮料的自角的盒装饮料的自动售货机软件。若投入动售货机软件。若投入1元元5角硬币,按下角硬币,按下“可乐可乐”,“雪碧雪碧”或或“红茶红茶”按钮,相按钮,相应的饮料就送出来。若投入的是两元硬币,应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退
14、还在送出饮料的同时退还5角硬币。角硬币。(1)分析原因及结果)分析原因及结果原因原因c1:投入投入1元元5角硬币;角硬币;c2:投入投入2元硬币;元硬币;c3:按按“可乐可乐”按钮;按钮;c4:按按“雪碧雪碧”按钮;按钮;c5:按按“红茶红茶”按钮按钮;中间状中间状态态11:已投币:已投币12:已按钮:已按钮结果结果a1:退还退还5角硬币;角硬币;a2:送出送出“可乐可乐”饮料;饮料;a3:送出送出“雪碧雪碧”饮料;饮料;a4:送出送出“红茶红茶”饮料饮料;(2)画出因果图)画出因果图(3)决策表)决策表1 12 23 34 45 56 67 78 89 910101111c1:c1:投入投入
15、1 1元元5 5角硬币角硬币c2:c2:投入投入2 2元硬币元硬币c3:c3:按按“可乐可乐”按钮按钮c4:c4:按按“雪碧雪碧”按钮按钮c5:c5:按按“红茶红茶”按钮按钮1 10 01 10 00 01 10 00 01 10 01 10 00 00 01 11 10 00 00 00 00 01 11 10 00 00 01 10 01 10 00 01 10 00 01 10 01 10 00 00 00 00 01 10 00 00 00 00 01 10 00 00 00 00 01 11111:已投币:已投币1212:已按钮:已按钮1 11 11 11 11 11 11 10 0
16、1 11 11 11 11 11 11 10 00 01 10 01 10 01 1a1:a1:退还退还5 5角硬币角硬币a2:a2:送出送出“可乐可乐”饮料饮料a3:a3:送出送出“雪碧雪碧”饮料饮料a4:a4:送出送出“红茶红茶”饮料饮料(4)设计测试用例)设计测试用例用例编号用例编号测试用例测试用例预期输出预期输出1 1投入投入1 1元元5 5角,按角,按“可乐可乐”送出送出“可乐可乐”饮料饮料2 2投入投入1 1元元5 5角,按角,按“雪碧雪碧”送出送出“雪碧雪碧”饮料饮料3 3投入投入1 1元元5 5角,按角,按“红茶红茶”送出送出“红茶红茶”饮料饮料4 4投入投入2 2元,按元,按
17、“可乐可乐”找找5 5角,送出角,送出“可乐可乐”5 5投入投入2 2元,按元,按“雪碧雪碧”找找5 5角,送出角,送出“雪碧雪碧”6 6投入投入2 2元,按元,按“红茶红茶”找找5 5角,送出角,送出“红茶红茶”习题1 1、某软件的一个模块的需求规格说明书中描述:、某软件的一个模块的需求规格说明书中描述:(1 1)年薪制员工:严重过失,扣年终风险金的)年薪制员工:严重过失,扣年终风险金的4%4%;过失,扣年终风险金的;过失,扣年终风险金的2%2%。(2 2)非年薪制员工:严重过失,扣当月薪资的)非年薪制员工:严重过失,扣当月薪资的8%8%;过失,扣当月薪资的;过失,扣当月薪资的4%4%。请绘
18、制出因果图和判定表,并给出相应的测试用例。请绘制出因果图和判定表,并给出相应的测试用例。3.7决策表法3.7.13.7.1决策表决策表3.7.23.7.2决策表应用决策表应用3.7.33.7.3决策表测试应用案例决策表测试应用案例3.7.1决策表在所有的黑盒测试方法中,基于决策表(也称判定表)的测试是最为严格、最具有逻辑性的测试方法。决策表的概念:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具。决策表的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针
19、对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。决策表实例决策表的组成决策表通常由以下4部分组成:条件桩列出问题的所有条件条件项针对条件桩给出的条件列出所有可能的取值动作桩列出问题规定的可能采取的操作动作项指出在条件项的各组取值情况下应采取的动作 条件桩动作桩条件项动作项规则将任何一个条件组合的特定取值及相应要执行的动作称为一条规则。在决策表中贯穿条件项和动作项的一列就是一条规则。决策表的生成构造决策表的5个步骤:(1)确定规则的个数。有n个条件的决策表有2n个规则(每个条件取真、假值)。(2)列出所有的条件桩和动作桩。(3)填入条件项。(4)填入动作项,得到初始决策表
20、。(5)简化决策表,合并相似规则。若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。三角形问题的决策表3.7.2决策表应用NextDate函数的决策表测试用例设计问题分析:NextDate函数的三个变量之间在输入定义域中存在一定的逻辑依赖关系,由于等价类划分和边界值分析测试都假设了变量是独立的,如果采用上述两种方法设计测试用例,那么这些依赖关系在机械的选取输入值时可能会丢失。而采用决策表法则可以通过使用“不可能动作”的概念表示条件的不可能组合,来强调这种依赖关系。说明:当决策表规模
21、(指规则的数目,n个条件的决策表有2n个规则)较大时,可以通过扩展条目决策表(条件使用等价类)、代数简化表、将大表“分解”为小表等方法。实例分析决策表应用(续)决策表测试法适用于具有以下特征的应用程序:if-then-else逻辑突出;输入变量之间存在逻辑关系;涉及输入变量子集的计算;输入与输出之间存在因果关系。适用于使用决策表设计测试用例的条件:规格说明以决策表形式给出,或较容易转换为决策表。条件的排列顺序不会也不应影响执行的操作。规则的排列顺序不会也不应影响执行的操作。当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。如果某一规则的条件要执行多个操作,这些操作的执行顺序无关
22、紧要。3.7.3决策表测试应用案例用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1month12和1day31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004年11月29日,则该程序的输出为2000年12月1日。(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。(2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。(3)根据(1)和(2),画出简化后的决策表。案例分析month
23、变量的有效等价类:M1:month=4,6,9,11M2:month=1,3,5,7,8,10M3:month=12M4:month=2day变量的有效等价类:D1:1day26D2:day=27D3:day=28D4:day=29D5:day=30D6:day=31year变量的有效等价类:Y1:year是闰年Y2:year不是闰年考虑各种有效的输入情况,程序中可能采取的操作有以下六种:a1:day+2a2:day=2a3:day=1a4:month+1a5:month=1a6:year+1习题1 1、根据教材、根据教材P85P85中给出的简化后的决策表,设计相应的测试用例。中给出的简化后的
24、决策表,设计相应的测试用例。2 2、某软件的一个模块的需求规格说明书中描述:、某软件的一个模块的需求规格说明书中描述:“对于功率大于对于功率大于5050马力的机器或者维修记录不全的或已经运行马力的机器或者维修记录不全的或已经运行1010年以上年以上的机器应予以优先的维修处理的机器应予以优先的维修处理”。这里假定这里假定“维修记录不全维修记录不全”和和“优先维修处理优先维修处理”有严格的定义。有严格的定义。请建立该需求的决策表,并绘制出化简(合并规则)后的决策表。请建立该需求的决策表,并绘制出化简(合并规则)后的决策表。3.8错误推测法错误推测法的概念:基于经验和直觉推测程序中所有可能存在的各种
25、错误,从而有针对性的设计测试用例的方法。错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如:在单元测试时曾列出的许多在模块中常见的错误、以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据和输出数据为0的情况、输入表格为空格或输入表格只有一行等。这些都是容易发生错误的情况,可选择这些情况下的例子作为测试用例。3.9测试方法的选择通常,在确定测试方法时,应遵循以下原则:根据程序的重要性和一旦发生故障将造成的损失来确定测试等级和测试重点。认真选择测试策略,以便能尽可能少的使用测试用例,发现尽可能多的程序错误。因为一次完整的软件测试
26、过后,如果程序中遗留的错误过多并且严重,则表明该次测试是不足的,而测试不足则意味着让用户承担隐藏错误带来的危险,但测试过度又会带来资源的浪费。因此测试需要找到一个平衡点。测试方法的选择(续)通常在确定测试策略时,有以下5条参考原则:(1)在任何情况下都必须采用边界值分析法。这种方法设计出的测试用例发现程序错误的能力最强。(2)必要时采用等价类划分法补充测试用例。(3)采用错误推断法再追加测试用例。(4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,则应当再补充更多的测试用例。(5)如果程序的功能说明中含有输入条件的组合情况,则应一开始就选用因果图法。习题1 1
27、、某城市电话号码由三部分组成,分别是:、某城市电话号码由三部分组成,分别是:地区码地区码空白或三位数字;空白或三位数字;前前缀缀非非 00或或 11开头的三位数字;开头的三位数字;后后缀缀44位数字。位数字。假定被测程序能接受一切符合上述规定的电话号码,假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定拒绝所有不符合规定的电话号码。要求:的电话号码。要求:(1 1)请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,)请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,给出测试用例表。给出测试用例表。(2 2)如果所生成的测试用例不够全面,请考虑用
28、别的测试)如果所生成的测试用例不够全面,请考虑用别的测试 方法生成一些补充的方法生成一些补充的测试用例。测试用例。多于3位数字少于3位数字有非数字字符空白3位数字地区码编号无效等价类编号有效等价类输入条件前缀前缀200999有非数字字符有非数字字符起始位为起始位为0起始位为起始位为1少于少于3位数字位数字多于多于3位数字位数字后缀后缀4位数字位数字有非数字字符有非数字字符少于少于4位数字位数字多于多于4位数字位数字341256789101112131415使用等价类划分法测试用例测试用例编号编号输入数据输入数据预期输出预期输出地区码地区码前缀前缀后缀后缀1空白空白1234567接受(有效)接受
29、(有效)21238059876接受(有效)接受(有效)320A1234567拒绝(无效)拒绝(无效)4332345678拒绝(无效)拒绝(无效)512342344567拒绝(无效)拒绝(无效)61232B31234拒绝(无效)拒绝(无效)71230131234拒绝(无效)拒绝(无效)81231231234拒绝(无效)拒绝(无效)9123231234拒绝(无效)拒绝(无效)1012323451234拒绝(无效)拒绝(无效)111232341B34拒绝(无效)拒绝(无效)1212323434拒绝(无效)拒绝(无效)1312323423345拒绝(无效)拒绝(无效)覆盖等价类覆盖等价类1,3,42,
30、3,456789101112131415习题2 2、有一个处理单价为、有一个处理单价为5 5角钱的饮料的自动售货机,相应规格说明如下:角钱的饮料的自动售货机,相应规格说明如下:若投入若投入5 5角钱或角钱或1 1元钱的硬币,按下元钱的硬币,按下橙汁橙汁或或啤酒啤酒的按钮,则相应的饮料的按钮,则相应的饮料就送出来。(每次只投入一个硬币,只押下一种饮料的按钮)就送出来。(每次只投入一个硬币,只押下一种饮料的按钮)如投入如投入5 5角的硬币,按下按钮后,总有饮料送出。角的硬币,按下按钮后,总有饮料送出。若售货机没有零钱找,则一个显示若售货机没有零钱找,则一个显示零钱找完零钱找完的红灯会亮,这时再投入的红灯会亮,这时再投入1 1元硬元硬币并按下按钮后,饮料不送出来而且币并按下按钮后,饮料不送出来而且1 1元硬币也退出来。元硬币也退出来。若有零钱找,则显示若有零钱找,则显示零钱找完零钱找完的红灯不会亮,若投入的红灯不会亮,若投入 1 1元硬币及按饮料按元硬币及按饮料按钮,则送出饮料的同时找回钮,则送出饮料的同时找回5 5角硬币。角硬币。请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,请选择适当的黑盒测试方法,写出选择该方法的原因,并使用该方法的步骤,设计出相应的测试用例。设计出相应的测试用例。thend你今天微笑了吗?你今天微笑了吗?