今天是学习《软件测试》的第一天,由于刚开始的综述比较简单,就一次性把前三章看完了。主要包括软测背景/软件开发过程和软测实质三部分内容。
1.软件测试背景
-
通过几个比较有名的软件错误案例,如Intel奔腾浮点除法缺陷等,引出“软件缺陷”的概念。
-
在给出解释“软件缺陷”的概念前,先说明“产品说明书”的概念,即对开发的产品进行定义,给出产品细节、如何做、做什么、不能做什么。
-
软件缺陷的官方概念:
a.软件未实现产品说明书要求的功能;
b.软件出现产品说明书中指明不应该出现的错误;
c.软件实现了产品说明书中未提及的功能;
d.软件未实现产品说明书未明确提及但应该实现的功能;
e.软件难以理解、不易操作、运行缓慢或用户认为不好。 -
软件出现缺陷的第一来源是产品说明书,第二来源是设计。
-
软件修复成本:从开始到计划/设计/编程/测试,都会发现产品缺陷,但修复缺陷的成本确实随着时间的推移呈指数级增长的。
-
软件测试人员的目标:尽可能早地发现软件缺陷,并确保其得以修复。
2.软件开发过程
-
产品的组成:
用户需求、产品说明书软件设计文档(包括结构文档【软件整体设计】、数据流图、状态转换图、流程图【描述程序逻辑】、代码注释)测试文档(测试计划、测试用例、缺陷报告、测试工具和自动测试、度量统计和总结) -
产品开发的生命周期模式
1、大爆炸模式
描述:计划、进度安排和正规开发过程几乎没有,所以精力都放在开发软件和代码编写上。
优点:简单。
缺点:没有测试工作;若有也是在产品发布或交付前进行,测试的深入会发现缺陷很多,影响交付工作。2、边改边写模式
描述:只进行粗略的设想和简单的设计,就开始进入来回编写、测试和修复缺陷的过程。适合快速制作且用完就扔的项目。
3、瀑布模式
描述:从最初构思到最终产品要经过一系列步骤。每个步骤结束时都要组织审查,并决定是否能够进入下一步。
强调三点:强调产品定义;强调各步骤是独立的、不交叉的;无法回溯。
优点:每一步都有完整的说明,后期测试得以制作精确的计划和进度。
缺点:测试在最后,根本性问题未及时发现,知道准备发布时才发现,提高了修复成本。
3、螺旋模式
描述:一开始不必详细定义所以细节。从小开始,定义重要功能,努力实现这些功能,并接受用户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品。
每一次循环的步骤:确定目标、可选方案和限制条件。明确并化解风险。评估可选方案。当前阶段开发和测试工作。计划下一阶段工作/确定下一阶段的工作方法。
优点:发现问题早、成本低。测试人员可以参与设计工作,尽早地影响产品产,对产品的了解也更深刻。
测试的实质
1.测试原则:
- 完全测试是不可能的
- 测试有风险
- 测试无法显示潜伏的软件
- 缺陷发现的缺陷越多,说明软件的缺陷越多
- 杀虫剂怪事,即软件测试越多,对测试的免疫力越强
- 并不是所有的缺陷都需要修复(无需修复原因:时间不够;不算真正的缺陷;修复风险太大;不值得修复)
- 什么时候交缺陷难以说清
2.需要注意的几个测试术语:
- 准确和精确
- 确认(确保产品符合产品说明书)和验证(保证产品满足用户需求)
- 质量和可靠性(只是质量的一个方面)
- 测试(尽早找出缺陷并确保修复)和质量保证(主要职责是创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法)