二、判断题:共20小题,每题1分,满分20分)
1、一个程序中所含有的路径数与程序的复杂程度有着直接的关系。( ∨ )
2、结构性测试是根据软件的规格说明来设计测试用例。( x )
3、错误推测法是根据输出对输入的依赖关系来设计测试用例的。(x )
4、软件缺陷属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。(∨ )
5、对于一个含有n个变量的程序,采用边界值健壮性测试方法来测试程序会产生6n+1个测试用例。(∨)
6、数据流测试是主要用作路径测试的真实性检查。两种形式分别为定义/使用测试、基于程序片的测试。(∨ )
7、软件只要经过严格严谨的内部测试之后,可以做到没有缺陷。(x )
8、测试用例应由测试输入数据和对应的实际输出结果这两部分组成。( x )
9、测试是可以穷尽的。( x )
10、测试自动化是万能的。( x )
11、软件缺陷可能会被修复,可能会被保留或者标识出来。( ∨ )
12、每一个软件项目都有一个最优的测试量。( ∨ )
13、黑盒测试往往会造成测试用例之间可能存在严重的冗余和未测试的功能漏洞。(∨ )
14、代码审查工作属于静态测试。( ∨ )
15、软件测试是一个过程,包含若干活动,运行软件进行测试只是活动之一。(∨ )
16、回归测试是在软件修改后再次运行以前为查找错误而执行程序曾用过的测试用例. ∨
17、集成测试是为确定软件系统是否满足验收标准以及使客户决定是否接受而进行的正式测试. ( x )
18、测试按照测试层次可以划分成为单元测试、集成测试和系统测试。( ∨ )
19、只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。( x )
20、永远有缺陷类型会在测试的一个层次上被发现,并且能够在另一个层次上逃避检测。(∨ )
三、简答题:共4小题,每题5分,满分20分。
1、优秀的软件测试工程师应具备哪些素质?
答:具有探索精神、具有良好的计算机编程基础、故障排除能手、坚持不懈的精神、具有创新精神和超前意识、追求完美、判断准确、具有整体观念,对细节敏感、团队合作精神,沟通能力
2、有二元函数f(x,y),其中x∈[1,12],y∈[1,31];请写出该函数采用基本边界值分析法设计的测试用例。
答:{ <1,15>, <2,15>, <11,15>, <12,15>, <6,15>,
<6,1>, <6,2>, <6,30>, <6,31> }
3、黑盒测试与白盒测试各有哪些优缺点,应该如何结合才能解决漏洞和冗余问题?
答:功能性测试具有两大优点:功能性测试与软件如何实现无关;测试用例开发可以与实现并行进行,因此可以压缩总的项目开发时间。缺点:测试用例之间可能存在严重的冗余,还会有位测试的软件漏洞。结构性测试局限于已经完成的代码行为当中,离代码太近。因此可以结构性测试指标去解决冗余和漏洞问题。如果发现同一条程序路径被多个功能性测试用例遍历,就可以怀疑这种冗余不会发生新的缺陷,如果没有达到一定的DD—路径覆盖,则可知在功能性测试用力中存在漏洞。因此路径测试可以提供作为功能性测试交叉检查的一组指标。
4、有一段程序如下,请设计测试用例以满足语句覆盖要求。
void DoWork (int x,int y,int z)
{undefined
int k=0,j=0;
if ( (x>3)&&(z<10) )
{ k=x*y-1;
j=sqrt(k);
} //语句块1
if ( (x==4)||(y>5) )
{ j=x*y+10; } //语句块2
j=j%3; //语句块3
}
答:要实现DoWork函数的语句覆盖,只需设计一个测试用例就可以覆盖程序中的所有可执行语句。
四、综合题:共2小题,每题10分,满分20分。
1、使用基本路径测试方法,为以下程序段设计测试用例。
(1)画出程序的控制流图,编号已经给出。
(2)计算程序的循环复杂度,导出程序基本路径集中的独立路径条数。
(3)导出基本路径集,确定程序的独立路径。
(4)根据(3)中的独立路径,设计测试用例(确保基本路径集中的每一条路径的执行)的输入数据和预期输出。
void Do (int X,int A,int B)
{undefined
1 if ( (A>1)&&(B=0) )
2 X = X/A;
3 if ( (A=2)||(X>1) )
4 X = X+1;
5 }
由于控制流图假设的是单条件,因此对于复合条件,可将其分解为多个单个条件,并映射成控制流图。
1: A>1;2: B=0 ;3: X = X/A ;4: A=2 ;5:X>1 ;6: X = X+1;7: }
2、场景要求:”……对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理……” 。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义 。请建立决策表。
(1) 确定规则的个数。
(2) 列出所有的条件桩和动作桩。
(3) 填入条件项。
(4) 填入动作项,得到初始决策表。
(5) 简化决策表,合并相似规则。