参考答案:
【问题1】
注释率:为4/14=28.6% 由于VC工程注释率要求为25%~50%,代码注释率要求为>=20%; 本题应为关键代码,注释率符合要求。
扇出数是指该模块调用了多少模块,本题中扇出数为:1 扇出一般3~4,不超过7,本题扇入
符合要求
【问题2】
详细解析:
【问题1】
注释率是注释的行数/代码行数,本题为4/14=28.6%
扇出数,是指模块调用其他模块的个数,本题只调用了1个模块,所以扇出数为1,一般推荐模块扇出数位3~4比较合适,一般不超过7,扇出数为1说明模块比较大。
【问题2】
错误1:函数为无符号类型,而返回值中有-1的情况
错误2:题干中要求是不低于45,条件表达式应该是>=45,而不是>45
错误3:counter变量没有初始值,就直接counter=counter+1
错误4:由于整列的下标是从0开始,第16个值的下标应为15,题中循环判定条件为n<=num,而num的值是可以为16,当num为16时,会导致下标越界。
【问题3】
语句覆盖(SC):使被测试程序中每条语句至少执行一次
判定覆盖(DC):使程序中的每个判定至少都获得一次“真值”或“假值”
修正条件判定覆盖要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变,其测试用例数一般为条件数+1~条件数*2的范围内。
对于语句覆盖,本题可以设计:一个测试用例使得第5行的判定为真,一个一切都正常的测试用例;因此语句覆盖使用2个测试用例即可覆盖。
对于判定覆盖,本题有3个判定,即第5行,第8行,第10行, 由于第一个判定为真时,结束,并返回;当第一个判定为假时,则进入第2个判定,由于第2个判定为循环控制结构,需二个测试用例即可实现真,假覆盖,当循环判定真,即进入第3个判定,第3个判定有真假两种情况,所以一个需要至少有3个测试用例用于100%DC覆盖(不考虑循环的情况)。但由于本题存在循环体,可以通过循环体来实现一个判定的真假覆盖,所以综合起来,本题最少需要2个测试用例。
对于array==null;num==0;num>16 需要四个测试用例
对于n<=num需要两个测试用例
对于array[n].Value1>45;array[n].Value2>45 需要三个测试用例
由于本题中,array[n].Value1>45;array[n].Value2>45 为TT的测试用例 可以覆盖 判定1 FFF 情况,判定2的T情况;所以综合起来测试用例最少数位1+3+1+2=7(不考虑循环的情况),但由于后面两个判定属于循环结构中,可以通过构造一定的测试用来通过循环减少数量,,所以,最后两个判定可以通过 多次循环来达成。所以最少为4个。