软件测试技术习题参考答案
期望结果:
A=3,B=i,X=6
③覆盖路径:
abgk(〜Ti〜T2〜T3〜T4)
测试用例:
A=0,B=i,X=6
期望结果:
A=0,B=i,X=6
以上测试用例覆盖每个判断的真分支假分支至少一次。
(C)条件覆盖
测试用例:1)A=3, B=0, X=5,覆盖路径L4;
2)A=3, B=1,X=1,覆盖路径L2;
4、已知某种计算机程序设计语言的标识符语法规则规定“标示符是由非数字开头的,有效
字符数为32个,最大字符数为128个的任意符号串”。试用等价类划分法设计测试用例。
答:(1)等价类划分
输入条件
有效等价类
无效等价类
标识符字符数
1-32个(1)
0个(2)
>32个(3)
>128个(4)
标识符组成
任意符号串(5)
第
1、简述软件缺陷的含义。
答:软件缺陷是软件开发过程中潜在的性能和可靠性等方面与系统的设计需求不符。
2、说明软件缺陷、软件错误和软件失败的关系。
答:缺陷、缺点、偏差统称为缺陷,是软件故障的根源;错误、谬误、问题、异常、矛盾 等统称为错误,软件错误出现的原因是软件缺陷所致;失败、事故、灾难统称失败, 失败的直接原因是软件系统存在软件错误。
3)A=2, B=1,X=1,覆盖路径L5;
4)A=2, B=0, X=5,覆盖路径L3;
以上测试用例覆盖每一个判断的每一个条件的可能取值至少一次。
7、下面给出一个计算3个数中最大数的程序,试完成下列工作:
(a)给出对应的流图;
(b)计算环形复杂性V(G);
(c)求独立路径构成的基本集合(num,num?,num3各取一次最大值);
14、“软件测试是有风险的工作”,试解释这种说法的含义。
答:软件不测试,就会有风险;软件测试,同样也会有风险。因为,软件是个复杂的系统, 其复杂性体现在软件实现的内容复杂性、开发过程的复杂性和组织工作的复杂性等方 面。而软件测试的目的是为了发现故障,并加以排除。对一个复杂的软件系统来说, 故障的排除往往可能又带来新的软件缺陷。所以,软件测试又会带来一定的风险。
(d)给出每条路径执行的期望结果;
(e)给出每一条路径的测试用例。
main()//a c code about finding out the small one in tree in put nu mber
{int nu ml, num2,nu m3,max;
(a)语句覆盖
测试用例:A=2, B=0, X=5,覆盖路径L4,覆盖所有语句X=X/A和X=X+1
(b)判断覆盖
①覆盖路径:
acdfk(TiT2T3T4)
测试用例:
A=2,B=0,X=4
期望结果:
A=2,B=0,X=3
②覆盖路径:
acegk(Ti〜T2〜T3〜T4)
测试用例:
A=3,B=i,X=6
答:共2个语句:X=X/A和X=X+1
2个判断,4个判断语句:A>1,B=0,A=2,X>1。
4个条件:A>1,B=0,A=2,X>1。
8个条件取值:Ti,T2,T3,T4,〜Ti,〜T2,〜T3,〜T4
5条路径:(Li)acdbgk(L2)acebgk(L3)acdbfk(L4)acdbghk(L5)abgk
第
2、条件覆盖是否高于判断覆盖的逻辑覆盖程度如果不是,请给出反例加以说明。
答:条件覆盖是高于判断覆盖的逻辑覆盖程度。
a、用条件覆盖所设计的测试用例可使得程序中的每一个判断的每一个条件的可能
取值至少执行一次。
b、用判断覆盖所设计的测试用例可使被测程序中的每个判断的真分支和假分支至 少经历一次。
每个判断语句可能包含多个条件(比如,if(A>3&&B<7……)。条件覆盖针对 判断语句的每一个条件的所有可能取值编写测试用例;判断覆盖只针对每一个判断语 句整体的所有可能取值编写测试用例。 所以,条件覆盖的逻辑覆盖程度高于判断覆盖。
保留字(6)
非符号串//不需要分
岀这一项
第1个字符
非数字(7)
数字(8)
(2测试用例
1VAR abc7*ef: REAL;
BEGIN abc7*ef:=; //覆盖等价类(1) (5) (7)
2VAR:REAL;//覆盖等价类(2)
3VAR a4567890:REAL;//覆盖等价类(3)
4VAR T12345……:REAL;//覆盖等价类(4)
5VAR GOTO: REAL;//覆盖等价类(6)
6VAR 2A: REAL;//覆盖等价类(8)
5、已知一个变量的类型为double,它的取值范围为“-2.2”试给出边界值法的测试用例。 答:测试用例,,,
6、 已知程序框图如下图所示,试分别给出:(a)语句覆盖,(b)条件覆盖,(c)判断覆盖, 的最小测试用例和路径。