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

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

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

一、选择题

1. 软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?( )
  A. 集成测试   B. 单元测试   C. 系统测试   D. 验收测试
参考答案:B

2. 增量式集成测试有3种方式:自顶向下增量测试方法、( )和混合增量测试方式。
  A. 自下向顶增量测试方法
  B. 自底向上增量测试方法
  C. 自顶向上增量测试方法
  D. 自下向顶增量测试方法
参考答案:B

3. 在软件测试步骤按次序可以划分为( )。
  A. 单元测试、集成测试、系统测试、验收测试
  B. 验收测试、单元测试、系统测试、集成测试
  C. 单元测试、集成测试、验收测试、系统测试
  D. 系统测试、单元测试、集成测试、验收测试
参考答案:A

4. 软件验收测试合格通过的标准不包括( )
  A. 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
  B. 至少有一项软件功能超出软件需求分析说明书中的定义,属于软件特色功能。
  C. 立项审批表、需求分析文档、设计文档和编码实现一致。
  D. 所有在软件测试中被发现的严重软件缺陷均已被修复。
参考答案:B

5. 下列关于alpha测试的描述中正确的是:( )
  A. alpha测试一定要真实的最终软件用户参加
  B. alpha测试是集成测试的一种
  C. alpha测试是系统测试的一种
  D. alpha测试是验收测试的一种
参考答案:D

6. 编码阶段产生的错误主要由( )检查出来的。
A、单元测试 B、集成测试 C、系统测试 D、有效性测试
参考答案:A

7. 单元测试一般以( )为主。
A、白盒测试 B、黑盒测试 C、系统测试 D、分析测试
参考答案:A

8. 单元测试的测试用例主要根据( )的结果来设计。
  A. 需求分析   B. 源程序   C. 概要设计   D. 详细设计
参考答案:D

9. 集成测试的测试用例是根据( )的结果来设计。
  A. 需求分析   B. 源程序   C. 概要设计   D. 详细设计
参考答案:C

10. 集成测试对系统内部的交互以及集成后系统功能检验了何种质量特性( )
  A. 正确性   B. 可靠性   C. 安全性   D. 可维护性
参考答案:A

11. ( )的目的是对即将交付使用的软件系统进行全面的测试,确保最终软件产品满足用户需求。
A. 系统测试   B. 集成测试   C. 单元测试   D. 验收测试
参考答案:A

12. 单元测试中用来模拟被测模块调用者的模块是 ( )
  A. 父模块   B. 子模块   C. 驱动模块   D. 桩模块
参考答案:C

13. 在自底向上测试中,要编写( )
  A. 测试存根   B. 驱动模块   C. 桩模块   D. 底层模块。
参考答案:B

14. 以下哪种软件测试属于软件性能测试的范畴( )
  A. 接口测试   B. 压力测试   C. 单元测试   D. 正确性测试
参考答案:B

15. 下列关于α测试的描述中,正确的是( )
  A. α测试采用白盒测试技术;
  B. α测试不需要从用户角度考虑问题;
  C. α测试是系统测试的一种;
  D. α测试是验收测试的一种;
参考答案:D

16. 下列软件属性中,软件产品首要满足的应该是( )
  A. 功能需求   B. 性能需求   C. 可扩展性和灵活性   D. 容错纠错能力
参考答案:A

17. 按照测试组织划分,软件测试可分为:开发方测试,第三方测试及( )
A.集成测试 B.单元测试 C.用户测试 D.灰盒测试
参考答案:C

18. 软件可靠性是指在指定的条件下使用时,软件产品维持规定的性能级别的能力,其子特性( )是指在软件发生故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力。
  A. 成熟性   B. 易恢复性   C. 容错性   D. 稳定性
参考答案:C

19. 下面哪项对验收测试的描述不正确?( )
  A. 与系统测试不同的是以客户业务需求为标准来进行测试
  B. 测试人员多由客户方担任,也可以客户委托第三方来进行验收测试
  C. 由资深的开发和测试人员来进行测试
  D. 不仅仅要验收程序,还要验收相关的文档
参考答案:C

20. 对于软件的β测试,下列哪些描述是正确的? ( )
  A. β测试就是在软件公司内部展开的测试,由公司专业的测试人员执行的测试。
  B. β测试就是在软件公司内部展开的测试,由公司的非专业测试人员执行的测试。
  C. β测试就是在软件公司外部展开的测试,由非专业的测试人员执行的测试。
  D. β测试就是在软件公司外部展开的测试,由专业的测试人员执行的测试。
参考答案:C

21. 在程序测试中,用于检查程序模块或子程序之间的调用是否正确的静态分析方法是 ( )
  A. 操作性分析   B. 可靠性分析   C. 引用分析   D. 接口分析
参考答案:C

22. 用于考查当前软硬件环境下软件系统所能承受的最大负荷并帮助找出系统瓶颈所在的是( )
  A. 压力测试   B. 容量测试   C. 负载测试   D. 疲劳测试
参考答案:A

二、填空题

1. 集成测试以_______________说明书为指导,验收测试以_______________说明书为指导。
参考答案:概要设计   软件规格
2. 软件验收测试可分为 2 类:__________________、__________________。
参考答案:α+β测试   正式验收测试
3. ____________指软件系统被修改或扩充后重新进行的测试。
参考答案:回归测试
4. ____________是在软件开发公司内模拟软件系统的运行环境下的一种验收测试。
参考答案:α测试
5. ____________的依据是软件规格说明书。
参考答案:验收测试

三、判断题

  1. 单元测试通常由开发人员进行。
  2. 测试应从"大规模"开始,逐步转向"小规模"。
  3. 负载测试是验证要检验的系统的能力最高能达到什么程度。
  4. 为了快速完成集成测试,采用一次性集成方式是适宜的。
  5. 验收测试是站在用户角度的测试。
  6. 自底向上集成需要测试员编写桩模块。
  7. β测试是集成测试的一种。
  8. 如何看待软件产品内部的缺陷,开发者和用户的立场是一致的。

四、解答题

1. 试针对如下程序代码设计测试脚本。

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

参考答案:
(1)设计测试脚本,对GCD类的getGCD方法实现语句覆盖测试。

public class GCD {   
	public void testDemo_yuju(){
  		int test1=getGCD(-1,100);
  		int test2=getGCD(2,1);
  		System.println.out(test1+ test2);
 	}
	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;
 	}
}

(2)设计测试脚本,对GCD类的getGCD方法实现条件覆盖测试。

public class GCD {  
	public void testDemo_tiaojian(){
		int test1=getGCD(-1,-1);
		int test2=getGCD(100,100);
		int test3=getGCD(2,1);
		int test4=getGCD(1,2);
		System.println.out(test1+ test2+ test3+ test4);
	}
 	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;
  	}
}

2. 设有程序段ModuleA和 ModuleB如下,

public class ModuleA {       
	public static double operate(double x) {              
		// 模块A内部进行处理              
		// ...              
		double r = x/2;              
		// 调用模块B              
		double y = ModuleB.operate(r);              
		// 继续处理              
		// ...              
		return y;       
	}
} 
public class ModuleB {       
	public static double operate(double r) {              
		// 模块B内部进行处理              
		// ...              
		double temp = Pi*r * r * r *4/3;              
		// 继续处理              
		// ...              
		double y = temp;              
		return y;       
	}
}

(1)阅读程序,请说明这两段程序合起来的功能是什么?
==参考答案:== 输入直径,求圆球的体积
(2)已知变量x一开始就有一定的误差△x,请分析 ModuleA.operate(x)执行完毕后,返回结果y的相对误差有多大?
答案:略

3. 设有两段代码ModuleA和 ModuleB如下,它们由不同的程序员开发。

public class ModuleA {       
	/*** 实现把 str1 中包含的 str2 去掉后的内容返回的功能        
	* @param str1 字符串1
	* @param str2 字符串2        
	* @param 返回处理的结果        
	*/       
	public String operate(String str1, String str2) {              
		return str1.replace(str2, "");       
	}
}

public class ModuleB {       
	private ModuleA moduleA;              
	public void setModuleA(ModuleA moduleA) {              
		this.moduleA = moduleA;       
	}       
	/**        
	* 模块B的具体处理操作中,调用了模块A的接口        
	*/       
	public String operate(String str1, String str2) {              
		// str1 待替换的目标串       
		// str2 原串              
		return moduleA.operate(str1, str2);       
	}
}  

参考答案:
(1)试分析对这两段代码进行集成测试时会出现什么问题?

ModuleB的目标是将str2中包含str1的字符串替换(去除),ModuleA提供的接口是将str1中包含str2的字符串替换或删除
两者接口颠倒,将会出现字符串替换错乱的问题

(2)试设计两个测试数据,一个能发现这一问题,另一个则不能发现这一问题。

答案:略

4. 试分析集成测试和系统测试的区别。

1、测试对象不同:系统测试对象是整个系统,包括系统中的硬件等;集成测试对象是模块之间的集成和调用关系。
2、测试方法不同:系统测试一般由独立测试小组采用黑盒方式来测试;集成测试一般由开发小组采用白盒加黑盒的方式来测试。
3、测试依据不同:系统测试依据是系统结构设计,目标说明书,需求说明书等;集成测试依据是程序结构设计。

5. 某连锁机构网站有注册账号5万个,平均1天大约有12000个用户要访问该系统,用户一般在7点——22点使用该系统,在一天的时间内,用户使用系统的平均时长约为0.5小时。假设用户登录访问该系统符合泊松分布,为进行并发测试,请估算系统的平均并发用户数C_avg和并发用户峰值数C_max。

参考答案:

系统的平均并发用户数C_avg=nL/T=12000*0.5/(22-7)=400
并发用户峰值数C_max~=400+3*400^1/2=460

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