part01 绪论
1 什么是软件测试
软件=程序+文档,软件测试!=程序测试。
软件测试以是否满足需求为目标。
定义:使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
Bug:缺陷、失效、错误
程序员犯了一个错误(mistake)
=》错误在软件中表现为缺陷(fault)
=》运行带有缺陷的软件对会出现故障(error)
=》运行有缺陷的软件能观察到失效(fail)
(啥狗屁玩意儿)
2 软件测试与软件质量保证(SQA)
软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
两者之间的干系
理论上,测试作为软件生命周期的一部分,其过程也受到SQA监督;
实际上,许多名义上的SQA做着测试的工作,许多测试人员做着部分SQA的工作。
充分的测试不能保障软件产品质量,软件测试是软件产品高质量的必要非充分条件。
质量评估模型
产品质量:McCall 模型, Boehm 模型, ISO 9126 模型
过程质量: 软件能力成熟度模型 CMM ( Capability Maturity Model),国际标准过程模型 ISO 9000,软件过程改进和能力决断 SPICE ( Software Process Improvement and Capability Etermination)
3 软件测试的基本原则
软件测试工程的目标:尽可能早地找出软件缺陷,确保其得以修复。
- Zero bug 与Good Enough
- 不可能执行穷尽测试
- 测试应该尽早启动,尽早介入
- 软件测试应该追溯需求
- 缺陷存在群集现象
- 缺陷具有免疫性(杀虫剂悖论)
- 不存在缺陷的理论、测试无法显示潜伏的软件缺陷
4 软件测试的分类
从方法角度看:黑盒测试、白盒测试;静态测试、动态测试
• 黑盒测试可能是动态的(运行程序,只看输入和输出),也可能是静态的(不运行程序,只查看界面)
• 白盒测试可能是动态的(运行程序,分析代码结构),也可能是静态的(不运行程序,静态查看代码)
从目标角度看:功能测试、强壮性测试、性能测试、适用性测试、安全性测试、可靠性测试
从阶段角度看:单元测试、集成测试、系统测试、验收测试
- 单元测试《详细设计》:一般和编码同步进行,主要采用白盒测试方法,设计测试用例(语句覆盖率达到100%,分支覆盖率达到85%),通常要编写驱动模块和桩模块。
- 集成测试《概要设计》:主要目标是发现与接口有关的模块之间问题,两种集成方式:一次性集成方式和渐增式集成方式。
- 系统测试《系统需求规格说明书》:主要由黑盒测试工程师进行,前期主测系统功能是否满足需求,后期主测系统运行性能是否满足需求,以及系统在不同的软硬件环境中的兼容性。
- 验收测试:验收测试的目的是向未来的用户表明系统能够像预定要求那样工作,验证软件的功能和性能如同用户所合理期待的那样。

- 回归测试:软件进行版本迭代时,重新执行上个版本的测试用例,可以在任何阶段进行。
- 冒烟测试:对西南本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现。
- 随机测试:所有的测试数据都是随机生成的。
5 软件测试的过程模型
V模型
需求分析= =》验收测试
规格说明= =》系统测试
概要设计= =》集成测试
详细设计= =》单元测试

局限性:测试是设计及编码之后的一个阶段,需求分析阶段隐藏的问题一直到后期的验收测试才被发现。
W模型

局限性:与V模型一样,软件开发和测试之间保持一种线性的前后关系,需要严格的质量,无法支持迭代、自发性以及变更调整。对于很多文档事后补充、或者根本没有文档的做法下,令人困惑。
H模型
软件测试是一个独立地流程,贯穿于整个生命周期,只要条件按成熟了就可以进行测试。

X模型
在自底向上的开发中,对于单独的程序片段要尽心分离的编码和测试,随后将代码单元组合集成,在集成的过程中启动探索性测试(未计划的特殊测试),最后将成品交付。

本文介绍了软件测试的基本概念,包括Bug的定义、软件测试与软件质量保证的关系,以及不同质量评估模型。同时,文章详细阐述了软件测试的原则,如不可能穷尽测试和测试应尽早启动,并探讨了多种测试分类,如黑盒测试、白盒测试、功能测试等。最后,文中对比了V模型、W模型、H模型和X模型的优缺点。
2279

被折叠的 条评论
为什么被折叠?



