[键入文字]
一、选择题(每题 2 分,共 20 分)
1、下面关于软件测试的说法,( )是错误的。 A.软件测试就是程序测试
B.软件测试贯穿于软件定义和开发的整个期间
C.需求规格说明、设计规格说明都是软件测试的对象 D.程序是软件测试的对象
2、下列各项中( )不是一个测试计划所应包含的内容。 A.测试资源、进度安排 B.测试预期输出 C.测试范围 D.测试策略
3、关于软件测试的说法,( )是不正确的。
A.代码审查是代码检查的一种,是由程序员和测试员组成一个审查小组,通过阅读、讨论和争议,对程序进行静态分析的过程。
B.软件测试的对象不仅仅是程序,文档、数据和规程都是软件测试的对象。 C.白盒测试是通过对程序内部结构的分析、检测来寻找问题的测试方法。 D.单元测试是针对软件设计的最小单位——程序模块进行正确性检验的测试工作,它通常需要开发辅助的桩模块作为主程序调用被测模块来完成测试。
4、通常测试用例很难100%覆盖测试需求,因为( )。
①输入量太大 ②输出结果太多 ③ 软件实现途径太多 ④ 测试依据没有统一标准 A.①② B.①③ C.①②③ D.①②③④
5、针对下列程序段,对于(A,B)的取值,以下( )测试用例组合能满足条件覆盖的要求。 If((A-10)==20 and (B+20)>10) then C=0 If((A-30)<10 and (B-30)<0) then B=30
① A=50 B=-10 ② A=40 B=40 ③ A=30 B=-10 ④ A=30 B=30 A.①② B.③④ C.①④ D.②④
6、针对逻辑覆盖,以下( )叙述是不正确的。
A.达到100%CC要求就一定能够满足100%DC的要求 B.达到100%DCC要求就一定能够满足100%DC的要求 C.达到100%MDCC要求就一定能够满足100%DC的要求 D.达到100%路径覆盖要求就一定能够满足100%DC的要求
7、配置测试( )。
A.是指检查软件之间是否正确交互和共享信息 B.是交互适应性、实用性和有效性的集中体现
[键入文字]
C.是指使用各种硬件来测试软件操作的过程 D.检查缺陷是否有效改正 8、( )是性能测试工具。
A.LoadRunner B.WinRunner C.QTP D.TestDirector
9、进行单元测试过程中,通常测试工程师都需要借助( )来代替所测模块调用的子模块。 A.桩模块 B.驱动模块 C.桩模块和驱动模块 D.存根模块和驱动模块
10、A&&(B||C) 执行逻辑覆盖测试,测试用例至少需要( )种组合才能满足多条件覆盖的要求。
A.6 B.4 C.8 D.12
二、判断题(每题 1 分,共 10分)
1、软件测试是对软件质量的度量与评估,并可以保证软件质量。 ( ) 2、测试的最终目标是zero bug,以保证软件的质量。 ( )
3、集成测试也叫做组装测试,通常在编码完成的基础上,将所有的程序模块进行有序的、递增的测试。 ( ) 4、找出的软件缺陷越多,说明软件剩下的缺陷越少。 ( ) 5、软件缺陷产生的主要来源是设计方案。 ( ) 6、测试应从“小规模”开始,逐步转向“大规模”。 ( )
7、邻居集成策略使得缺陷定位变得困难,但是可以降低桩模块和驱动模块的开发工作量。
( )
8、缺陷的严重性越高,其处理优先级别也越高。 ( ) 9、软件测试过程中发现的所有缺陷必须都得到修复。 ( )
10、数据驱动测试是从功能的角度检查软件是否满足需求规格说明的要求,逻辑驱动测试则需研究程序的内部逻辑结构。 ( )
三、填空题(每空1分,共10分)
1、public class Triangle { protected long lborderA = 0; protected long lborderB = 0; protected long lborderC = 0; public Triangle(long lborderA, long lborderB, long lborderC) { this.lborderA = lborderA; this.lborderB = lborderB; this.lborderC = lborderC; }
[键入文字]
public boolean isTriangle(Triangle triangle) { boolean isTrue = false;
if((triangle.lborderA>0&&triangle.lborderA<200) &&(triangle.lborderB>0&&triangle.lborderB<200) &&(triangle.lborderC>0&&triangle.lborderC<200)) { if((triangle.lborderA<(triangle.lborderB+triangle.lborderC)) &&(triangle.lborderB<(triangle.lborderA+triangle.lborderC)) &&(triangle.lborderC<(triangle.lborderA+triangle.lborderB))) isTrue = true; } return isTrue; }
public String isType(Triangle triangle) { String strType = \"\"; if(this.isTriangle(triangle)) { if(triangle.lborderA==triangle.lborderB&&triangle.lborderB==triangle.lborderC) strType = \"等边三角形\"; else if((triangle.lborderA!=triangle.lborderB)&& (triangle.lborderB!=triangle.lborderC)&& (triangle.lborderA!=triangle.lborderC)) strType = \"不等边三角形\"; else strType=\"等腰三角形\"; } return strType; }
}
测试代码: import junit.framework.TestCase;
public class exampletest extends 1 { public ______2_____ triangle; protected void setUp() throws Exception { super.setUp(); triangle=new Triangle(12,12,13); } public void testIsTriangle() { ____3_____(triangle.__ ___4_____);
[键入文字]
} public void testIsType() { assertEquals(triangle.isType(triangle),__ ___5____); } public static void main(String[] args){ junit.textui.TestRunner.run( 6 ); }
2、缺陷管理的流程可以概括为:测试人员提交新的错误入库,缺陷状态为 7 ;项目经理将缺陷分配给相应的开发人员,缺陷状态为 8 ;开发人员查重现缺陷,做如下处理:如果不是缺陷,则置状态为“拒绝”,如果是缺陷则修复并置状态为 9 ,如果不能解决的错误,要留下文字说明并保持错误为“拒绝”状态;测试人员查询状态为 9 的错误,验证错误是否已解决,做如下处理:如问题解决了置错误的状态为 10 。
四、名词解释题(每题 5 分,共 20 分)
1、软件缺陷 2、测试和测试 3、桩模块和驱动模块 4、压力测试和负载测试
五、简答题(共 20 分)
1、什么是单元测试?什么是集成测试?什么是系统测试?他们的测试依据是什么?(6分) 2、公司A 承担了业主B 的办公自动化系统的建设工作。2004 年10 月初,项目正处于开发阶段,预计2005 年5 月能够完成全部开发工作,但是合同规定2004 年10 月底进行系统验收。因此2004 年10 月初,公司A 依据合同规定向业主B 和监理方提出在2004 年10 月底进行验收测试的请求,并提出了详细的测试计划和测试方案。在该方案中指出测试小组由公司A 的测试工程师、外聘测试专家、外聘行业专家以及监理方的代表组成。公司A 的做法是否正确?请给出理由。(6分)
3、简述面向对象的软件测试模型包括哪些方面,及其主要测试内容。(8分)
六、综合题(共 20 分)(无详细步骤不得分)
1、基本路径法设计出的测试用例能够保证在测试中程序的每一条可执行语句至少执行一次。以下代码由C语言书写,请按要求回答问题。(10分)
int ReadPara( CString temp) {
if ( temp == \">=\") m_oper= 0; else
[键入文字]
{
if (temp == \">\") m_oper=1; else {
if ( temp == \"==\") m_oper=2; else {
if( temp == \"<=\") m_oper=3; else {
if ( temp == \"<\") m_oper=4; else
m_oper=5; } } } }
return m_oper; }
[问题1] (2分)
请画出以上代码的程序图。 [问题2] (2分)
请计算上述程序图的环路复杂度V(G)。 [问题3] (6分)
请使用基本路径测试法为变量temp设计测试用例,使之满足基本路径覆盖要求。
2、试用等价类划分法设计测试用例。(10分)
某城市的电话号码由三部分组成。这三部分的名称和内容分别是 地区码:空白或三位数字;
前 缀:非’0’或’1’开头的三位数; 后 缀:四位数字。
假定被测试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,试用等价类划分法来设计它的测试用例。
[键入文字]
答 案
一、选择题(每题2分,共20分)
1 A
2 B 3 D 4 D 5 C 6 B 7 C 8 A 9 A 10 C 二、判断题(每题1分,共10分)
1 ×
2 × 3 × 4 × 5 × 6 √ 7 √ 8 × 9 × 10 √ 三、填空题(每空1分,共10分)
1、TestCase 2、Triangle 3、assertTrue 4、isTriangle(triangle) 5、“等腰三角形” 6、exampletest.class
7、打开 8、分派或指派或分配 9、修复或已解决 10、关闭
四、名词解释题(每题5分,共20分)
1、软件缺陷:(符合下列规则的叫软件缺陷): 1).软件未达到产品说明书的功能 2).软件出现了产品说明书指明不会出现的错误 3).软件功能超出产品说明书指明范围 4).软件未达到产品说明书虽未指出但应达到的目标 5).软件测试员认为难以理解、不易使用、运行速度缓慢、或者最终用户认为不好 (每条1分,共5分)
2、测试:开发方通过检测和提供客观证据,证明软件运行是否满足用户规定的需求。(3分)测试:将软件完全交给用户,让用户在实际使用的环境下进行的对产品预发布版本的测试。(2分)
3、驱动模块是模拟被测单元的上级模块,用于接收测试数据、启动被测模块和输出结果。(3分)桩模块是模拟被测单元所调用的模块。(2分)
4、压力测试:连续不断的给被测系统增加压力,直到被测系统被压垮,从而确定系统能承受的最大压力。(3分)负载测试:让被测系统在其能忍受的压力极限范围内(或临界状态下)连续运行,来测试系统的稳定性。(2分)
五、简答题(共20分)
1、单元测试又称模块测试,是指对软件中的最小可测试单元或基本组成单元进行检查和验证。
[键入文字]
单元测试需要从程序的内部结构出发设计测试用例,因此其测试依据是详细设计说明书和程序源代码。(2 分)
集成测试是在单元测试的基础上,将所有已通过单元测试的模块按照概要设计的要求组装为子系统或系统,进行集成测试,目的是确保各单元模块组合在一起后能够按既定意图协作运行,并确保增量的行为正确。 集成测试的依据主要是概要设计和单元测试的单元。(2分)
系统测试是将已经过良好的集成测试的软件系统,作为整个计算机系统的一部分,与计算机硬件、外部设备、支持软件、数据以及人员等其他系统元素结合在一起,在实际使用(运行)环境下对计算机系统进行一系列的严格测试来发现软件中的潜在缺陷,保证系统交付给用户之后能够正常使用。系统测试的依据主要是产品系统的需求规格说明书。(2分) 2、不正确。(2分)验收测试要在系统测试通过之后,交付使用之前进行,而不能仅仅根据合同规定进行,2004年10底并不具备验收测试的条件;(2分) 验收测试不能缺少用户方的人员。(2分)
3、面向对象的软件测试模型包括OOAT、OODT、OOPT。(2分)
OOAT和OODT是对分析和设计得到的文档进行测试,OOPT是对编程风格和代码进行测试。(2分)OOPT又分为OOUT和OOIT,OOUT主要完成对类的方法的测试及方法之间的交互测试,OOIT主要对系统内的相互服务进行测试。(4分)
六、综合题(共20分)(无详细步骤不得分)
1、【问题1】(2分)
1.int ReadPara( CString temp) 2. {
3. if ( temp = = \">=\") 4. m_oper= 0; 5. else 6. {
7. if (temp = = \">\") 8. m_oper= 1; 9. else 10. {
11. if ( temp = = \"= =\") 12. m_oper= 2; 13. else 14. {
15. if( temp = = \"<=\") 16. m_oper= 3; 17. else 18. {
19. if ( temp = = \"<\")
[键入文字]
20. m_oper= 4; 21. else
22. m_oper= 5; 23. } 24. } 25. } 26. } 27. return; 28. }
2348121620232425262728711151922【问题2】(2分) 环路复杂度V(G)=22-18+2=6 【问题3】(6分) Path 1 Path 2 Path 3 Path 4 输入 temp=”>=” temp=”>” temp=”==” temp=” <=” 预期输出 m_oper=0(1分) m_oper=1(1分) m_oper=2(1分) m_oper=3(1分) [键入文字]
Path 5 temp=” <” m_oper=4(1分) m_oper=5(1分) (或者是除上述符号外的其他符号) Path 6 temp=”+”
2、第一步:划分等价类,包括4个有效等价类,11个无效等价类。(5分)
输入条件 有效等价类 地区码 前缀 后缀 空白(1),3位数字(2) 无效等价类 有非数字字符(5),少于3位数字(6),多于3位数字(7) \"1\"(10),少于3位数字(11),多于3位数字(12) 有非数字字符(13),少于4位数字(14),多于4位数字(15) 从200到999之间的3有非数字字符(8),起始位为\"0\"(9),起始位为位数字(3) 4位数字(4) 第二步:确定测试用例。(5分) 测试数据 ( ) 276-2345 (635) 805-9321 范围 等价类(1),(3),(4) 等价类(2),(3),(4) 期望结果 有效 有效 对11个无效等价类,要选择11个测试用例,如下所示: 测试数据 (20A) 123-4567 (33 ) 234-5678 (7777) 345-67 (777) 34A-67 (234) 045-67 (777) 145-67 (777) 34-67 (777) 2345-67 (777) 345-678A (777) 345-678 (777) 345-567 范围 无效等价类(5) 无效等价类(6) 无效等价类(7) 无效等价类(8) 无效等价类(9) 期望结果 无效 无效 无效 无效 无效 无效等价类(10) 无效 无效等价类(11) 无效等价类(12) 无效 无效 无效等价类(13) 无效 无效等价类(14) 无效 无效等价类(15) 无效 选取的测试数据可以不同,关键是与测试内容相符。