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