1、X2两个变量函数边界值分析测试用例X2两个变量函数的健壮性测试用例两变量函数的最坏情况测试用例X2基于判定表的测试基于判定表的测试n判定表的基本理论n基于判定表的测试用例设计方法n案例分析例:例:维修机器问题维修机器问题u问题描述:问题描述:“对于功率大于对于功率大于50马力的机器,马力的机器,并且维修记录不全或已运行并且维修记录不全或已运行10年以年以上的机器,应给予优先的维修处上的机器,应给予优先的维修处理理”例:例:工作安排问题工作安排问题u问题描述:问题描述:u研究所重新对其在大学以上学历的职工安排工作。其方针如下:如果年龄不满18岁,文化程度是大学,若是男性,则一律要求考研究生。若是
2、女性,则分配到研究所办公室任行政干部;如果年龄满18岁但不足50岁,文化程度是研究生,不分男女性,均任课题组长。文化程度是大学,则不分男女性均担任中层以上各级领导干部;如果年龄满50岁以上,文化程度是研究生,若是男性,则任课题组长。文化程度是大学,若是男性,则任科研人员。若是女性,则任资料员。1. 判定表的原理判定表的原理u判定表判定表判定表(判定表(Decision Table),又叫),又叫决策表决策表判定表是分析和表达判定表是分析和表达多逻辑条件多逻辑条件下执行下执行不不同操作同操作的工具。的工具。判定表的组成判定表的组成规则规则u任何一个条件组合的特定取值及其相应任何一个条件组合的特定
3、取值及其相应要执行的操作称为规则;要执行的操作称为规则;u在判定表中贯穿在判定表中贯穿条件项和动作项的一列的一列就是一条规则;就是一条规则;u判定表中列出多少组条件取值,即有多判定表中列出多少组条件取值,即有多少条规则,即条件项和动作项有多少列。少条规则,即条件项和动作项有多少列。规则示例:三角形问题规则示例:三角形问题2. 判定表建立步骤判定表建立步骤u根据软件规格说明根据软件规格说明列出所有的条件桩和动作桩;列出所有的条件桩和动作桩;确定规则的个数;确定规则的个数;F假如有假如有n个条件,每个条件有两个取值(个条件,每个条件有两个取值(0,1),则有则有2n 种规则;种规则; 填入条件项;
4、填入条件项;填入动作项,得到初始决策表;填入动作项,得到初始决策表;简化,合并相似规则(相同动作)。简化,合并相似规则(相同动作)。规则(续)规则(续)u规则合并规则合并规则合并就是判定表的规则合并就是判定表的简化。有两条或多条规则具有有两条或多条规则具有相同的动作,并且,并且其条件项之间存在着极为其条件项之间存在着极为相似的关系,就,就可以将规则合并。可以将规则合并。(1)两条规则合并成一条)两条规则合并成一条u条件项条件项“”表示与取值表示与取值无关。无关。(2)两条规则的进一步合并)两条规则的进一步合并u条件项条件项“”在逻辑上包在逻辑上包含其它的条含其它的条件。件。例:例:维修机器问题
5、维修机器问题u问题描述:问题描述:“对于功率大于对于功率大于50马力的机器,马力的机器,并且维修记录不全或已运行并且维修记录不全或已运行10年以年以上的机器,应给予优先的维修处上的机器,应给予优先的维修处理理”u请建立决策表。请建立决策表。例:例:维修机器问题(续)维修机器问题(续)例:例:维修机器问题(续)维修机器问题(续)u 功率大于50马力吗u 维修记录不全吗u 运行超过10年吗例:例:维修机器问题(续)维修机器问题(续)n(3)填入条件项;n利用集合的笛卡尔积计算条件项的取值12345678条件功率大于50马力吗?YYYYNNNN维修记录不全吗?YYNNYYNN运行超过10年吗?YNY
6、NYNYN动作进行优先处理作其他处理例:例:维修机器问题(续)维修机器问题(续)12345678条件功率大于功率大于50马力吗?马力吗?YYYYNNNN维修记录不全吗?维修记录不全吗?YYNNYYNN运行超过运行超过10年吗?年吗?YNYNYNYN动作进行优先处理进行优先处理 作其他处理作其他处理 n(4)填入动作项;例:例:维修机器问题(续)维修机器问题(续)12345678条件功率大于功率大于50马力吗?马力吗?YYYYNNNN维修记录不全吗?维修记录不全吗?YYNNYYNN运行超过运行超过10年吗?年吗?YNYNYNYN动作进行优先处理进行优先处理 作其他处理作其他处理 n(4)填入动作
7、项及合并;n1,2合并,5,7合并,6,8合并例:例:维修机器问题(续)维修机器问题(续)(1)(2)(3)(4)(5)条件功率大于功率大于50马力吗?马力吗?YYYNN维修记录不全吗?维修记录不全吗?YNN运行超过运行超过10年吗?年吗?YNYN动作进行优先处理进行优先处理作其他处理作其他处理课堂练习:三角形问题课堂练习:三角形问题u问题描述问题描述 输入三个正整数输入三个正整数a、b、c,分别作为三角,分别作为三角形的三条边,通过程序判断三条边是否形的三条边,通过程序判断三条边是否能构成三角形?如果能构成三角形,判能构成三角形?如果能构成三角形,判断三角形的类型(等边三角形、等腰三断三角形
8、的类型(等边三角形、等腰三角形、一般三角形)。角形、一般三角形)。u请用基于判定表的方法设计测试用例。请用基于判定表的方法设计测试用例。一、设计判定表一、设计判定表u(1)条件桩)条件桩C1:a,b,c构成三角形?构成三角形?C2:a = b?C3:a = c?C4:b = c?u(2)规则数)规则数共有四个条件,每个条件的取值为共有四个条件,每个条件的取值为“是是”或或“否否”,因此有,因此有24= 16条规则。条规则。u(3)动作桩)动作桩 A1:非三角形;:非三角形; A2:不等边三角形;:不等边三角形; A3:等腰三角形;:等腰三角形; A4:等边三角形;:等边三角形; A5:不可能;
9、:不可能;123456789条件a, b, c构成三角形构成三角形NYYYYYYYYa = b?YYYYNNNNa = c?YYNNYYNNb = c?YNYNYNYN动作非三角形非三角形 不等边三角形不等边三角形 等腰三角形等腰三角形 等边三角形等边三角形 不可能不可能 u注意:条件的选择可以大大扩展判定表的规模;条件的选择可以大大扩展判定表的规模;u例如例如a, b, c构成三角形吗?可以扩展为三个条件:构成三角形吗?可以扩展为三个条件:a b + c?b a + c?c a + b?条件桩修改后的判定表条件桩修改后的判定表a=b,a=c,bc二、设计测试用例二、设计测试用例案例:案例:
10、NextDate函数函数u问题描述问题描述 程序有三个输入变量程序有三个输入变量month、day、year,并且满足:并且满足:1month12、1day31、1900 year 2050。它们分别作为输入日。它们分别作为输入日期的月份、日、年份,通过程序可以输期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。出该输入日期在日历上下一天的日期。例如,输入为例如,输入为2011年年9月月30日,则该程序日,则该程序的输出为的输出为2011年年10月月1日。日。条件条件uM1=月份:每月有月份:每月有30天天uM2=月份:每月有月份:每月有31天天uM3=月份:此月是月份:此月
11、是2月月uD1=日期:日期:1日期日期28uD2=日期:日期日期:日期=29uD3=日期:日期日期:日期=30uD4=日期:日期日期:日期=31uY1=年:年是闰年年:年是闰年uY2=年:年是平年年:年是平年条件条件uM1=月份:每月有月份:每月有30天天uM2=月份:每月有月份:每月有31天天uM3=月份:此月是月份:此月是2月月uD1=日期:日期:1日期日期28uD2=日期:日期日期:日期=29uD3=日期:日期日期:日期=30uD4=日期:日期日期:日期=31uY1=年:年:年是年是平年平年uY2=年:年:年是年是闰年闰年第三次尝试(关注日期和月份)第三次尝试(关注日期和月份)uM1=月
12、份:每月有月份:每月有30天天uM2=月份:每月有月份:每月有31天,天,12月除外月除外uM3=月份:此月是月份:此月是12月月uM4=月份:此月是月份:此月是2月月uD1=日期:日期:1日期日期 27uD2=日期:日期日期:日期=28uD3=日期:日期日期:日期=29uD4=日期:日期日期:日期=30uD5=日期:日期日期:日期=31uY1=年:年是闰年年:年是闰年uY2=年:年不是闰年年:年不是闰年NextDate函数的判定表函数的判定表每月每月30天天每月每月31天天,12月除外月除外续续此月是此月是12月月此月是此月是2月月此年是闰年此年是闰年NextDate函数的精简判定表函数的精
13、简判定表续续NextDate函数的测试用例函数的测试用例指导方针和观察指导方针和观察u判定表技术适用的应用程序的特征:判定表技术适用的应用程序的特征:if-then-else逻辑很突出逻辑很突出输入变量之间存在逻辑关系输入变量之间存在逻辑关系涉及输入变量子集的计算涉及输入变量子集的计算输入与输出之间存在因果关系输入与输出之间存在因果关系很高的很高的McCabe圈复杂度圈复杂度判定表的优点判定表的优点u能把复杂的问题按各种可能的情况能把复杂的问题按各种可能的情况一一列举出来一一列举出来u简明而易于理解简明而易于理解u可避免遗漏可避免遗漏u判定表的缺点判定表的缺点不能表达重复执行的动作,例如循环结
14、构不能表达重复执行的动作,例如循环结构判定表不能很好地伸缩判定表不能很好地伸缩F有有n个条件的决策表有个条件的决策表有2n 个规则。个规则。u解决方法解决方法使用扩展条目判定表、代数简化表,将大表使用扩展条目判定表、代数简化表,将大表“分解分解”为小表,查找条件项的判定表达式为小表,查找条件项的判定表达式3 基于判定表的测试基于判定表的测试u根据输入输出绘制判定表;根据输入输出绘制判定表;u设计测试用例覆盖判定表中每条规设计测试用例覆盖判定表中每条规则;则;课堂作业:课堂作业:工作安排问题工作安排问题u问题描述:问题描述:u研究所重新对其在大学以上学历的职工安排工作。其方针如下:如果年龄不满18岁,文化程度是大学,若是男性,则一律要求考研究生。若是女性,则分配到研究所办公室任行政干部;如果年龄满18岁但不足50岁,文化程度是研究生,不分男女性,均任课题组长。文化程度是大学,则不分男女性均担任中层以上各级领导干部;如果年龄满50岁以上,文化程度是研究生,若是男性,则任课题组长。文化程度是大学,若是男性,则任科研人员。若是女性,则任资料员。小小 结结w判定表(决策表)测试的原理w三角形问题的测试用例wNextDate函数测试用例w判定表测试的讨论