本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明!
文章目录
2.编码是什么?所选用的程序设计语言对程序的哪些特性有着深远影响?
14.测试阶段的信息流中包含哪两部分,各自分别有哪些部分组成?
23.自顶向下和自底向上两种策略的对比?(一种策略的缺点即是另一种的优点)
1.实现由哪两个部分组成?
实现由编码和测试组成,它们统称为实现
2.编码是什么?所选用的程序设计语言对程序的哪些特性有着深远影响?
所谓编码,就是把软件设计结果翻译成用某种程序设计语言书写的程序
所选用的程序设计语言的特点以及编码风格,将会对程序的可靠性、可读性、可测试行和可维护性产生深远的影响
3.软件测试在软件生命周期中横跨哪两个阶段?
单元测试阶段 :模块编写者和测试者是同一人
综合测试阶段 :由专门的测试人员承担
4.测试的工作量往往占软件开发总工作量的比例是多少?
40%以上
5.编码之前的一项重要工作是?
选择一种适当的程序设计语言,高级语言明显优于汇编语言
6.编码的规则都应考虑哪些方面?
- 程序内部的文档
- 数据说明
- 语句构造
- 输入输出
- 效率
7.效率主要是指哪两个方面?
时间和容量空间
8.效率的原则?
- 效率是性能要求
- 效率是靠好的设计来提高的
- 程序的效率和程序的简单程度是一致的,不要牺牲程序的清晰行和可读性来不必要地提升效率
9.测试阶段的根本目的是?
测试阶段的根本目的是尽可能多地发现和排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。
暴露问题并不是软件测试的最终目的,发现问题是为了解决问题。
10.软件测试的目的或定义是?
- 测试是为了发现程序中的错误而执行程序的过程(定义)
- 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
- 成功的测试是发现了至今为止尚未发现的错误的测试
11.测试的准则有哪些?
- 所有测试都应该能追溯到用户需求
- 应远在测试开始之前就制定出测试计划
- 把pareto原理运用到软件测试中,即错误中的80%可能是由程序中20%的模块造成的
- 应该从“小规模”测试开始,并逐步进行“大规模”测试
- 穷举测试是不可能的
- 为了达到最佳的测试效果,应该由独立的第三方从事测试的工作
12.按测试时间顺序,测试步骤分为哪几种?
- 单元测试
- 集成测试
- 系统测试
- 验收测试(确认测试)
13.平行运行是什么?
平行运行是指关系重大的软件产品在验收之后往往并不立即投入生产性运行,而是要再经过一段和旧系统平行运行时间的考验
14.测试阶段的信息流中包含哪两部分,各自分别有哪些部分组成?
- 软件配置:需求说明书、设计说明书、源程序清单
- 测试配置:测试方案与计划等
15.单元测试是什么?主要使用哪种测试技术?
单元测试集中检测软件设计的最小单元——模块,其主要使用“白盒测试技术”
对多个模块的测试可以并行地进行,应用人工测试和计算机测试两种不同的方法完成工作,相互补充,相辅相成
16.单元测试的测试重点?
- 模块接口
- 局部数据结构
- 重要的执行通路
- 出错处理通路
- 边界条件(最重要)
17.代码审查比计算机测试优越的原因是?
在一次代码审查会上可以发现许多错误,而用计算机测试的方法发现错误后,通常需要先改正这个错误才能继续进行测试,即错误是一个一个发现并改正的。
18.单元测试需要开发哪两个虚拟程序?
驱动软件(主程序)
存根软件(桩模块、虚拟子程序)
19.模块内聚程度高给单元测试带来的好处?
模块内聚程度高可以简化单元测试过程。如果每个模块只完成一个功能,那么需要的测试方案数目将明显减少,模块中的错误也易于预测和发现
20.集成测试是什么?主要目标是?
集成测试是测试和组装软件的系统化技术,其主要目标是发现与接口有关的问题。
21.模块组装成为程序有哪两种方法?
模块组装成为程序有非渐增式测试方法和渐增式测试方法,在集成测试时普遍采用渐增式测试方法
22.渐增式测试方法把模块结合到程序中时,有哪两种策略?
自顶向下和自底向上两种策略
23.自顶向下和自底向上两种策略的对比?(一种策略的缺点即是另一种的优点)
自顶向下测试方法主要缺点:
- 需要存根程序
- 可能遇到于此相联系的测试困难
- 低层关键模块中的错误发现较晚
- 用这种方法在早期不能充分展开人力
自顶向下测试方法主要优点:
- 不需要测试驱动程序
- 能够在测试阶段的早期实现并验证系统的主要功能
- 能够在早期发现上层模块中的接口错误
24.混合策略是什么?
混合策略=改进的自顶向下测试方法+混合法
【注】:混合法也被称为“三明治法”,即对软件结构中较上层使用自顶向下的测试方法,对较下层使用自底向上的测试方法
25.回归测试是什么?
回归测试是指重新执行已经做过的测试的某个子集
26.确认测试的目标是什么?验证和确认的区别?
确认测试也称为验收测试,其目标是验证软件的有效性
验证指的是保证软件正确地实现了某个特定要求的一系列活动
确认指的是为了保证软件确实满足了用户需求而进行的一系列活动
27.软件有效性的定义?
软件有效性是指如果软件的功能和性能和用户所合理期待的一致,软件就是有效的
28.进行确认测试的基础是什么?
软件需求规格说明书
29.确认测试的主要对象是?通常采用哪种测试法?
确认测试以用户为主进行,通常使用黑盒测试法。这个阶段发现的问题通常和需求分析阶段的差错有关,涉及面较广,解决起来较为困难
30.Alpha测试和Beta测试区别是什么?
Alpha测试是在受控的环境中进行,通常由开发者指导用户测试
Beta测试由软件最终用户在一个或者多个客户场所进行,开发者不在测试现场
31.测试用例是什么?
测试数据和预期的输出结果称为测试用例,最困难的问题是设计测试用的输入数据
32.白盒测试技术包含哪些?
逻辑覆盖和控制结构测试
33.逻辑覆盖是什么?
逻辑覆盖是逐渐进行越来越完整的通路测试过程的总称
34.逻辑覆盖由弱到强分为?
- 语句覆盖(点覆盖):选择足够多的测试数据,使被测试程序中每个语句至少执行一次
- 判定覆盖(边覆盖):不仅每个语句必须至少执行一次,每个判定的每个分支也都至少执行一次
- 条件覆盖:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果
- 判定/条件覆盖:使判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果
- 条件组合覆盖:选取足够多的测试数据,使得每个判定表达式中的条件的各种可能组合至少出现一次
【注】:
- 判定覆盖>=语句覆盖
- 条件覆盖>=语句覆盖
- 条件覆盖通常强于判定覆盖,没有具体包含关系
- 判定/条件覆盖>=判定覆盖
- 判定/条件覆盖>=条件覆盖
- 最强标准为路径覆盖
35.控制结构测试包括?
基本路径测试、条件测试、循环测试
36.基本路径测试是控制结构测试中的一种,具体步骤是什么?
- 根据过程设计结果画出相应的流图
- 计算流图的环形复杂度,数是多少就有多少条独立路径,独立路径结果不唯一
- 确定线性独立路径的基本集合(独立路径至少包含一条在定义该路径之前不曾用过的边)
- 设计可强制执行基本集合中每条路径的测试用例
37.白盒测试与黑盒测试的区别?
- 白盒测试检测软件的逻辑结构,黑盒测试检测软件的功能
- 白盒测试前提是测试者完全知道程序的结构和处理算法,而黑盒测试则是把程序看成一个黑盒子,不考虑程序的内部和处理
- 白盒测试在测试的早期进行,而黑盒测试主要用于测试过程的后期
- 二者使用的技术方法不同,白盒测试技术主要有逻辑覆盖、路径测试,而黑盒测试技术主要有等价类划分、边界值分析
38.黑盒测试技术都有哪些?
等价类划分、边界值分析、错误推测
39.等价类划分法的步骤?
等价划分首先划分出输入数据的等价类,从而确定输入数据的有效等价类和无效等价类,还需分析输出数据等价类,以便根据输出数据等价类导出相应的输入数据的等价类
【注】:处理边界情况时程序最容易发生错误,通常设计测试方案时总是联合使用等价划分和边界值分析两种技术
40.错误推测法的特点?
错误推测法在很大程度上依靠直觉和经验进行
41.选择输入组合的有效途径有哪些?
- 利用判定表或者判定树作为工具
- 将计算机测试和人工检测相互结合
42.调试是什么?
调试是在测试发现错误之后排除错误的过程,是软件开发过程中最艰巨的脑力劳动
43.调试的途径有哪些?
- 蛮干法
- 回溯法
- 原因排除法(包括对分查找法、归纳法、演绎法)
44.软件可靠性和软件可用性的区别是什么?
软件可靠性是指程序在给定的时间间隔内,按照规格说明书的规定,成功运行的概率
软件可用性是指程序在给定的时间点,按照规格说明书的规定,成功运行的概率
45.估计错误总数的方法有哪些?
- 植入错误法
- 分别测试法
46.软件评审是什么?
软件评审是对软件元素或者项目状态的一种评估手段,以确定其是否与计划的结果保持一致,并使其得到改进
47.软件评审根据不同的评审阶段划分为哪几类?
- 需求评审
- 功能评审
- 质量评审
- 成本评审
- 维护评审
48.为什么说软件评审极为重要?(软件评审的意义)
软件评审可以组织项目组集体的力量,对软件相关内容进行合理分析,尽可能的在软件的生命前期发现并解决问题,所以说软件评审极为重要
章末小结
实现包括编码和测试两个阶段。
按照传统的软件工程方法学,编码是在对软件进行了总体设计和详细设计之后进行的,它只不过是把软件设计的结果翻译成用某种程序设计语言书写的程序,因此,程序的质量基本上取决于设计的质量。但是,编码使用的语言,特别是写程序的风格,也对程序质量有相当大的影响。
大量实践结果表明,高级程序设计语言较汇编语言有很多优点。因此,除非在非常必要的场合,一般不要使用汇编语言写程序。至于具体选用哪种高级程序设计语言,则不仅要考虑语言本身的特点,还应该考虑使用环境等一系列实际因素。
程序内部的良好文档资料,有规律的数据说明格式,简单清晰的语句构造和输入输出格式等,都对提高程序的可读性有很大作用,也在相当大的程度上改进了程序的可维护性。
目前软件测试仍然是保证软件可靠性的主要手段。测试阶段的根本任务是发现并改正软件中的错误。
软件测试是软件开发过程中最艰巨最繁重的任务,大型软件的测试应该分阶段地进行,通常至少分为单元测试、集成测试和验收测试3个基本阶段。
设计测试方案是测试阶段的关键技术问题,基本目标是选用最少量的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的问题。
应该认识到,软件测试不仅仅指利用计算机进行的测试,还包括人工进行的测试(例如,代码审查)。两种测试途径各有优缺点,互相补充,缺一不可。
白盒测试和黑盒测试是软件测试的两类基本方法,这两类方法各有所长,相互补充。通常,在测试过程的早期阶段主要使用白盒方法,而在测试过程的后期阶段主要使用黑盒方法。为了设计出有效的测试方案,软件工程师应该深人理解并坚持运用关于软件测试的基本准则。
设计白盒测试方案的技术主要有,逻辑覆盖和控制结构测试;设计黑盒测试方案的技术主要有等价划分、边界值分析和错误推测。
在测试过程中发现的软件错误必须及时改正,这就是调试的任务。为了改正错误,首先必须确定错误的准确位置,这是调试过程中最困难的工作,需要审慎周密的思考和推理。为了改正错误往往需要修正原来的设计,必须通盘考虑统筹兼顾,而不能“头疼医头、脚疼医脚”,应该尽量避免在调试过程中引进新错误。
测试和调试是软件测试阶段中的两个关系非常密切的过程,它们往往交替进行。
程序中潜藏的错误的数目,直接决定了软件的可靠性。通过测试可以估算出程序中剩余的错误数。根据测试和调试过程中已经发现和改正的错误数,可以估算软件的平均无故障时间;反之,根据要求达到的软件平均无故障时间,可以估算出应该改正的错误数,从而能够判断测试阶段何时可以结束。
下一章:软件工程——第8章维护知识点整理
反反复复,扎扎实实;念念不忘,必有回响!