您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 统计图表 > 软件测试技术_韩永国_第四章黑盒测试第三节基于判定表的测试
软件测试技术软件测试课程组西南科技大学计算机学院SoftwareTesting问题引入例:某个软件需求文档中有这样的说明:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。边界值测试等价类测试SoftwareTesting4.3基于判定表的测试判定表基于判定表的测试案例:三角形问题,NextDate问题练习:隔一日问题SoftwareTesting4.3.1判定表判定表的原理判定表的组成判定表建立的步骤SoftwareTesting1.判定表的原理判定表判定表(DecisionTable),又叫决策表判定表是分析和表达多逻辑条件下执行不同操作的工具。在程序设计发展的初期,判定表被当作编写程序的辅助工具。SoftwareTesting2.判定表的组成条件桩(ConditionStub)列出问题的所有条件动作桩(ActionStub)列出可能采取的操作条件项(ConditionEntity)列出条件桩的取值动作项(ActionEntity)列出条件项各种取值下应该采取的动作SoftwareTesting判定表的组成SoftwareTesting规则任何一个条件组合的特定取值及其相应要执行的操作称为规则;在判定表中贯穿条件项和动作项的一列就是一条规则;判定表中列出多少组条件取值,也就有多少条规则,即条件项和动作项有多少列。SoftwareTesting规则示例:三角形问题SoftwareTesting规则(续)规则合并规则合并就是判定表的简化。有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系,就可以将规则合并。SoftwareTesting(1)两条规则合并成一条条件项“—”表示与取值无关。SoftwareTesting条件项“—”在逻辑上包含其它的条件。(2)两条规则的进一步合并SoftwareTesting3.判定表建立步骤根据软件规格说明①列出所有的条件桩和动作桩;②确定规则的个数;假如有n个条件,每个条件有两个取值(0,1),则有2n种规则;③填入条件项;④填入动作项,得到初始决策表;⑤简化,合并相似规则(相同动作)。SoftwareTesting例:维修机器问题问题描述:“……对于功率大于50马力的机器,并且维修记录不全或已运行10年以上的机器,应给予优先的维修处理……”请建立决策表。SoftwareTesting例:维修机器问题(续)(1)列出所有的条件桩和动作桩条件桩C1:功率大于50马力吗?C2:维修记录不全吗?C3:运行超过10年吗?动作桩A1:进行优先处理A2:作其他处理SoftwareTesting例:维修机器问题(续)(2)确定规则个数输入条件个数:3;每个条件的取值:“是”或“否”;规则个数:2*2*2=8;功率大于50马力吗维修记录不全吗运行超过10年吗SoftwareTesting例:维修机器问题(续)12345678条件功率大于50马力吗?YYYYNNNN维修记录不全吗?YYNNYYNN运行超过10年吗?YNYNYNYN动作进行优先处理作其他处理(3)填入条件项;利用集合的笛卡尔积计算条件项的取值SoftwareTesting例:维修机器问题(续)12345678条件功率大于50马力吗?YYYYNNNN维修记录不全吗?YYNNYYNN运行超过10年吗?YNYNYNYN动作进行优先处理作其他处理(4)填入动作项;1,2合并,5,7合并,6,8合并SoftwareTesting例:维修机器问题(续)(5)化简;(1)(2)(3)(4)(5)条件功率大于50马力吗?YYYNN维修记录不全吗?YNN——运行超过10年吗?—YNYN动作进行优先处理作其他处理SoftwareTesting4.3.2基于判定表的测试根据输入输出绘制判定表;设计测试用例覆盖判定表中每条规则;SoftwareTesting4.3.3案例:三角形问题问题描述输入三个正整数a、b、c,分别作为三角形的三条边,通过程序判断三条边是否能构成三角形?如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形、一般三角形)。请用基于判定表的方法设计测试用例。SoftwareTesting(1)条件桩C1:a,b,c构成三角形?C2:a=b?C3:a=c?C4:b=c?(2)规则数共有四个条件,每个条件的取值为“是”或“否”,因此有24=16条规则。一、设计判定表SoftwareTesting(3)动作桩A1:非三角形;A2:不等边三角形;A3:等腰三角形;A4:等边三角形;A5:不可能;SoftwareTesting(4)判定表123456789条件a,b,c构成三角形NYYYYYYYYa=b?—YYYYNNNNa=c?—YYNNYYNNb=c?—YNYNYNYN动作非三角形不等边三角形等腰三角形等边三角形不可能SoftwareTesting注意:条件的选择可以大大扩展判定表的规模;例如a,b,c构成三角形吗?可以扩展为三个条件:ab+c?ba+c?ca+b?SoftwareTesting1234567891011C1:ab+c?FTTTTTTTTTTC2:ba+c?—FTTTTTTTTTC3:ca+b?——FTTTTTTTTC4:a=b?———TTTTFFFFC5:a=c?———TTFFTTFFC6:b=c?———TFTFTFTFa1:非三角形XXXa2:不等边三角形Xa3:等腰三角形XXXa4:等边三角形X条件桩修改后的判定表SoftwareTesting用例IDabc预期输出DT1412非三角形DT2142非三角形DT3124非三角形DT4555等边三角形DT5???不可能DT6???不可能DT7223等腰三角形DT8???不可能DT9232等腰三角形DT10322等腰三角形DT11345不等边三角形a=b,a=c,b≠c二、设计测试用例SoftwareTesting课堂练习隔一天的日期程序有三个输入变量month、day、year,分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004年11月29日,则该程序的输出为2000年12月1日。SoftwareTesting课后练习登陆功能说明书:(用户输入和密码输入)1)管理员用户名为“admin”,密码为“123456”,正常登陆2)用户名和密码输入为空,提示“用户和密码不允许为空”在用户名和密码非空的情况下:3)要求用户名必须输入字母,否则提示“输入非法”4)要求密码必须输入数字,否则提示“输入非法”在输入合法的情况下:5)用户名错误,提示“用户名和密码输入错误”,用户名和密码清空6)用户名正确,密码错误,提示“用户名和密码输入错误”,用户名保留,密码清空SoftwareTesting4.3.4案例:NextDate函数问题描述程序有三个输入变量month、day、year,并且满足:1≤month≤12、1≤day≤31、1900≤year≤2050。它们分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上下一天的日期。例如,输入为2005年11月29日,则该程序的输出为2005年11月30日。SoftwareTesting第一次尝试M1={月份:每月有30天}M2={月份:每月有31天}M3={月份:此月是2月}D1={日期:1≤日期≤28}D2={日期:日期=29}D3={日期:日期=30}D4={日期:日期=31}Y1={年:年是闰年}Y2={年:年是平年}SoftwareTesting有256条规则的第一次尝试条件c1:月份在M1中?Tc2:月份在M2中?Tc3:月份在M3中?Tc4:日期在D1中?c5:日期在D2中?c6:日期在D3中?c7:日期在D4中?c8:年在Y1中?a1:不可能a2:NextDate年变量对应的等价类收缩为表中的一个条件SoftwareTesting第二次尝试(重点考虑闰年)M1={月份:每月有30天}M2={月份:每月有31天}M3={月份:此月是2月}D1={日期:1≤日期≤28}D2={日期:日期=29}D3={日期:日期=30}D4={日期:日期=31}Y1={年:年是平年}Y2={年:年是闰年}SoftwareTesting第三次尝试(关注日期和月份)M1={月份:每月有30天}M2={月份:每月有31天,12月除外}M3={月份:此月是12月}M4={月份:此月是2月}D1={日期:1≤日期≤27}D2={日期:日期=28}D3={日期:日期=29}D4={日期:日期=30}D5={日期:日期=31}Y1={年:年是闰年}Y2={年:年不是闰年}SoftwareTestingNextDate函数的判定表12345678910c1:月份在M1M1M1M1M1M2M2M2M2M2c2:日期在D1D2D3D4D5D1D2D3D4D5c3:年在——————————行为a1:不可能Xa2:日期增1XXXXXXXa3:日期复位XXa4:月份增1XXa5:月份复位a6:年增1每月30天每月31天,12月除外SoftwareTesting续……111213141516171819202122c1:月份在M3M3M3M3M3M4M4M4M4M4M4M4c2:日期在D1D2D3D4D5D1D2D2D3D3D4D5c3:年在——————Y1Y2Y1Y2——行为a1:不可能XXXa2:日期增1XXXXXXa3:日期复位XXXa4:月份增1XXa5:月份复位Xa6:年增1X此月是12月此月是2月此年是闰年SoftwareTestingNextDate函数的精简判定表4510c1:月份在M1M1M2c2:日期在D4D5D5c3:年在———行为a1:不可能Xa2:日期增1a3:日期复位XXa4:月份增1XXa5:月份复位a6:年增11~3M1D1,D2,D3—X6~9M2D1,D2,D3,D4—XSoftwareTesting续……15161718192021,22c1:月份在M3M4M4M4M4M4c2:日期在D5D1D2D2D3D3c3:年在——Y1Y2Y1Y2行为a1:不可能Xa2:日期增1XXa3:日期复位XXXa4:月份增1XXa5:月份复位Xa6:年增1X11~14M3D1,D2,D3,D4—XXM4D4,D5—SoftwareTestingNextDate函数的测试用例用例ID月份日期年预期输出1~341520012001年4月16日443020012001年5月1日54312001不可能6~911520012001年1月16日1013120012001年2月1日11~14121520012001年12月16日15123120012002年1月1日1621520012001年2月16日1722820042004年2月29日1822820012001年3月1日1922920042004年3月1日202292001不可能21,222302001不可能SoftwareTesting指导方针和观察判定表技术适用的应用程序的特征:if-then-else逻辑很突出输入变量之间存在逻辑关系涉及输入变量子集的计算输入与输出之间存在因果关系很高的McCabe圈复杂度SoftwareTesting判定表的优点能把复杂的问题按各种可能的情况一一列举出来简明而易于理解可避免遗漏SoftwareTesting判定表的缺点不能表达重复执行的动作,例如循环结构判定表不能很好地伸缩有n个条件的决策表有2n个规则。解决方法使用扩展条目判定表、代数简化表,将
本文标题:软件测试技术_韩永国_第四章黑盒测试第三节基于判定表的测试
链接地址:https://www.777doc.com/doc-1061991 .html