
A. 避免软件开发中出现的错误
B. 发现软件开发中出现的错误
C. 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性
D. 修改软件中出现的错误
2、软件测试是采用( a )执行软件的活动。
A.测试用例
B.输入数据
C.测试环境
D.输入条件
3、导致软件缺陷的最大原因是:(a )
A.软件需求说明书
B.设计方案
C.编码
D.维护
4、在下列描述中,关于一个软件缺陷状态完整变化的错误描述是(d)
A、打开——修复——关闭
B、打开——关闭
C、打开——保留
D、激活——修复——重新打开
5、在下列描述中,关于测试与调试的说法错误的是(d)
A、测试是显示错误的行为;而调试是推理的过程;
B、测试显示开发人员的错误。调试是开发人员为自己辩护;
C、测试能预期和可控。调试需要想象、经验和思考;
D、测试必须在详细设计已经完成的情况下才能开始;没有详细设计的信息调试
不可能进行。
6、某次程序调试没有出现预计的结果,下列(b)不可能是导致出错的原因。
A.变量没有初始化 .编写的语句书写格式不规范
C.循环控制出错 .代码输入有误
7、软件缺陷修复的代价最高的阶段为(a )
A、发布阶段 、需求阶段
C、设计阶段 、编码阶段
8、不属于逻辑覆盖方法的是(d)。
A.组合覆盖 .判定覆盖
C.条件覆盖 .接口覆盖
9、( d)是选择若干个测试用例,运行被测程序,使得程序中的每个可执行语
句至少执行一次。
A、条件覆盖 、组合覆盖
C、判定覆盖 、语句覆盖
10、( a)是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所
有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少
出现一次。
A、判定-条件覆盖 、组合覆盖
C、判定覆盖 、条件覆盖
11.软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环
节?( b )
A.功能测试
B.单元测试
C.结构测试
D.验收测试
12、单元测试的主要任务不包括( b )。
A.出错处理 .全局数据结
构
C.路径 .模块接口
13、如下图所示的N-S图,至少需要( b )个测试用例完成逻辑覆盖。
A.1.48
C.2.18
14、单元测试中用来模拟实现被测模块需调用的其他功能模块的是( b)。
A.驱动模块 .桩模块
C.主控模块 .真实的被调
用模块
15、集成测试计划应该在(b )阶段末提交。
A、需求分析 、概要设计
C、详细设计 、单元测试完成
后面应该是老师说的没给出的5个题(森哥特别提示)
16、下列关于程序效率的描述错误的是( )。
A.提高程序的执行速度可以提高程序的效率
B.降低程序占用的存储空间可以提高程序的效率
C.源程序的效率与详细设计阶段确定的算法的效率无关
D.好的程序设计可以提高效率
17、下列( B )是对程序流程图进行简化后得到的,它可以更加突出的表示
程序控制流的结构,且不包含复合条件。
A.DD-路径图 B. 控制流图
C.MM-路径图 . 模块调用图
18、自底向上增量式集成测试中,下面( )描述是正确的。
A.测试由桩模块控制
B.最上面的模块最先测试
C.父单元用测试过的子单元测试
D.包含树的深度优先或广度优先遍历过程
19、测试后程序中残存的错误数目与该程序中已发现的错误数目成( D )。
A.未知 .反比
C.相等 D.正比
20、针对是否对无效数据进行测试,可以将等价类测试分为( B )
1) 标准(一般)等价类测试
2) 健壮等价类测试
3) 弱等价类测试
4) 强等价类测试
A.3)4) B.1)2)
C.1)3) .2)4)
一、优秀的软件测试工程师应具备哪些素质?
人是测试工作中最有价值也是最重要的资源,没有一个合格的、积极的测试小组
,测试就不可能实现。然而,在软件开发产业中有一种非常普遍习惯,那就是让
那些经验最少的新手、没有效率的开发者或不适合干其他工作的人去做测试工作
。这绝对是一种目光短浅的行为,对一个系统进行有效的测试所需要的技能绝对
不比进行软件开发需要的少,事实上,测试者将获得极其广泛的经验,他们将遇
到许多开发者不可能遇到的问题。
(1)沟通能力
一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技术(开发
者)和非技术人员(客户,管理人员)的交流能力。既要可以和用户谈得来,又
能同开发人员说得上话,不幸的是这两类人没有共同语言。和用户谈话的重点必
须放在系统可以正确地处理什么和不可以处理什么上。而和开发者谈相同的信息
时,就必须将这些活重新组织以另一种方式表达出来,测试小组的成员必须能够
同等地同用户和开发者沟通。
(2)团队合作能力
(3)技术能力
就总体言,开发人员对那些不懂技术的人持一种轻视的态度。一旦测试小组的某
个成员作出了一个错误的断定,那么他们的可信度就会立刻被传扬了出去。一个
测试者必须既明白被测软件系统的概念又要会使用工程中的那些工具。要做到这
一点需要有几年以上的编程经验,前期的开发经验可以帮助对软件开发过程有较
深入的理解,从开发人员的角度正确的评价测试者,简化自动测试工具编程的学
习曲线。
(4)自信心
开发者指责测试者出了错是常有的事,测试者必须对自己的观点有足够的自信心
。如果容许别人对自己指东指西,就不能完成什么更多的事情了。
(5)外交能力
当你告诉某人他出了错时,就必须使用一些外交方法。机智老练和外交手法有助
于维护与开发人员的协作关系,测试者在告诉开发者他的软件有错误时,也同样
需要一定的外交手腕。如果采取的方法过于强硬,对测试者来说,在以后和开发
部门的合作方面就相当于“赢了战争却输了战役”。
(6)耐心
一些质量保证工作需要难以置信的耐心。有时你需要花费惊人的时间去分离、识
别和分派一个错误。这个工作是那些坐不住的人无法完成的。
(7)怀疑精神
可以预料,开发者会尽他们最大的努力将所有的错误解释过去。测式者必须听每
个人的说明,但他必须保持怀疑直到他自己看过以后。
(8)自我督促
干测试工作很容易使你变得懒散。只有那些具有自我督促能力的人才能够使自己
每天正常地工作。
(9)洞察力
一个好的测试工程师具有“测试是为了破坏”的观点,捕获用户观点的能力,强
烈的质量追求,对细节的关注能力。应用的高风险区的判断能力以便将有限的测
试针对重点环节。
二、自动化测试优点:
1、对程序的回归测试更方便。这可能是自动化测试最主要的任务,特别是在程
序修改比较频繁时,效果是非常明显的。由于回归测试的动作和用例是完全设计
好的,测试期望的结果也是完全可以预料的,将回归测试自动运行,可以极大提
高测试效率,缩短回归测试时间。
2、可以运行更多更繁琐的测试。自动化的一个明显的好处是可以在较少的时间
内运行更多的测试。
3、可以执行一些手工测试困难或不可能进行的测试。比如,对于大量用户的测
试,不可能同时让足够多的测试人员同时进行测试,但是却可以通过自动化测试
模拟同时有许多用户,从而达到测试的目的。
4、更好地利用资源。将繁琐的任务自动化,可以提高准确性和测试人员的积极
性,将测试技术人员解脱出来投入更多精力设计更好的测试用例。有些测试不适
合于自动测试,仅适合于手工测试,将可自动测试的测试自动化后,可以让测试
人员专注于手工测试部分,提高手工测试的效率。
5、测试具有一致性和可重复性。由于测试是自动执行的,每次测试的结果和执
行的内容的一致性是可以得到保障的,从而达到测试的可重复的效果。
6、测试的复用性。由于自动测试通常采用脚本技术,这样就有可能只需要做少
量的甚至不做修改,实现在不同的测试过程中使用相同的用例。
7、增加软件信任度。由于测试是自动执行的,所以不存在执行过程中的疏忽和
错误,完全取决于测试的设计质量。一旦软件通过了强有力的自动测试后,软件
的信任度自然会增加。
当然,自动化测试不是万能的,他不能完全替代手工测试。在软件版本还没有稳
定的情况下,千万不要开展自动化测试,否则是自讨苦吃。
自动化测试的缺点:
1、不能取代手工测试
2、手工测试比自动测试发现的缺陷更多
3、对测试质量的依赖性极大
4、测试自动化不能提高有效性
5、测试自动化可能会制约软件开发。由于自动测试比手动测试更脆弱,所以维
护会受到,从而制约软件的开发。
6、工具本身并无想像力
三、简单分析软件缺陷产生的原因,其中那个阶段引入的缺陷最多,修复成本又
最低
解:软件缺陷产生的主要原因有:需求规格说明错误;设计错误;程序代码有误
;其他。其中在需求分析阶段引入的缺陷最多,修复的成本又最低。
四、请详细论述软件测试在软件项目开发中的地位
地位至高无上,软件测试是贯穿于软件开发过程中的,软件生存周期的各个阶段
中都少不了相应的测试,测试不正常,不成功,有问题,软件就无法正常运行,
相应设计制作软件的所有目的性都不能达到,而且有的软件直接关系到人们的财
产跟生命安全,比如铁路的售票系统,或者汽车技术上的一些软件,等等
共 页 第 页
