分析

案例题 在开发某大型电子商务系统项目过程中,为保证软件的开发质量,需要进行软件测试。 某测试员需要完成销售情况统计模块、快递资费模块及某函数的测试任务。

【问题1】(7分)
根据以下FunCase函数、程序流程图及使用判定覆盖的测试用例表,填写(1)?(5)空。
Int FunCase (int a, int b, int m)
{
if(a>0 && b==0)
m=m%a;
if(a==2| |m>1)
m=m+1;
return m;
}



【问题2】(3分)
判定覆盖的测试充分性也较弱,它只是判定整个判定表达式的最终取值结果,并不考虑具体某个条件的取值情况,必然会漏检一些条件。结合图3-1流程图,查找该程序片段中采用判定覆盖测试方法,其测试充分性较弱的原因。
【问题3】(5分)
在快递资费模块中,其收费标准为:
省内邮寄,快件5元/公斤,慢件3元/公斤;
省外邮寄,由附重量不超过20公斤(含20公斤):快件7元/公斤,慢件5元/公斤;超过20公斤:快件9元/公斤,慢件7元/公斤。
现采用决策表方法完成快递资费模块的测试。在设计初始决策表时,根据条件桩的条件个数可知,在该决策表中需要的规则个数为(6)。
测试该功能模块的化简后决策表如表3-2所示,其中C1:是否省内邮寄,C2:是否快件邮寄,C3:重量是否超过20公斤,e1:5元/公斤,e2:3元/公斤,e3:7元/公斤,e4:9 元/公斤。根据问题描述,完成表3-2中的空(7)?(10)。
注:在决策表中,“√”代表该动作执行;“×”代表该动作不执行。

正确答案
【问题1】
(1)负奇数
(2)大于2的整数
(3)0
(4)①-③-④
(5)不等于0的整数
【问题2】
“或”关系的第一个条件为真,则不判断第二个条件。
“与”关系的第一个条件为假,则不判断第二个条件。
【问题3】
(6)8
(7)-
(8)N
(9)×
(10)√

【问题1】 注:题目描述参数a、b、m都为整型。
根据第(1)空的执行路径1-2-4可以判断,走的判断路线是TT,已知a=2,b=0;参数m的最终结果为0,可得最后一次m的赋值为-1,从而前推,m%a=-1,a的结果为2,可以推导出,此时m的取值只要为负整数即可。不能为正整数,否则余数不会是-1。
根据第(2)空的执行路径1-2-5可以判断,走的判断路线是TF,已知b=0,m=-1;参数m的最终结果为-1,首先经过第一个条件为T,可知此时a的取值要大于0,同时要注意m%a=m,m的值为-1,所以此时m不能取1,经过第二个判断可得,逻辑值为假,判断2的两个条件都为假,m>1(为假),a==2为假,所以可以得出a不能为2,联立得出a为大于2的整数。
根据序号3得出第(3)、(4)空,根据参数a=2,参数b为不等于0的整数,可知需要第一个判断要走F(即3号路径),又因为m=-1,所以可以知道第二个判断条件为真,走T(即4号路径),m=m+1=0,路径为 ①-③-④。
根据序号4得,走1-3-5路径,即FF路线,已知a=1,满足判断1的第一个条件,故第二个条件b==0必须为假,才能导致整体结果为假,故可知b为不等于0的整数。
【问题2】在日常测试中,判定表达式往往由多个条件组合而成,某个条件的取值结果可能会掩盖其他条件的取值结果情况。在表达式“a=2|m>1”中,当“a=2”的值为“真”时,因复合表达式是“或”的关系,不管“m>1”的值为“真”或者“假”,整个表达式的最终取值结果均为“真”;在表达式“a>0&&b=0”中,当“a>0”的值为“假”时,因复合表达式是“与”的关系,不管“b”的值为“真”或者“假”,整个表达式的最终取值结果均为“假”。因此在判定覆盖中,某些测试用例仍然能够达到判定覆盖的标准,但无法发现上述的错误。
程序片段中采用判定覆盖测试,其测试充分性较弱的原因:“或”关系的第一个条件为真,则不判断第二个条件;“与”关系的第一个条件为假,则不判断第二个条件。

【问题3】
第6空,因此在决策表中给出了多少条件组合情况,相应地也就有多少条规则,即条件项和动作项有多少列。由于每个条件有真、假两种取值情况,所以题目中给出3个条件,则该决策表中需要的规则个数为2*2*2=8。
第7空,根据1和2的输入情况来看,都为省内邮寄,可以得出没有e3条件项,只有省外邮寄才会考虑是否大于20公斤,因此填写-。
第8空,根据6的输出结果来看,为e1:5元/斤,且为省外没有超过20公斤的,对应的情况为慢件邮寄,C2的判断为N。
第9、10空,根据4的条件判断,分别为省外邮寄,快件,不超过20公斤,对应的结果应该为7元/斤,所以e3的结果为√,e1的结果为×。

查看解析

相关试题

刷题小程序
电子商务师题库小程序