一、学习目的与要求
本章对软件测试作了概括性的介绍,目的是使学生对软件测试有个初步的认识。通过本章的学习,应使学生掌握软件测试的基本概念,了解软件测试的发展历程和行业现状,掌握软件测试技术的分类,理解软件测试的目的和原则,掌握软件测试工作流程,理解软件开发与软件测试的关系。
二、考核知识点与考核目标
(一)软件测试的基本概念(重点)
- 识记:软件测试的定义
软件测试是一个在可控环境中执行软件的过程,目的是为了验证软件是否按预期运行
- 理解:软件测试生命周期
需求规格说明、设计、编码是引用错误程序阶段,测试发现错误阶段,缺陷分类、缺陷分离、缺陷排出是清除错误程序阶段
- 理解:软件开发与测试模型
软件开发与V模型
- 左边下降是开发过程各阶段,右边上升的是测试过程阶段
- 价值:明确的标明了测试过程中存在的不同级别,清楚的描述了测试阶段和开发过程期间的对应关系
- 适用于所有类型的开发过程,不一定适用于开发和测试过程的所有方面
软件开发与W模型
- 测试伴随着整个软件开发周期
- 测试对象包括需求、设计和程序
- 优点:每个软件开发活动结束后就可以执行相应的测试
软件开发与H模型
- 软件测试不仅指测试的执行,还有其他活动
- 软件测试是一个独立的过程,贯穿产品的整个开发周期,与其他流程并发进行
- 软件测试要尽早准备,尽早执行
- 软件测试根据被测物的不同分层次,不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的
(二)软件测试技术分类(重点)
- 理解:软件测试技术的分类
从执行被测软件角度分静态测试和动态测试
- 静态测试:不利于计算运行被测程序,而是通过其他手段达到测试目的的方法。
- 静态测试方法:代码检查和走查,以及桌面检查和同行评分。
从软件测试用例设计方法的角度分为黑盒测试和白盒测试
- 黑盒测试是从用户观点出发的测试,又称为功能测试、数据驱动测试、基于规格说明的测试。
- 白盒测试是基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各部分功能是否得到充分利用,又称为结构测试、逻辑驱动测试、基于程序测试。
按照软件测试的策略和过程可分为单元测试、集成测试、确认测试、系统测试、验收测试
- 单元测试是软件测试最小单位,使用白盒测试,用来发现内部测试。
- 集成测试检验与软件设计相关的程序结构问题,使用黑盒测试。
- 确认测试对开发工作初期制定的确认准则进行校验,使用黑盒测试。
- 系统测试检验被测软件与系统其他部分的协调性。
- 验收测试从用户角度出发。
(三)软件测试目的和原则(次重点)
- 理解:软件测试目的和原则
软件测试目的
①软件测试是为了发现错误而执行程序的过程。
②一个好的测试用例能够发现至今尚未发现的错误。
③一个成功的测试是发现了至今尚未发现的错误。
软件测试的目标定义为只是发现错误,原因是软件测试可以有两个目标,一个是预防错误,另一个是发现错误。由于软件开发是人的创造性劳动,人的活动不可能完美无缺,错误可能发生在任何一个阶段,因此预防错误这一目标几乎是不可实现的,所以软件测试的目标定义为只是发现错误。
软件测试原则
(1)测试不是为了证明程序的正确性,而是为了证明程序不能工作。
(2)测试应当有重点。
(3)事先定义好产品的质量标准。
(4)软件项目一启动,软件测试也就开始,而不是等到程序写完才开始进行测试。
(5)穷举测试是不可能的。
(6)第三方进行测试会更客观,更有效。
(7)软件测试计划是做好软件测试工作的前提。
(8)测试用例是设计出来的,不是写出来的。
(9)对发现错误较多的程序段,应进行更深入的测试。
(10)重视文档,妥善保存一切测试过程文档。
(四)软件测试工作流程(重点)
- 理解:软件测试工作流程
- 需求阶段是软件测试活动的前提
- 设计、编码和单元测试阶段是进行概要设计,形成集成测试方案,再进行详细设计
- 集成测试、系统测试、和验收测试阶段
(五)软件开发与软件测试的关系(一般)
- 理解:软件开发与软件测试的关系
软件测试是一个贯穿软件开发生命周期的活动,它可以是一个与开发并行的过程,也可以是在开发完成某个阶段任务之后的活动。
三、习题
- 软件测试的目的是______。
A. 避免软件开发中出现的错误
B. 发现软件中出现的错误
C. 容忍软件中出现的错误
D. 修改软件中出现的错误 - 以下关于软件测试原则的叙述中,不正确的是( )。
A. 测试用例不仅选用合理的输入数据,还要选择不合理的输入数据
B. 应制定测试计划并严格执行,排除随意性
C. 对发现错误较多的程序段,应进行更深入的测试
D. 程序员应尽量测试自己的程序 - 以下关于测试时机的叙述中,正确的是______。
A. 应该尽可能早的进行测试
B. 若能推迟暴露软件中的错误,则修复和改正错误所花费的代价就会降低
C. 应该在代码编写完成后开始测试
D. 需求分析和设计阶段不需要测试人员参与 - 软件测试的对象包括______。 ①软件代码 ②文档 ③数据
A.①②
B.①③
C.②③
D.①②③ - 什么是软件测试?简述其目的及原则。
- 软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期,对软件产品(包括阶段性产品)进行验证和确认的活动过程。
- 测试目的:
(1)证明:获取系统在可接受风险范围内可用的信心;尝试在非正常情况和条件下的功能和特性;保证一个工作产品是完整的并且可用或可被集成。
(2)检测:发现缺陷、错误和系统不足;定义系统的能力和局限性;提供组件、工作产品和系统的质量信息。
(3)预防:澄清系统的规格和性能;提供预防或减少可能制造错误的信息;在过程中尽早检测错误;确认问题和风险,并且提前确认解决这些问题和风险的途径。- 测试过程中应注意和遵循的原则:
(1)测试不是为了证明程序的正确性,而是为了证明程序不能工作。
(2)测试应当有重点。
(3)事先定义好产品的质量标准。
(4)软件项目一启动,软件测试也就开始,而不是等到程序写完才开始进行测试。
(5)穷举测试是不可能的。
(6)第三方进行测试会更客观,更有效。
(7)软件测试计划是做好软件测试工作的前提。
(8)测试用例是设计出来的,不是写出来的。
(9)对发现错误较多的程序段,应进行更深入的测试。
(10)重视文档,妥善保存一切测试过程文档。
- 软件测试阶段是如何划分的?
计划阶段:
- 编写测试计划;
- 编写进度表设计阶段:测试环境准备、设计测试用例;
- 执行阶段:执行测试用例、记录缺陷;
- 评审阶段编写测试报告
- 简述软件测试过程。
软件测试过程主要包括如下6个活动:
测试计划;
测试需求分析;
测试设计;
测试规程实现;
测试执行;
总结生成报告。
- “软件测试能够保证软件的质量”这句话对吗?软件测试和软件质量之间是什么关系?
不对。软件测试是保障软件质量的手段之一,但不是唯一手段。测试是产品高质量的必要非充分条件,软件测试不能决定软件质量。
- 简述软件开发进程与测试进程的关系。
软件测试是一个贯穿软件开发生命周期的活动,它可以是一个与开发并行的过程,也可以是在开发完成某个阶段任务之后的活动。
- 什么是回归测试?什么时候进行回归测试?
回归测试就是重新运行现有测试用例测试原有功能,以便确定变更是否达到了预期的目的,检查变更是否损害了原有的正常功能。每当软件发生变化时就应进行回归测试。