场景分析法一、以答题业务为例:1.答对题目增加题目积分,积分达到设定值时奖励一个礼包;2.取题规则为随机不重复;3.答错题目后答新题.开始答题是否存在有效题目提供题目及备选答案答案是否正确增加题目积分积分大于或等于设定值?给予无有效题目提示结束奖励一个礼包1.确定基本流与备选流基本流:步骤1.开始答题步骤2.判断是否存在有效题目,存在有效题目,处理:提供题目及备选答案步骤3.用户答题并答对题目,增加用户相应积分。步骤4.判断积分是否达到设定值,达到,获取一个礼包,流程结束。备选流1:不存在有效题目基本流步骤2时,题库不存在未答题目,处理:给予无有效题目提示,流程结束。备选流2:答错题目基本流步骤3时,答错题目,处理:提示用户答错题目,回到基本流步骤2备选流3:答题后积分达不到设定值基本流步骤4时,答对题后积分仍达不到设定值,处理:回到基本流步骤22.确定以下用例场景:3.通过从确定执行用例场景所需的数据元素入手构建矩阵4.设计数据,把数据填入上面的用例表中二、下图所示是ATM例子的流程示意图。2.场景设计:下表所示是生成的场景。3.用例设计4.测试用例表三、用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要使用账号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。第一步:确定基本流和备选流基本流:登录在线网站→选择物品→登录账号→付款→生成订单;备选流1:账户不存在;备选流2:账户密码错误;备选流3:用户账户余额不足;备选流4:用户账户没钱。第二步:根据基本流和备选流确定场景场景1成功购物:备选流;场景2账号不存在:基本流,备选流1;场景3账号密码错误:基本流,备选流2;场景4账户余额不足:基本流,备选流3;场景5账户没钱:基本流,备选流4。第三步:对每一个场景生成相应的测试用例测试用例ID场景/条件账号密码用户账号余额预期结果1场景1:成功购物VVV成功购物2场景2:账号不存在1n/an/a提示账号不存在3场景3:账号密码错误(账号正确,密码错误)V1n/a提示账号密码错误,返回基本流步骤34场景4:用户账号余额不足VV1提示用户账号余额不足,请充值5场景5:用户账号没钱VV1提示用户账号没有钱,请充值第四步:设计测试数据测试用例ID场景/条件账号密码用户账号余额预期结果1场景1:成功购物Test123456800成功购物,账号余额减少100元2场景2:账号不存在aan/an/a提示账号不存在3场景3:账号密码错误(账号正确,密码错误)Test111111n/a提示账号密码错误,返回基本流步骤34场景4:用户账号余额不足Test12345650提示用户账号余额不足,请充值5场景5:用户账号没钱Test1234560提示用户账号没有钱,请充值等价类划分法一、计算保费费率的程序(1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。年龄:一位、两位或三位整数,值的有效范围为0~120性别:一位英文字符,只能取值‘M’或‘F’婚姻:字符,只能取值‘已婚’或‘未婚’抚养人数:空白或一位非零整数(1~9)(2)根据(1)中的等价类表,设计能覆盖所有等价类的测试用例。二、某城市电话号码由三部分组成,分别是:地区码——空白或三位数字;前缀——非‘0’或‘1’开头的三位数字;后缀——4位数字。假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。请使用等价类划分法设计测试用例,给出等价类列表,设计测试用例。三、根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。一个程序读入3个整数,把这三个数值看作一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。四、设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的日期检查功能。1)划分等价类并编号,下表等价类划分的结果输入等价类有效等价类无效等价类日期的类型及长度①6位数字字符②有非数字字符③少于6位数字字符④多于6位数字字符年份范围⑤在1990~2049之间⑥小于1990⑦大于2049月份范围⑧在01~12之间⑨等于00⑩大于122)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:测试数据期望结果覆盖的有效等价类200211输入有效①、⑤、⑧3)为每一个无效等价类设计一个测试用例,设计结果如下:测试数据期望结果覆盖的无效等价类95June无效输入②20036无效输入③2001006无效输入④198912无效输入⑥200401无效输入⑦200100无效输入⑨200113无效输入⑩五、NextDate函数包含三个变量:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则函数的输出为2006年3月8日。要求输入变量month、day和year均为整数值,并且满足下列条件:①1≤month≤12②1≤day≤31③1920≤year≤20501)有效等价类为:M1={月份:1≤月份≤12}D1={日期:1≤日期≤31}Y1={年:1812≤年≤2012}2)若条件①~③中任何一个条件失效,则NextDate函数都会产生一个输出,指明相应的变量超出取值范围,比如month的值不在1-12范围当中。显然还存在着大量的year、month、day的无效组合,NextDate函数将这些组合作统一的输出:无效输入日期。其无效等价类为:M2={月份:月份1}M3={月份:月份12}D2={日期:日期1}D3={日期:日期31}Y2={年:年1812}Y3={年:年2012}边界值分析法一、根据下面给出的规格说明,利用边界值分析的方法,给出足够的测试用例。“一个程序读入3个整数,把这三个数值看作一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。”在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1,100]我们可以设三角形的3条边分别为A,B,C。如果它们能够构成三角形的3条边,必须满足:A0,B0,C0,且A+BC,B+CA,A+CB。如果是等腰的,还要判断A=B,或B=C,或A=C。如果是等边的,则需判断是否A=B,且B=C,且A=C。二、现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如下图所示,所有记录分为3组:三、找零钱最佳组合假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元内(P),求找给顾客之最少货币个(张)数?(货币面值50元(N50),10元(N10),5元(N5),1元(N1)四种)1、分析输入的情形:R1000R=100R=0P100R=P=100PR2、分析输出情形:N50=14=N10=1N5=14=N1=13.分析每种情况,以RR1,RR2,RR3,RR4表示计算要找50,10,5,1元货币数时之剩余金额。R100R=0P100P=RRR1=50RR2=10RR3=5RR4=14.由上述之输入/输出条件组合出可能的情形。R100R=00R=100,P1000R=100,PR0R=100,R=P=100,RR=500R=100,R=P=100,RR=490R=100,R=P=100,RR=100R=100,R=P=100,RR=90R=100,R=P=100,RR=50R=100,R=P=100,RR=40R=100,R=P=100,RR=10R=100,R=P=100,RR=05.为满足以上之各种情形,测试用例设计如下:1.货品价格=1012.货品价格=03.货品价格=-14.货品价格=100,付款金额=1015.货品价格=100,付款金额=996.货品价格=50,付款金额=1007.货品价格=51,付款金额=1008.货品价格=90,付款金额=1009.货品价格=91,付款金额=10010.货品价格=95,付款金额=10011.货品价格=96,付款金额=10012.货品价格=99,付款金额=10013.货品价格=100,付款金额=100四、NextDate函数的边界值分析测试用例在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050。判定表法一、判定表法是一种分析多种输入条件的组合情况的方法,多种输入条件可以通过判定表来完整地进行排列组合,从而不出现遗漏。比如以下一个判断表达式:If((a0)||(b0)||(c0&&c100)){…}这段程序中的判定条件可以用判定表如何表示?表中的c=0?0c100?c=100?是3个排他性条件,即其中同时只有一个条件会满足,也就是在同一列中只能有一个为Y,其他两个均为N。根据判定表,我们可以输出测试用例如下:二、问题要求:”……对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理……”。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义。请建立判定表。①确定规则的个数:这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则。②列出所有的条件茬和动作桩:③填入条件项。可从最后1行条件项开始,逐行向上填满。如第三行是:YNYNYNYN,第二行是:YYNNYYNN等等。④填入动作桩和动作顶。这样便得到形如图的初始判定表。化简,合并相似规则后得到图。三、用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天的日期。例如,输入为2004年11月29日,则该程序的输出为2000年12月1日。1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类。2)分析程序规格说明,结合以上等价类划分的情况给出问题规定的可能采取的操作(即列出所有的动作桩)。3)根据(1)和(2),画出简化后的决策表。案例分析如下:month变量的有效等价类:M1:{month=4,6,9,11}M2:{month=1,3,5,7,8,10}M3:{month=12}M4:{month=2}2)day变量的有效等价类:D1:{1≤day≤26}D2:{day=27}D3:{day=28}D4:{day=29}D5:{day=30}D6:{day=31}3)year变量的有效等价类:Y1:{year是闰年}Y2:{year不是闰年}4)考虑各种有效的输入情况,程序中可能采取的操作有以下六种:a1:day+2a2:day=2a3:day=1a4:month+1a5:month=1a6:year+14.判定表在功能测试中的应用1)一些软件的功能需求可用判定表表达得非常清楚,在检验程序的功能时判定表也就成为一个不错的工具。如果一个软件的规格说明指出:I.当条件1和条件2满足,并且条件3和条件4不满足,或者当条件1、3和条件4满足时,要执行操作1。II.在任一个条件都不满足时,要执行操作2。III.在条件1不满足,而条件4被满足时,要执行操作3。根据规格说明得到如下判定表这里,判定表只给出了16种规则中的8种。事实上,除这8条以外的一些规则是指当不能满足指定的条件,执行3种操作时,要执行1个默许的操作。在没必要时,判定表通常可略去这些规则。但如