文章目录
- 1 软件测试基础
- 1. 1 软件和软件开发过程模型
- 1.1.1 线性顺序模型
- 1.1.2 原型实现模型
- 1.1.3 螺旋模型
- 1.2 软件测试概述
- 1.2.1 软件测试的定义
- 1.2.2 软件缺陷的定义
- 1.2.3 软件测试的分类
- 1.3 软件测试过程模型
- 1.3.1 V模型
- 1.3.2 W模型
- 1.3.3 H模型
- 1.4 软件测试的原则与误区
- 1.4.1 软件测试的原则
- 1.4.2 软件测试的误区
1 软件测试基础
1. 1 软件和软件开发过程模型
1.1.1 线性顺序模型
线性顺序模型包含以下活动:问题定义、需求分析、软件设计、编码、测试、运行和维护。
特点:自上而下、互相衔接,如同瀑布流水,逐级下落,体现了不可逆转性。
缺点:
- 实际项目很少按照该模型给出的顺序进行;
- 客户常常难以清楚地给出所有需求;
- 客户必须有耐性;
- 过分依赖早期进行地需求调查,不能适应需求变化;
1.1.2 原型实现模型
主要价值:可视化、强调沟通、降低风险、节省后期变更成本、提高项目成功率。
原型的类型:
- 抛弃型或丢弃型
- 演化型或追加型
优点:
- 任何功能一经开发就能进入测试,以便验证是否符合产品需求;
- 帮助导出高质量的产品需求;
- 风险管理较少;
- 有助于在早期建立产品开发的配置管理、产品构建、自动化测试、缺陷跟踪、文档管理,均衡整个开发过程的负担;
- 开发中的教训可以反馈到下一次循环过程,提高产品质量以及工作效率;
- …
缺点:
- 如果在一开始没有彻底了解所有的产品需求,则会给整体设计带来困难并削弱产品设计的完整性,最终影响产品性能的优化及产品的可维护性;
- 如果缺乏严格的过程管理,则会变为原始的“实验-出错-改正”;
- …
1.1.3 螺旋模型
螺旋模型由四个阶段组成:制定计划、风险分析、实施工程和客户评估。
优点:
- 强调严格的全过程风险管理;
- 强调各开发阶段的质量;
- 提供机会检讨项目是否有价值继续下去;
1.2 软件测试概述
1.2.1 软件测试的定义
1983年IEEE提出的软件工程标准术语中给软件测试下的定义是:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验他是否满足规定的需求或是否弄清预期结果与实际结果的差别。
1.2.2 软件缺陷的定义
定义:计算机软件或程序中存在某些破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。
软件缺陷的级别:
- 微小的(Minor)
- 一般的(Major)
- 严重的(Critical)
- 致命的(Fatal)
软件缺陷的状态:
- 激活状态(Open)
- 已修正状态(Fixed)
- 关闭状态(Close)
1.2.3 软件测试的分类
按照开发状态划分:
- 单元测试
- 集成测试
- 系统测试
- 验收测试
按照测试技术划分:
- 白盒测试
- 黑盒测试
- 灰盒测试
按照被测软件是否实际运行划分:
- 静态测试
- 动态测试
按照测试实施组织划分:
- 开发方测试(
测试)
- 用户测试(
测试)
- 第三方测试
1.3 软件测试过程模型
1.3.1 V模型
V模型的缺陷在于仅仅把测试过程作为在编码后的一个阶段,忽略了测试对需求分析、系统设计的验证,因此需求阶段的缺陷很可能一直到后期的验收测试才被发现,此时进行弥补将耗费大量的人力物力。
图片参考【软件测试】V模型和W模型
1.3.2 W模型
相较于V模型,W模型增加了软件各开发阶段中应同步的进行验证和确认活动,W模型由两个V模型组成,分别代表测试与开发过程,图中明确表明了测试与开发的并行关系。W模型局限性:需求、设计、编码等活动被视为串行的,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可开始下一阶段工作。
图片参考【软件测试】V模型和W模型
1.3.3 H模型
软件测试是一个独立的流程,以独立完整“微循环”流程,参与产品生命周期的各个阶段,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行,只要某个测试达到准备就绪点,测试执行活动就可以开展,并且不同的测试活动可按照某个次序先后进行,但也可以是反复进行的。
1.4 软件测试的原则与误区
1.4.1 软件测试的原则
- 完全测试程序试不可能的
- 软件测试是有风险的行为
对软件不能完全测试,而不测试又会漏掉软件缺陷,且测试工作量越大,测试费用开支就会越大,因此每个软件项目都有一个最优测试量。
- 测试无法显示潜伏的软件缺陷
- 软件缺陷的群集现象
- 杀虫剂怪事
软件工程师必须不断尝试新的测试方法和角度,以期找出更多的软件缺陷。
- 并非所有的软件缺陷都能被修复
不能修复的原因:
- 没有足够的时间
- 不算真正的软件缺陷
- 修复的风险太大
- 难以描述的软件缺陷
1.4.2 软件测试的误区
这是书本上的内容,不是我瞎编的…
- 软件开发完成后进行软件测试;
- 软件自动测试效率高,将取代软件手工测试;
- 软件测试是测试人员的事情,与程序员无关;
- 软件测试是没有前途的工作,只有程序员才是软件高手;