习题四
1(1分)下列不属于白盒测试的技术是 ( ) 。
A、语句覆盖 B、判定覆盖 C、边界值分析 D、基本路径测试
正确答案:C
2(1分)某次程序调试没有出现预计的结果,下列( )不可能是导致出错的原因。
A、变量没有初始化
B、编写的语句书写格式不规范
C、循环控制出错
D、代码输入有误
正确答案:B
3(1分)代码检查法有桌面检查法,走查和( )。
A、静态测试 B、 代码审查 C、动态测试 D、白盒测试
正确答案:B
4(1分)如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的 ( )
A、判定覆盖 B、条件覆盖 C、判定/条件覆盖 D、组合覆盖
正确答案:A
5(1分)软件测试的局限性不包括( )
A、因为输入/状态空间的无限性,测试不可能完全彻底。
B、巧合性有时会导致错误的代码得到正确的结果,掩盖了问题。
C、软件测试会导致成本增加,效益降低。
D、软件缺陷的不确定性。
正确答案:C
6(1分)以下哪种测试方法不属于白盒测试技术( )
A、基本路径测试 B、边界值分析测试 C、程序插桩 D、逻辑覆盖测试
正确答案:B
7(1分)调试是( )
A、发现与预先定义的规格和标准不符合的问题
B、发现软件错误征兆的过程
C、有计划的、可重复的过程
D、消除软件错误的过程
正确答案:D
8(1分)使用白盒测试方法时,确定测试数据的依据是指定的覆盖标准和 ( )
A、程序的注释 B、程序的内部逻辑C、用户使用说明书 D、程序的需求说明
正确答案:B
9(1分)数据流覆盖关注的是程序中某个变量从其声明、赋值到引用的变化情况,它是下列哪一种覆盖的变种( )。
A、语句覆盖 B、控制覆盖 C、分支覆盖 D、路径覆盖
正确答案:D
10(1分)如果一个判定中的复合条件表达式为(A > 1)or(B <= 3),则为了达到100%的条件覆盖率,至少需要设计多少个测试用例( )。
A、1 B、2 C、3 D、4
正确答案:B
11(1分)一个程序中所含有的路径数与( )有着直接的关系。
A、程序的复杂程度 B、程序语句行数C、程序模块数 D、程序指令执行时间
正确答案:A
12(1分)条件覆盖的目的是 ( )
A、使每个判定中的每个条件的可能取值至少满足一次
B、使程序中的每个判定至少都获得一次"真"值和"假"值。
C、使每个判定中的所有条件的所有可能取值组合至少出现一次。
D、使程序中的每个可执行语句至少执行一次。
正确答案:A
13(1分)软件调试的目的是( )
A、发现软件中隐藏的错误
B、解决测试中发现的错误
C、尽量不发现错误以便早日提交软件
D、证明软件的正确性
正确答案:B
14(1分)针对下面一个程序段:
其中,FUCTION1、FUCTION2均为语句块。现在选取测试用例:M=10 N=0 P=3 ,该测试用例满足了( )。
If ((M>0) && (N = = 0))
FUCTION1;
If ((M = = 10)|| (P > 10))
FUCTION2;
A、路径覆盖 B、条件组合覆盖 C、判定覆盖 D、语句覆盖
正确答案:D
15(1分)对下面的计算个人所得税程序中,满足判定覆盖的测试用例是( )。
if (income<800) taxrate=0;
else if (income<=1500) taxrate=0.05;
else if (income<2000) taxrate=0.08;
else taxrate=0.1;
A、income=(799, 1500, 1999, 2000) B、income=(799, 1501, 2000, 2001)
C、income=(800, 1500, 2000, 2001) D、income=(800, 1499, 2000, 2001)
正确答案:A
16(1分)设有一段程序如下:
if (a==b and c==d or e==f) do S1
else if (p==q or s==t) do S2
else do S3
若要达到“判定—条件覆盖”的要求,最少的测试用例数目是( )
A、6 B、8 C、3 D、4
正确答案:C
17(1分)下列不属于白盒测试中逻辑覆盖标准的是( )。
A、语句覆盖 B、条件覆盖 C、分支覆盖 D、边界值覆盖
正确答案:D
18(1分)在某学校的综合管理系统设计阶段,教师实体在学籍管理子系统中被称为"教师",而在人事管理子系统中被称为"职工",这类冲突描述正确的为( )。
A、语义冲突 B、命名冲突 C、属性冲突 D、结构冲突
正确答案:B
19(3分)代码检查的方式有三种:、、_____________。
正确答案:桌面检查 代码审查 代码走查
20(3分)数据流分析就是对程序中数据的__________、__________及其之间的__________等进行分析的过程。
参考答案:定义 引用 依赖关系
21(1分)____________是逻辑覆盖标准的一种,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
正确答案:条件组合覆盖
22(1分)(判断)所有满足条件组合覆盖标准的测试用例集,也分支覆盖标准。 ( )
参考答案:对
23(1分)(判断)软件测试的目的在于发现错误、改正错误。 ( )
正确答案:错
24(1分)(判断)条件覆盖能够查出条件中包含的错误,但有时达不到判定覆盖的覆盖率要求。 ( )
正确答案:对
25(1分)(判断)在白盒测试中,如果某种覆盖率达到100% ,就可以保证把所有隐藏的程序缺陷都已经揭露出来了。 ( )
正确答案:错
26(1分)(判断)白盒测试的条件覆盖标准强于判定覆盖。 ( )
正确答案:错
27(1分)(判断)判定覆盖包含了语句覆盖,但它不能保证每个错误条件都能检查出来。 ( )
正确答案:对
28(13分)请为以下程序段设计测试用例集,要求分别满足语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖覆盖、条件组合覆盖。
public int do_work(int A,int B){
int x=0;
if((A>4) && (B<9))
{ x = A-B;}
if( A==5 && B>28 )
{ x= A+B;}
return x;
}
29(11分)请为以下程序段设计测试用例集,要求满足条件组合覆盖
public class Triangle {
protected long lborderA = 0;
protected long lborderB = 0;
protected long lborderC = 0;
// Constructor
public Triangle(long lborderA, long lborderB, long lborderC) {
this.lborderA = lborderA;
this.lborderB = lborderB;
this.lborderC = lborderC;
}
public boolean isTriangle(Triangle triangle) {
boolean isTriangle = false;
// check boundary
if (triangle.lborderA > 0 && triangle.lborderB > 0 && triangle.lborderC > 0 )
// check if subtraction of two border larger than the third
if ((triangle.lborderA-triangle.lborderB) < triangle.lborderC
&& (triangle.lborderB-triangle.lborderC) < triangle.lborderA
&& (triangle.lborderC-triangle.lborderA) < triangle.lborderB)
{isTriangle = true; }
return isTriangle;
}
}
30(13分)请为程序模块Function1
(1)画出程序控制流图,计算控制流图的环路复杂度
(2)导出基本路径
(3)设计基本路径覆盖测试用例
程序模块Function1代码如下:
1 public int Function1(int num, int cycle, boolean flag)
2 {
3 int ret = 0;
4 while( cycle > 0 )
5 {
6 if( flag == true )
7 {
8 ret = num - 10;
9 break;
10 }
11 else
12 {
13 if( num%2 ==0 )
14 {
15 ret = ret * 10;
16 }
17 else
18 {
19 ret = ret + 1;
20 }
21 }
22 cycle--;
23 }
24 return ret;
25 }
31(6分)请对以下程序进行插桩,显示循环执行的次数
public class GCD {
public int getGCD(int x,int y){
if(x<1||x>100)
{
System.out.println("参数不正确!");
return -1;
}
if(y<1||y>100)
{
System.out.println("参数不正确!");
return -1;
}
int max,min,result = 1;
if(x>=y)
{
max = x;
min = y;
}
else
{
max = y;
min = x;
}
for(int n=1;n<=min;n++)
{
if(min%n==0&&max%n==0)
{
if(n>result)
result = n;
}
}
System.out.println("最大公约数为:"+result);
return result;
}
}
正确答案:
package com.mozhimen.test;
public class ceshi4_31 {
int count=0;
public static void main(String[] args) {
// TODO Auto-generated method stub
ceshi4_31 ceshi=new ceshi4_31();
int x=4;
int y=10;
ceshi.getGCD(x,y);
}
public int getGCD(int x,int y){
if(x<1||x>100)
{
System.out.println("参数不正确!");
return -1;
}
if(y<1||y>100)
{
System.out.println("参数不正确!");
return -1;
}
int max,min,result = 1;
if(x>=y)
{
max = x;
min = y;
}
else
{
max = y;
min = x;
}
for(int n=1;n<=min;n++)
{
count++;
if(min%n==0&&max%n==0)
{
if(n>result)
result = n;
}
}
System.out.println("最大公约数为:"+result);
System.out.println("count:"+count);
return result;
}
}
32(10分)请对以下代码段进行变异,变异规则为将 “++” 替换为 “–”,然后设计测试数据,能够测试发现所有的变异点。
public class zhengchu {
public String iszhengchu(int n) {
if(n<0||n>500) {
return "error";
}
int flag=0;
String note="";
if(n%3==0) {
flag++;
note=note+" 3";
}
if(n%5==0) {
flag++;
note+=" 5";
}
if(n%7==0) {
flag++;
note+=" 7";
}
return "能被"+flag+"个数整除,"+note;
}
}
博客地址: