软件测试学习笔记01——软件测试概述
1、软件发展历史:
- 第一阶段:程序设计阶段:没有软件的概念,编程人员与使用人员是同一个人
- 第二阶段:程序系统阶段:软件的概念出现,出现了软件作坊,软件危机产生
- 第三阶段:软件工程阶段:软件工程学科发展,趋于成熟。
2、软件工程定义:
1983年,IEEE的定义:软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件。即把工程化应用到软件上。
软件测试的定义:
- 狭义上:就是找出软件中存在的缺陷(bug)。
- IEEE给出的定义:软件测试是使用人工或自动的手段来运行或测试某个系统的过程,期目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。
- 《软件测试技术基础》-- 软件测试是为了尽快尽早的发现在软件产品中所存在的各种缺陷而展开的贯穿整个软件开发的生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程。
3、软件测试的对象:
软件 = 文档 + 数据 + 程序
4、软件测试文档:
阶段性文档:
- 需求规格说明书
- 概要设计规格说明书
- 详细设计规格说明书
最终产品文档:
- 用户手册
- 帮助文档
5、软件测试的目的:
- 发现软件系统的错误
- 验证软件系统是否满足需求
- 为产品放行提供依据
- 改进开发流程
6、软件测试生命周期
软件测试贯穿整个软件开发生命周期。
7、软件质量
- 软件质量是软件的生命,他直接影响软件的使用和维护。
- 软件质量是一些质量特性的组合,反应了软件满足用户需求的程度(包括规定/隐含的需求)。
软件质量由以下几个方面进行评价:
- 软件需求是衡量软件质量的基础,不符合需求的软件就不具备质量。设计的软件应在性能、功能等方面都符合要求,并能可靠的运行。
- 软件结构良好,易读,易于理解,并易于修改、维护。
- 软件系统具有友好的用户界面,便于用户使用。
- 软件生存周期中各文档齐全、规范,便于配置、管理。
8、QC和QA
SQC:软件测试人员 (Quality Control)
SQA:软件质量保证人员 (Quality Assurance)
9、软件质量模型
- McCall模型:
- Boehm模型:
- ISO-9126模型:内部质量:从内部观点出发
软件质量模型的作用:
软件的质量特性(质量因素)有很多,软件质量模型可以区分质量因素对软件质量的影响程度。
- 外部质量:从外部观点出发,在模拟环境中用模拟数据测试
- 使用质量:从用户观点出发
10、软件测试分类
1、按阶段划分:
单元测试:
对软件设计的最小单位--模块进行正确性检验,目的主要是测试模块在语法、格式和逻辑上的错误。
集成测试:
也称组装测试,按设计要求把通过单元测试的各个模块组装在一起进行的测试。目的是检查模块接口间的关系,以便发现与接口有关的各种错误。
系统测试:
将已经集成好的软件系统置于实际运行环境中进行的测试。目的是根据需求分析时确定的标准检验软件是否满足功能、行为、性能和系统协调性等方面的要求。
验收测试:
是软件开发结束后,软件投入使用前,用户对软件进行的最后一次质量检验活动。目的是检验软件功能的正确性和需求的符合性。
2、按测试方式划分(是否运行程序):
静态测试:
静态测试:不运行程序。
动态测试:
动态测试:运行程序。
3、按测试技术划分(是否查看源代码):
黑盒测试:
也称为功能测试或数据驱动测试,在程序接口进行测试,只是检查程序功能是否按照规格说明书的规定正常使用。
白盒测试:
也成为结构测试或逻辑驱动测试,要完全了解程序结构和处理过程,按照程序内部逻辑测试程序,检查程序中每条通路是否按预定要求正确工作。
灰盒测试:
介于黑盒测试和白盒测试之间
4、按测试实施组织:(P77)
开发方测试:
也称内部测试
用户方测试:
在用户的运行环境中,由用户进行测试
第三方测试:
又称独立测试
5、按软件质量特性分类:
- 功能测试
- 性能测试
- 压力测试
- 安全测试
- 兼容性测试
- 可靠性测试
- 安装测试
- 用户界面测试
11、软件测试三个重要概念
- 测试用例:是一组测试输入、执行条件和预期结果的集合。
- 软件测试环境:就是软件运行的平台,即软件、硬件、网络和数据的集合。
- 软件缺陷:是指存在于软件之中的不希望出现或不可接受的偏差。
12、软件危机具体表现
- 软件开发进度难以控制
- 软件开发初期需求不明确,矛盾在后期集中暴露
- 测试不充分,软件质量低下
13、软件测试经济学(经验)
- 完全测试时不可能的
原因:软件太复杂、条件不允许、“杀虫剂现象” - 不能修复所有的软件缺陷
原因:没有足够的资源、修复风险大、不值得修复
14、软件测试的原则
- 所有的软件测试都应该追溯到用户需求
- 尽早地、不断地进行测试
- 程序员应该避免测试自己的程序
- 严格执行测试计划
- 注重测试用例的设计
- 增量测试、由小到大
- 注意集群现象(二八定理)
- 完全测试时不可能的
- 测试维护
15、缺陷关联:
什么是缺陷关联?
缺陷关联:是一种现象,某个缺陷会因为其他的缺陷而出现或消失。
16、软件测试流程
- 需求分析
- 测试计划
- 用例设计
- 执行测试用例
- 缺陷管理(记录跟踪bug)
- 出具测试报告