考点:
1、小黑书上软件问题原因,软件事故原因 (大致知道每个例子什么原因。)
火箭发射事故(没有做集成测试,只保证内部测试,单位不一致导致)
迪士尼游戏(光盘游戏销量高,原因只在个别PC可用,没有做兼容性测试)
CPU Inter(奔腾使用计算器软件,用特殊两个数字除完再乘本应该为0,结果错误,没有做浮点数精度测试)
2、软件测试的过程模型:V模型、W模型、H模型、X模型分别旨和含义。
V模型是关键:对称,左边开发过程、右边测试阶段,将软件生命周期,由开发与测试组成,测试在开发后。是软件测试基本模型,过于严格。
W模型又称双V,将软件测试提前到需求阶段,软件开发与软件测试并驾齐驱。
3、 软件测试的概念和定义,重点考察思维思想。在软件测试领域是在变化的,刚出现软件时候没有形成测试,调试与测试认为成一件事。
逐渐独立出测试(正向(初期想法,为了证明软件是正确的,逐渐被淘汰),逆向(70年代,为了发现软件中的错误,发现软件不正确))
第三种观点:不仅找到错误,更是为了对软件进行评价、评估、度量。软件测试应该融入所有的软件质量,软件测试应贯穿全流程。
第一章 引论
1.1 软件测试的必要性
一、案例
1、迪斯尼并不总是带来笑声:抱怨为什么游戏总是安装不成功,或没法正常使用 这个游戏软件只能在少数系统中正常运行;
原因:兼容性问题;(光盘游戏销量高,只在个别PC可用,没有做兼容性测试)
2、一个缺陷造成了数亿美元损失:(4195835/3145727)×3145727- 4195835 = ?
原因:浮点计算问题;CPU Inter(奔腾使用计算器软件,用特殊两个数字除完再乘本应该为0,结果错误,没有做浮点数精度测试)
3、美国航天局火星探测飞船坠毁:两个小组本身的工作都没什么问题,就是没有合在一起测试,其接口没有被测,而问题就在这里。
原因:集成测试不足;(没有做集成测试,只保证内部测试,单位不一致导致,一个数据位被意外置位)
4、软件测试走了捷径导致灾难再次发生:波音公司测试载人飞船公司缩短了对该飞行器软件的一次关键测试,他们将整个飞行过程分成了几个小单元分别进行测试
原因:集成测试不足;
5、错误指令造成骑士资本集团损失4.4亿美元:骑士资本的第一位散户投资者发出了买卖其投资头寸的指令
原因:功能容错性问题
6、AWS宕机整整4个小时:中断服务 ; 原因:性能、稳定性问题
7、Uber泄漏个人隐私,导致用户要求赔偿3亿多元;原因:安全性隐私保护问题
8、爱国者导弹防御系统的问题是:时钟缺乏校准功能。
浮点数的表示范围和精度取决于阶码的位数和尾数的位数。
1.2为什么要进行软件测试
1、为了保证软件质量。
2、软件总存在缺陷。只有通过测试,才可以发现软件缺陷。只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去。
3、软件中存在的缺陷带来的损失是巨大的,软件测试是软件质量保证的关键步骤,测试作为一种“预防和评估成本”的投入,从而降低缺陷造成的劣质成本
4、软件测试在产品开发中占据着相当重要的位置,也是软件行业几十年的实践所证明的一个道理
注意:
1)软件测试员的目标就是发现软件缺陷,并确保其得以修复。
2)对软件做测试的根本目的是确保程序符合用户需求。
3)软件测试的3个主要任务:测试计划、实际测试、报告发现的问题。
例:根据软件测试的背景,简要说明为什么要进行软件测试。
答:随着软件产业的日益发展,软件系统的规模和复杂性与日俱增,软件的生产成本和软件中存在的缺陷故障造成的损失也大大增加,甚至会带来灾难性的后果。软件测试的目的是尽可能多地发现程序中的错误。
1.3 什么是软件测试
1.3.1 软件测试学科的形成
1、软件测试 不是 程序测试; 程序的三种基本结构:顺序、选择、循环。
程序指可执行的流程、转换、逻辑和运算。
2、软件不只是可执行的程序,“需求、设计和代码”都属于软件的组成部分,对“需求、设计和代码”评审属于静态测试;
PS: 软件是包括程序、数据、相关文档的完整集合。
3、既然提出“动态测试”,这就能说明大家认可“静态测试”,软件测试包含静态测试和动态测试
4、测试进行得越早,成本越低;缺陷发现得越迟,研发成本越高 而且是非线性增长
5、从狭义的软件测试到广义的软件测试,广义的软件测试可以极大地降低研发成本
6、软件测试学科发展:
1)1957~1978年,以功能验证为导向,测试是证明软件是正确的(正向思维)。
2)1978~1983年,以破坏性检测为导向,测试是为了找到软件中的错误(逆向思维)。
3)1983~1987年,以质量评估为导向,测试是提供产品的评估和质量度量。
4)1988年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷。
7、不同阶段的划分
1)初级阶段(1957~1971)测试通常被认为是对产品进行事后检验 ,缺乏有效的测试方法
2)发展阶段(1972~1982),1972年第一次关于软件测试的正式会议,促进了软件测试的发展 3)成熟阶段(1983到现在),国际标准Std 829-1983 ,形成一门独立的学科和专业,成为软件工程学科中的一个重要组成部分
1.3.2 正反两方面的争辩
1、Bill Hetzel博士(正向思维的代表): 软件测试就是为程序或系统能够按预期设想运行而建立信心的过程。
“软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果” 。
测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作。
2、Glenford J. Myers (反向思维的代表): 测试是为了证明程序有错,而不是证明程序无错误 一个好的 测试用例 是在于它 能发现 至今未发现的错误 ;
一个成功的 测试 是 发现了 至今未发现的错误的测试;
1.3.3 软件测试的定义
1、(IEEE/ ISO29119)在特定的条件下运行系统或组件,观察或记录结果,对系统或组件的某个方面做出评价。分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性。
2、软件测试是想以最少的人力、物力和时间 找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
3、软件测试的概念:
1)在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价;
2)分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性;
3)由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体。
补充:
1)软件测试是由“验证”和“有效性确认”活动构成的整体:
“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性;
“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。
2)软件测试的核心:用最少的人力、物力、财力去找到软件的问题并让开发人员进行修复,从而降低商业风险,最终达到降低成本的目的。
3)软件测试的对象包括源程序、目标程序、数据以及相关文档等。
4)软件测试规范可以分为行业规范和操作规范。
4、软件测试的价值:
1)全面评估产品质量,获得有关产品质量的全面、客观的信息
2)发现问题,督促问题解决,提高产品质量
3)持续提供质量反馈、及时揭示质量风险,有助于控制项目风险,提高构建的质量
4)通过缺陷分析,获得缺陷模式,有助于缺陷预防
1.3.4 软件测试的其它观点
1、从质量视角认知软件测试:
软件测试被认为是对软件质量进行全面评估活动,给出质量信息,从而确定质量是否满足设计和用户的需求。
2、从风险视角认知软件测试:
1)软件测试被认为是对软件系统中潜在的各种质量风险进行评估的活动。测试是样本实验而不能穷尽,其风险总是存在的。
2)基于风险的测试强调对软件开发全过程进行检测,随时发现问题、报告问题,减少对客户不利影响的风险。
3)软件测试风险是软件测试过程中出现的或潜在的问题。
3、从经济视角认知软件测试
测试的经济观点就是以最小的代价获得最高的软件产品质量。经济观点也要求软件测试尽早开展工作,发现缺陷越早,返工的工作量就越小,所造成的损失就越小。
测试的成本< 缺陷造成的损失 测试才有意义。
4、基于Test Oracle 的认知
4、基于批判性思维的认知
软件测试就是借助观察、经验、反思、推理或沟通等收集信息,并对软件产品相关的质量信息进行分析,以此评估软件质量,并做出结论。
1.4 测试与质量保证的关系
软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证 软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
1、概念辨析:
1)对软件工程各个阶段的进展、完成质量及出现的问题进行评审、跟踪。
2)审查和验证软件产品是否遵守适用的标准、规程和要求,并最终确保符合标准、满足要求。
3)建立软件质量要素的度量机制,了解各种指标的量化信息,向管理者提供可视信息。
2、SQA 活动
技术方法的应用;正式技术评审的实施;软件测试;标准的执行;修改的控制;度量;质量记录和记录保存
3、软件测试 vs. SQA
1)① SQA指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。
② SQA是一项管理工作,侧重于对流程的评审和监控。
③ 软件质量保证(SQA)团队比软件测试团队的责任更大。
2)软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。 测试是一项技术性的工作,侧重对产品进行评估和验证。
注意:
1)软件SQA团队如何保证产品的质量:对项目进行近似完全的控制,建立标准和方法论,有条理地仔细监视和评估软件开发过程,对发现的过程问题反馈解决建议,执行测试(或者检查),拥有决定产品何时准备发布的授权。
2)如果软件SQA的目标是防范软件缺陷,在产品说明书、设计文档和代码上执行静态测试就算是一种软件SQA,因为防止了软件缺陷的出现。
3)全面质量管理(控制)不会设法实现质量保证的目的。
4)软件质量控制(SQC)来源于制造行业。
5)软件测试团队进行配置管理或者构造软件是不正常的(测试团队的目标是破坏而不是建立)。
6)软件的能力成熟度模型(CMM)是一个行业标准模型,用于定义和评价软件公司开发过程的成熟度,提供怎样做才能提高软件质量的指导。
7)ISO 9000是关于质量管理和质量保证的一系列标准。他的目标在于开发过程,而不是线上产品;只决定过程的要求是什么,而不管如何达到。
8)用于描述软件项目特定属性评价的术语是软件度量。
9)关于软件测试对软件质量的意义,有如下说法:
1、度量和评估软件质量;2、保证软件质量;3、有利于改进软件开发过程;4、发现软件错误。
则其中正确的是 ( )。
A. (1)、(2)、(3)
B. (1)、(2)、(4)
C. (1)、(3)、(4)
D. (1)、(2)、(3)、(4)
正确答案:B
2、软件的质量根本上由( )决定。
A. 编程技术
B. 测试技术
C. 过程管理
D. 开发工具
答案:C
1.5 测试与开发的关系
1、软件测试和软件开发是什么关系?
(1)软件测试与软件开发各阶段的关系
软件开发过程是一个自顶向下、逐步细化的过程,首先在软件计划阶段定义了软件的作用域,然后进行软件需求分析,建立软件的数据域、功能和性能需求、约束和一些有效性准则。接着进入软件开发,首先是软件设计,然后再把设计用某种程序设计语言转换成程序代码。而测试过程则是依相反的顺序安排自底向上、逐步集成的过程,低一级测试为上一级测试准备条件。此外还有两者平行地进行测试。首先对每一个程序模块进行单元测试,消除程序模块内部在逻辑上和功能上的错误和缺陷。再对照软件设计进行集成测试,检测和排除子系统(或系统)结构上的错误。随后再对照需求,进行确认测试。最后从系统全体出发,运行系统,看是否满足要求。
(2)软件测试与软件开发的并行性
在软件的需求得到确认并通过评审后,概要设计工作和测试计划制订工作就要并行进行。如果系统模块已经建立,对各个模块的详细设计、编码、单元测试等工作又可并行进行。待每个模块完成后,可以进行集成测试、系统测试。
1.6 测试驱动开发的思想
1、思想:TDD(test driven development):测试在前,开发在后
2、实践:最早来自极限编程
TDD 成为思想,UTDD 单元测试驱动开发、 ATDD 验收测试驱动开发则成为实践
补充:
【软件开发生命周期模式:软件产品从最初构思到公开发行的过程。】
1、软件开发模式:
瀑布模型、螺旋模型、增量模型、迭代模型、敏捷模型、大爆炸模式、边写边改模式、旋转模式。
软件开发模型:瀑布模型、敏捷开发模型、快速原型实现模型。
(1)瀑布模型 开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,项目开发进程从一个阶段“流动”到下一个阶段; 瀑布模型是所有其他模型的基础框架。瀑布模型每个阶段都只执行一次,是线性顺序进行的软件开发模式,适用于需求比较稳定的项目。
① 瀑布模式的步骤:构思、分析、设计、开发、测试、最终产品。
② 瀑布模式有三点需要强调:瀑布模式非常强调产品的定义;瀑布模式各步骤是分立的,没有交叉;瀑布模式无法回溯。
优点:易理解,各阶段清晰,强调开发的阶段性、强调早期计划及需求调查、强调产品测试;
缺点: 依赖于早期进行的唯一1次需求调查,不能适应需求的变化; 是单一流程,开发中的经验教训不能反馈应用于本产品的过程; 风险往往在后期的测试阶段才暴露,失去及早纠正的机会。——“集成之日就是爆炸之日”
(2)大爆炸模式 的优点是简单:计划、进度安排和正规开发过程几乎没有,所有精力都在开发软件和编写代码上。大爆炸模式几乎没有什么测试。
PS:除了大爆炸模式之外,每一种模式中开发小组都需要根据需求文档编写一份产品说明书,用以定义软件是什么样子的。
(3)螺旋模式:一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一,适合规模庞大、复杂度高、风险大的项目。
1)螺旋模式的总体思想是一开始不必详细定义所有细节。螺旋模式有机会尽早发现问题。
2)螺旋模式每一次循环包括6个步骤:① 确定目标、可选方案和限制条件;② 明确并化解风险;③ 评估可选方案;④ 当前阶段开发和测试;⑤ 计划下一阶段;⑥ 确定进入下一阶段的方法。
3)优点: 严格的全过程风险管理、强调各开发阶段的质量、提供机会检讨项目是否有价值继续
4)缺点: 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平要求较高,需要人员、资金和时间的投入。
(4)增量、迭代
增量开发模型:能显著降低项目风险,结合软件持续构建机制。鼓励用户反馈,在每个达代过程中(涉及需求更改、构建新的可执行软件版本等),要求测试人员与开发人员更加紧密地协作,开发小组以一种循环的、可预测的方式驱动产品的开发。
① 增量是逐块建造的概念:先完成模块A,再模块B;
② 迭代是反复求精的概念:先完成所有模块的基础功能(轮廓),再进行模块的升级和细化
(5)敏捷开发
1)敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
2)轻文档、轻流程、重目标,重产出 ,适应需求变化;周期较短(一般1~4周),团队人员较 少、高质量可用软件
3)名词解释
① PO(Product Owner):客户代表方,整理客户需求,形成user story,定义其商业价值,对其进行排序,制定发布计划
② SM(Scrum Manager):项目经理,管理整个开发流程,保证敏捷开发流程顺利实施
③ ST(Scrum Team):研发团队,各种技术人员组成,确保交付高质量软件
4)敏捷scrum流程:产品负责人负责整理user story,形成左侧的product backlog。
① 发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
② 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
③ 每日例会:每天SM召集会议,团队成员汇报做了什么,计划做什么,存在什么问题。
④ 演示会议:迭代结束之后,召开演示会议,项目人员参加,团队展示本次迭代取得的成果。期间大家的反馈记录下来,由PO整理,形成新的story。
⑤ 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。
2、软件测试模型:
软件测试过程模型分为:V模型、W模型、X模型、H模型、测试驱动模型。
(1)V 模型 反映了测试活动与分析和设计的关系,从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系;
(图中的箭头代表了时间方向,左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程的各个阶段。)
V模型描述开发与测试之间的对应关系。
V模型是瀑布模型的变种,左右每个阶段之间一一对应,左边是右边测试阶段的依据;
单元和集成测试检测程序的执行是否满足软件设计的要求;系统测试检测系统功能、性能的质量 特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求
局限性:不适用于需求的变更,发现问题的时机比较晚。仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试
(2)W 模型:
V 模型的局限性在于没有明确地说明早期的测试,不能体现“尽早地和不断地进行软件测试”的原则。在 V 模型中增加软件各开发阶段应同步进行的测试,被演化为一种 W 模型,因为实际上开发是 “V”,测试也是与此相并行的 “V”。基于“尽早地和不断地进行软件测试”的原则;
① W模型强调在整个项目开发中需要经历的不同测试级别,指明测试的对象时程序。
② W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示了测试与开发的并行关系,开发的同时进行验证和确认;
③ W模型特点:测试的对象不仅是程序,还包括需求或其他的相关文档,需求、设计等同样要测试,测试与开发是同步进行的
④ W模型优点:测试介入较早,有利于尽早地全面的发现问题
⑤ 局限性:需求、设计、编码等活动被视为串行的;
测试和开发活动也保持着一种线性的前后关系,上一阶段结束,才可开始下阶段工作。
不支持敏捷开发模式,不能解决复杂情况下的测试.
下图 W模型中蓝色的V是以开发为主的产品实现过程;绿色的V是以测试为主的测试设计和测试实现过程。
(3)H 模型 将测试活动独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。贯穿于整个产品周期,与其他流程并发地进行;
H模型测试对象是整个产品包,而不仅仅是程度、需求或相关说明书。
(4)X 模型定位了探索性测试;没有提前计划再测试;
(5)前置测试模型是一个将测试和开发紧密结合的模型,该模型提供了轻松的方式,可使你的项目加快速度。
题:
1、关于软件测试模型,描述正确的是( )
A. V模型的测试对象时程序本身,测试与开发可以同一阶段进行。
B. W模型测试的对象时程序,需求,设计等,可以支持迭代的开发模型
C. X模型是事先计划再进行测试
D. H模型软件测试过程活动完全独立,贯穿产品整个生命周期,与其他流程并发地进行。
答案:D
2、(多选题)下面关于软件测试模型的描述中,不正确的包括()
A.V模型的软件测试策略既包括低层测试又包括了高层测试,高层测试是为了源代码的正确性,低层测试是为了使整个系统满足用户的需求
B.V模型存在一定的局限性,它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段
C.H模型中软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行
D.H模型中测试准备和测试实施紧密结合,有利于资源调配
答案:AD
小韦补充:
1、软件测试的原则:
1)所有的测试都应追溯到用户需求
2)应该尽早地和不断地进行软件测试
3)测试用例应当由测试数据和与之对应的预期结果组成
4)完全测试是不可能的,测试需要终止
5)尽量避免测试的随意性
6)程序员应避免检查自己写的程序
7)充分注意测试中的集群现象
8)测试不能显示软件潜在的缺陷
2、软件有了准确性,才能谈到精确。
3、软件测试可以简单描述为评价、报告和按部执行。
4、应该遵循正规过程正确地分离、分类、记录和跟踪发现的问题。
5、测试程序应该包含:标识符、目的、特殊要求、程序步骤(日志、设置、启动、程序、度量、关闭、重启、终止、重置、偶然事件)。
PS:度量和统计是跟踪项目发展、成效和测试的手段。
6、管理和跟踪系统有4种:凭脑子记、书面文档、电子表格、自定义数据库。
相关习题
一、填空题
1、 软件从“出生”到“消亡”的过程称为 软件生命周期
2、早期的线性开发模型称为__瀑布___开发模型。
3、引入风险分析的开发模型为_螺旋_开发模型。
4、ISO/IEC 9126:1991标准提出的质量模型包括_功能性、可靠性、可使用性、效率、可维护性、可移植性。_6大特性。
5、有一种测试模型,测试与开发并行进行,这种测试模型称为__W___模型。
6、软件测试是使用人工或自动的手段来____或____某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
答案:运行 测定
7、软件质量成本包括所有由质量工作或者进行与质量有关的活动所导致的成本,包括__。
答案:预防成本 评价成本 失效成本
8. 软件测试的 W 模型由两个 V 字组成,分别代表_________与_________过程。
参考答案:软件质量验证,确认,测试 软件开发
9.软件测试过程主要分为5个主要的步骤,分别是:计划测试、设计测试、实施测试、执行测试、评估测试
二、判断题
1、现在比较流行的软件开发模型为螺旋模型。( )× 敏捷模型
4、软件测试是为了证明程序无错。( )√
5、软件测试H模型融入了探索测试。( )× X模型融入了探索模型
6、软件测试要投入尽可能多的精力以达到100%的覆盖率。( )×
8、软件的质量特性有静态质量特性和动态质量特性。(√)
9、静态质量特性包括结构化的、可维护的、可测试的代码以及正确而又完整的文档。(√)
10、软件测试是为了证伪而非证真(√)
11、软件测试并非为了证明软件不存在任何问题,只能说明该软件当前具备了发布的初步条件。√
12、软件质量保证通常贯穿软件项目整个生产周期。(√)
13、没有可运行的程序,就无法进行任何测试工作。 ✘
14、测试是为了验证软件已正确地实现了用户的要求。 ✘
15、在软件开发过程中,若能推迟暴露其中的错误,则为修复和改进错误所花费的代价就会降低。 ✘
17、在软件产品计划阶段,不必进行SQA活动。✘
18、软件测试是可以无穷尽的。(×)
19、测试过程中应重视测试的执行,可以轻视测试的设计。(×)
20.软件测试在实际开发过程可以做到穷尽测试。(x)
21、快速原型模型也依赖与用户反馈和交互获取最初需求,在快速原型模型中,进行构建的是原型。 (×) 解:快速原型模型,是原型模型的变种。与原型模型一样,快速原型模型也依赖于用户反馈和交互获取最初需求。但是,与原型模型相比有两点不同: 快速原型模型中,构建的不是原型而是实际产品。 为了保证获取需求的形式化并在设计和后续阶段正确反映需求,要从需求获取开始,在整个生存周期内使用计算机辅助软件工程工具(CASE),自动获取需求、实体数据库、对象等,并将数据库中需求自动转换为设计,并生成代码机制。即构建的是实体
22、瀑布模型将测试看作是一种开发后的活动。(√)
23、螺旋模型将测试看作是前进的一步,并试图将产品分解成增量版本,每个增量版本都可以单独测试。(√)
24、W模型是基于“尽早地和不断地进行软件测试”的原则。(×)
三、选择题:
1.对软件做测试的根本目的是(B)
A.提高软件质量 B.确保程序符合用户需求
C.找出程序中所有的缺陷 D.确保程序没有缺陷
2.以下关于软件测试的描述,正确的是(C)
A.软件测试需求规格说明应该包括所有的用户需求。
B.软件测试没有任何技术含量。
C.软件测试的根本目的是确保软件满足用户需求。
D.如果有良好的设计和高水平的程序员开发的软件,就不需要测试了。
3.关于软件测试,下列描述正确的是(D)
A.软件测试可以提高软件质量
B.软件测试不创造任何产品,可以不需要测试。
C.软件测试等于调试。
D.软件测试的目的是衡量软件产品是否符合预期
4、软件测试目的是什么? (ABC)
A:修正软件错误和缺陷提高软件质量
B:发现当前开发工作中所采用的的软件过程的缺陷
C:对软件质量进行度量和评估
D:为了证明软件没有错误
5. 在下列描述中,关于测试与调试的说法错误的是(D)
A.测试是显示错误的行为;而调试是推理的过程;
B.测试显示开发人员的错误。调试是开发人员为自己辩护
C.测试能预期和可控。调试需要想象、经验和思考
D.测试必须在详细设计已经完成的情况下才能开始;没有详细设计的信息调试不可能进行。
6. 为了提高测试效率,应该(D)
A.随机的选取测试数据 B.取一切可能的输入数据作为测试数据
C.在完成编码以后制定软件测试计划 D.选择发现错误可能性最大的数据作为测试用例
7. 下面说法正确的是(C )。
A.经过测试没有发现错误说明程序正确 B.测试的目标是为了证明程序没有错误
C.成功的测试是发现了迄今尚未发现的错误的测试 D.成功的测试是没有发现错误的测试
8.软件测试是系统开发不可少的一部分,具有 以下哪些特征?(ABCD)
A:可以是需求,而不仅仅是代码
B:既是静态活动也是动态活动
C:用来预防软件失效
D:有助于在软件生命周期中尽早发现问题,以降低修复软件缺陷所需的成本
9.开发人员接收到一个指派给自己的Bug后,认为自己的实现是符合需求的,此时该开发人员应该:(D)
A:置之不理
B:直接将改bug关闭
C:找该bug的测试人员麻烦
D:跟提该bug的人进行沟通,如果需求理解不能达成一致,找项目经理/需求管理者确定需求
10. 下列说法不正确的是()
A. 测试不能证明软件的正确性
B. 测试员需要良好的沟通技巧
C. QA与testing属于一个层次的概念
D. 成功的测试是发现了错误的测试
正确答案:D
11、软件测试的目的是()
A. 发现程序中的所有错误
B. 尽可能多地发现程序中的错误
C. 证明程序是正确的
D. 调试程序
正确答案:B
12.经验表明,在程序测试中,某模块与其他模块相比,若该模块已发现并改正的错误较多,则该模块中残存的错误数目与其他模块相比,通常应该()
A.较少 B. 较多 C. 相似 D. 不确定
正确答案:B
13. 下列中不属于测试原则的是()
A. 软件测试是有风险的行为
B. 完全测试程序是不可能的
c. 测试无法显示潜伏的软件缺陷
D.找到的缺陷越多软件的缺陷就越少
正确答案:D
14. 权衡多个因素,较实用的软件测试停止标准是()
A. 测试超过了预定时间,则停止测试。
B. 根据查出的缺陷总数量决定是否停止测试。
C. 测试成本超过了预期计划,则停止测试。
D. 分析发现的缺陷数量和测试投入成本曲线图,确定应继续测试还是停止测试。
正确答案:D
15.第一类测试方法与第二类测试方法的本质区别体现在()
A. 执行测试的人员不同 B. 执行测试的时间不同
C. 执行测试的目的不同 D. 执行测试的效果不同
正确答案:C
16. 下列选项中,哪一项不是软件开发模型?(a)【测试模型】
A. V模型 B. 快速模型 C. 螺旋模型D. 敏捷模型
17. 下列选项中,哪一项不是影响软件质量的因素?(c)
A. 需求模糊 B. 缺乏规范的文档指导 C. 使用新技术 D. 开发人员技术有限
18. 关于软件测试,下列说法中错误的是(d)。
A. 在早期的软件开发中,测试就等同于调试
B. 软件测试是使用人工或自动手段来运行或测定某个系统的过程
C. 软件测试的目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差异
D. 软件测试与软件开发是两个独立、分离的过程
17 下列哪一项不是软件测试的原则?(b)
A. 测试应基于客户需求 B. 测试越晚进行越好
C. 穷尽测试是不可以的 D. 软件测试应遵循GoodEnough原则
18、测试项目周期包括以下哪个阶段?(D)
A:需求测试阶段
B:测试设计阶段
C:测试执行阶段
D:以上都是
19、软件开发模型的种类有(ABCDE)
A:瀑布模型
B:快速原型
C:增量模型
D:XP开发模型
E:增量模型
20、瀑布模型的优点有 (ABC)
A:简单
B:易于组织
C:质量保证,每一个阶段必须完成规定的文档;每一个断句结束前完成文成文档审查急躁改正错误
D:可以很灵活地适应用户需求的改变
21、软件测试与软件开发过程关系,下列描述正确的有(ABC)
A:没有开发过程就没有测试过程
B:测试过程是为保证开发过程的产出进行验证和确认的一系列活动
C:不同的软件开发过程模型中,测试在其中所处的位置不同
D:开发比测试更重要
22、增量模型的每个增量的开发可以使用瀑布模型或快速原型模型。(√)
23、根据软件需求规格说明书,在开发环境下对已经集成的软件进行的测试是 (C)
A:系统测试
B:单元测试
C:集成测试
D:验收测试
24、最具代表意义的测试模型是(A)
A:V模型
B:H模型
C:W模型
D:X 模型
25、(C)强调软件测试是一个独立的流程,贯穿产品的整个生命周期,与其他流程并发地进行。
A:V模型
B:W模型
C:H模型
D:X模型
26、下面关于软件测试模型的描述中,不正确的包括 (AE)
A:V 模型的软件测试策略既包括低层测试又包括了高层测试,高层测试是为了源代码的正确性,低层测试是为了使整个系统满足用户的需求
B:V 模型存在一定的局限性,它仅仅把测试过程作为在需求分析概要设计详细设计及编码之后的一个阶段
C:W 模型可以说是V模型自然而然的发展。它强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求功能和设计同样要测试
D:H 模型中软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行
E:H 模型中测试准备和测试实施紧密结合,有利于资源调配
27、软件测试的目的:( C)
A. 避免软件开发中出现的错误
B. 发现软件开发中出现的错误
C. 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性
D. 修改软件中出现的错误
28、测试后程序中残存的错误数目与该程序中已发现的错误数目成( D )。
A.未知 B.反比
C.相等 D.正比
29、软件测试的目的是(C)
A.证明软件中没有错误 B.改正软件中的错误
C.发现软件中的错误 D.优化程序结构
30、成功的测试是指运行测试用例后(B)
A未发现程序错误 B发现了程序错误 C证明程序正确性 D改正了程序错误
31.在设计人机界面时,应主要考虑的因素有(D)。
A系统响应时间
B错误处理
C用户求助机制
D以上都是
32 软件生存周期过程中,修改错误代价最大的阶段是 D.
A)需求阶段 B)设计阶段C)编程阶段 D)发布运行阶段
33、下列可以作为软件测试对象的是(D)
A)需求规格说明书 B)软件设计规格说明 C)源程序 D)以上全部
34、大突击测试把所有的模块一次性集成为一个完整系统后进行测试,很容易(B)
A通过测试B.整体测试C.快速查错D.快速排错
35、下列关于软件测试过程模型,说法正确的是 B
A. H模型指出软件测试具有独立性,只要某个测试达到准备就绪点,测试执行活动就可以开展
B.W模型强调在整个项目开发中需要经历的不同测试级别,指明测试的对象是程序
C.软件测试过程与软件开发过程不同的是,它不需遵循软件工程原理
D.V 模型强调测试的对象不仅仅是程序,需求设计等同样需要测试
36、下列属于需求规格说明书检查要点的是(C)
A.不可修改性 B. 充分性 C. 完整性 D. 相似性
37、下列关于软件测试原则的说法中错误的是 ( )
A. 穷举测试是不可能的
B. 测试中BUG存在群集现象
C. 测试应该由软件设计机构设计,这样可以准确定位软件的缺陷
D. 软件测试应该追溯需求,测试应该根据用户需求进行
正确答案:C
38、在软件测试时,可以在程序中加入(D )语句,来判断变量的取值或程序的状态是否符合预期。
A. 输入 B. 显示 C. 输出 D. 断言
39、软件测试是软件质量保证的主要手段之一,测试的成本已超过( )的30%以上,因此,提高测试的有效性非常重要。
A. 软件开发成本 B. 软件维护成本
C. 软件开发成本和维护成本
D. 软件研制成本
正确答案:A
40、下列关于软件测试的叙述中错误的是( )
A. 软件测试可以作为度量软件与用户需求间差距的手段
B. 没有发现错误的测试也是有价值的
C. 软件测试的根本目的是尽可能多地发现软件中存在地问题,最终把一个高质量地软件系统交给用户使用
D. 软件测试的主要工作内容包括发现软件中存在的错误并解决存在的问题
正确答案:D
41、测试环境的搭建不包括的内容是()(单选题)
A、 测试文档
B、 测试数据
C、 操作系统
D、 测试机器
答案: A
42、以下哪个不属于软件测试员的职责 ( )(单选题)
A、 执行测试
B、 制定可行性分析报告
C、 设计测试用例
D、 评审需求说明书
答案: B
四、简答题
1、什么是软件测试、软件质量保证?分析它们之间的关系如何。
软件测试:使用人工或自动手段来运行或测定某个软件系统过程,检验它是否满足规定的需求或弄清预期结果与实际结果之间差别。
软件质量保证:SQA是为保证软件产品和服务充分满足用户要求的质量而进行的有计划、有组织的活动。
关系:
①软件测试是事后检查,SQA是贯穿于整个过程。
②SQA侧重于过程的管理和控制,是一项管理工作。
③软件测试是过程管理和控制策略的具体执行。是一项技术型工作。
④有了SQA,测试工作就可以被客观的检查评价。
⑤软件测试为SQA提供数据和依据。
⑥测试通常被认为是质量控制的主要手段。
2.试分析应如何降低软件质量成本。
软件质量成本包括:预防成本,评估成本,失败成本。
①及早发现问题,解决问题,降低返工和修复缺陷的版本。
②防止事故发生,降低失败成本。
③保证软件产品达到一定的质量标准
④对软件质量进行客观的评价。
⑤提高软件产品质量,满足用户需求。
3.试分析为什么要对软件进行质量保证与测试。
①及早发现问题,解决问题,降低返工和修复缺陷的版本。
②防止事故发生,降低失败成本。
③保证软件产品达到一定的质量标准
④对软件质量进行客观的评价。
⑤提高软件产品质量,满足用户需求。
4.第一类测试方法与第二类测试方法各自的优缺点是什么?优点:
第一类测试方法以正向思维出发,有利于界定测试工作范围,确定测试的重点,加强针对性。
第二类测试方法以逆向思维出发,有利于发挥测试人员主观能动性,往往能发现更多错误。
缺点:
第一类:比较繁杂,需要准备的东西多。
第二类:测试往往不稳定,比较依赖测试人员的经验。
5.我国软件测试的现状是怎样的?
(1)软件测试重要性和规范性不断提高;
(2)测试从手工向自动化方式转变 ;
(3)测试人员需求逐步增大,素质不断提高 ;
(4)测试服务体系初步形成 。
6.阐述软件质量与软件测试的关系
“软件测试”属于软件质量控制活动;
软件测试是获取软件质量度量的重要手段;
软件质量保证是为满足顾客要求提供信任的证据,即让顾客确信你提供的产品能满足他的要求。
7.软件测试管理包含哪些方面?各部分的主要内容是什么?
(1)测试计划的管理;
测试计划的管理内容主要有:测试评估,确定切实可行的测试目标,制订合理的测试计划,控制测试计划的执行。
(2)测试件管理;
主要内容是:检查和评审测试工作产品,测试和分析测试对象——软件产品,收集质量分析和产品放行决策所需要的数据,测试配置管理。
(3)测试过程的管理;
主要内容有:定义和定制所需要的测试过程,满足测试过程所需要的资源和条件,实施确定的测试过程,测量和分析测试过程的有效性和效率,进行基于度量的测试过程的持续改进。
(4)测试人员及组织的管理。
主要工作有:选择合适的测试人员,使测试人员能够按测试计划完成测试任务,与有关人员进行沟通、协同工作,建立有效的软件测试团队。
8、一位优秀的软件测试人员需具备哪些素质?
(1)沟通能力:人际交往与沟通能力
(2)移情能力:端正心态,在工作中对事不对人
(3)技术能力:包括与软件测试相关的知识和技能
(4)自信心:接受指正,坚持观点
(5)外交能力: 为人处世要有技巧
(6)幽默感
(7)很强的记忆力:可以挖掘记忆深处的东西
(8)耐心: 不厌其烦,保持工作热情
(9)怀疑精神:未检测前,不要轻信任何解释和承诺
(10)自我督促:不断学习的能力
(11)洞察力:有较强的分析能力,善于从复杂的环境中发现事物的本质,找到关键因素
1. 试对比分析软件测试的V模型和W模型。
① W模型由两个V模型组成,增加了同步进行的验证和确认活动。
② W模型软件质量保证和测试不仅是程序还有文档。
③ V模型是先开发后测试。