慕课版软件质量保证与测试(第四章.课后作业)

慕课版软件质量保证与测试(第四章.课后作业)

    • 一. 选择题
    • 二、填空题
    • 三、判断题
    • 四、解答题

一. 选择题

1. 下列不属于白盒测试的技术是 ( )
  A. 语句覆盖   B. 判定覆盖   C. 边界值测试   D. 基本路径测试
正确答案:C

2. 某次程序调试没有出现预计的结果,下列( )不可能是导致出错的原因。
  A. 变量没有初始化
  B. 编写的语句书写格式不规范
  C. 循环控制出错
  D. 代码输入有误
正确答案:B

3. 代码检查法有桌面检查法. 代码走查和( )
  A. 静态测试   B. 代码审查   C. 动态测试   D. 白盒测试
正确答案:B

4. 如果某测试用例集实现了某软件的路径覆盖,那么它一定同时实现了该软件的 ( )
  A. 判定覆盖   B. 条件覆盖   C. 条件/判定覆盖   D. 组合覆盖
正确答案:A

5. 软件测试的局限性不包括( )
  A. 因为输入/状态空间的无限性,测试不可能完全彻底。
  B. 巧合性有时会导致错误的代码得到正确的结果,掩盖了问题。
  C. 软件测试会导致成本增加,效益降低。
  D. 软件缺陷的不确定性。
正确答案:C

6. 以下哪种测试方法不属于白盒测试技术( )
  A. 基本路径测试   B. 等价类划分测试  C. 程序插桩   D. 逻辑覆盖测试
正确答案:B

7. 调试是( )
  A. 发现与预先定义的规格和标准不符合的问题
  B. 发现软件错误征兆的过程
  C. 有计划的. 可重复的过程
  D. 消除软件错误的过程
正确答案:D

8. 使用白盒测试方法时,确定测试数据的依据是指定的覆盖标准和 ( )
  A. 程序的注释   B. 程序的内部逻辑  C. 用户使用说明书   D. 程序的需求说明
正确答案:B

9. 数据流覆盖关注的是程序中某个变量从其声明、 赋值到引用的变化情况,它是( )的变种。
  A. 语句覆盖   B. 控制覆盖   C. 分支覆盖   D. 路径覆盖
正确答案:D

10. 如果一个判定中的复合条件表达式为(A > 1)or(B <= 3),则为了达到100%的条件覆盖率,至少需要设计多少个测试用例( )
  A. 1   B. 2   C. 3   D. 4
正确答案:B

11. 一个程序中所含有的路径数与( )有着直接的关系。
  A. 程序的复杂程度   B. 程序语句行数  C. 程序模块数   D. 程序指令执行时间
正确答案:A

12. 条件覆盖的目的是 ( )
  A. 使每个判定中的每个条件的可能取值至少满足一次
  B. 使程序中的每个判定至少都获得一次"真"值和"假"值。
  C. 使每个判定中的所有条件的所有可能取值组合至少出现一次。
  D. 使程序中的每个可执行语句至少执行一次。
正确答案:A

13. 软件调试的目的是( )
  A. 发现软件中隐藏的错误
  B. 解决测试中发现的错误
  C. 尽量不发现错误以便早日提交软件
  D. 证明软件的正确性
正确答案:B

14. 针对下面一个程序段:
If ((M>0) && (N = = 0))
  FUCTION1;
If ((M = = 10)|| (P > 10))
  FUCTION2;

其中,FUCTION1、FUCTION2均为语句块。现在选取测试用例:M=10、N=0、P=3,该测试用例满足了( )
  A. 路径覆盖   B. 条件组合覆盖   C. 判定覆盖   D. 语句覆盖
正确答案:D

15. 对下面的计算个人所得税程序中,满足判定覆盖的测试用例是( )。
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. 设有一段程序如下:
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. 下列不属于白盒测试中逻辑覆盖标准的是( )
  A. 语句覆盖   B. 条件覆盖   C. 分支覆盖   D. 边界值覆盖
正确答案:D

18. 在某学校的综合管理系统设计阶段,教师实体在学籍管理子系统中被称为"教师",而在人事管理子系统中被称为"职工",这类冲突描述正确的为( )
  A. 语义冲突   B. 命名冲突   C. 属性冲突   D. 结构冲突
正确答案:B

二、填空题

1. 代码检查的方式有三种:_____、___
正确答案:桌面检查   代码审查   代码走查
2. 数据流分析就是对程序中数据的__________、__________及其之间的__________等进行分析的过程。
参考答案:定义   引用   依赖关系
3. ____________是逻辑覆盖标准的一种,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
参考答案:条件组合覆盖

三、判断题

  1. 所有满足条件组合覆盖标准的测试用例集,也分支覆盖标准。
  2. 软件测试的目的在于发现错误、改正错误。
  3. 条件覆盖能够查出条件中包含的错误,但有时达不到判定覆盖的覆盖率要求。
  4. 在白盒测试中,如果某种覆盖率达到100% ,就可以保证把所有隐藏的程序缺陷都已经揭露出来了。
  5. 白盒测试的条件覆盖标准强于判定覆盖。
  6. 判定覆盖包含了语句覆盖,但它不能保证每个错误条件都能检查出来。

四、解答题

1. 请为以下程序段设计测试用例集,要求分别满足语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖覆盖. 条件组合覆盖。

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;    
     }          
参考答案:略

2. 略

3. 为以下程序段设计测试用例集,要求满足条件组合覆盖

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;
   }
}
正确答案:
略

4. 程序模块Function1代码如下:
(1)画出程序控制流图,计算控制流图的环路复杂度
(2)导出基本路径
(3)设计基本路径覆盖测试用例

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   }
正确答案:
略

5. 试对以下程序进行插桩,显示循环执行的次数

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;
     }
}

6. 试对以下代码段进行变异,变异规则为将 “++” 替换为 “–”,然后设计测试数据,能够测试发现所有的变异点。

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;      
    }     
}
正确答案:略

你可能感兴趣的:(慕课软件质量保证与测试,软件测试)