【软件测试】第一章·软件测试概述
🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀软件测试与软件项目管理_十二月的猫的博客-CSDN博客💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光
目录
1. 前言
2. 导论
2.1 软件测试概述
2.2 为什么要进行软件测试
2.3 什么是软件测试
2.3.1 软件测试与程序测试
2.3.2 软件测试的目的
2.3.3 软件测试的定义
2.4 软件测试和质量保证的关系
2.5 软件测试和软件开发的关系
2.6 测试驱动开发的思想
2.6.1 TDD、UTDD和ATDD
3. 总结
1. 前言
考试前猫猫又开始更新考试科目了(也就是开始学了bushi)。本学期更新的科目有:
- 软件测试
- 软件项目管理
- 爬虫和Web数据管理
- 数据可视化
本系列【软件测试】将针对软件测试的基础知识进行拆分讲解,既是对自己学习的一次巩固也想为后面学习的猫友们提供一些帮助。如果大家有空可以点个免费的赞和收藏呀~~你的鼓励真的对猫猫很重要。
2. 导论
2.1 软件测试概述
系统地理解软件测试:
- 第一条路:质量——目标——方法——测试用例——缺陷【测试】
- 第二条路:质量——思想——管理——阶段——缺陷【管理测试】
- 第一条路目的:测试发现缺陷,处理缺陷。
- 第二条路目的:思想指导下,在软件开发的各个阶段有目的的安排/管理各种测试清除缺陷。
2.2 为什么要进行软件测试
为什么要做某事:某种特性/现象——》通过做某事能够缓解/解决某类现象。
- 软件总存在缺陷。
- 软件测试能够发现缺陷,保证软件质量。
- 软件存在缺陷会带来巨大损失。
- 软件测试提早发现缺陷,控制开发成本。
- 软件存在缺陷,导致软件不稳定。
- 软件测试能够提早更正软件,提高产品的可靠性。
2.3 什么是软件测试
2.3.1 软件测试与程序测试
软件测试 不等于 程序测试
- 软件不是可执行的程序。“需求、设计和代码”都是软件的一部分,对这三者的评审属于“静态测试”,平常理解的测试大多是对可执行程序的测试属于“动态测试”。
- 缺陷发现的越早,开发成本越低。
2.3.2 软件测试的目的
Bill Hetzel博士(证明为主):
- 软件测试就是为程序能够按预期设想那样运行而建立足够的信心。
-
“软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果”。
-
测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作。
Glenford J.Myers(破坏为主):
- 测试是为了证明程序有错,而不是证明程序无错误。
- 一个好的测试用例是在于它能发现至今未发现的错误。
- 一个成功的测试是发现了至今未发现的错误的测试。
《软件测试完全指南》(评估为主):
- 测试是以评价一个程序或系统属性为目标的一种活动,测试是对质量的度量。
- 测试不仅仅是一个发现错误的过程,而且包含对软件质量的评价内容。因此需要制定各类软件质量的标准。
- 提出VV&T理论:软件测试是由验证和确认组成的整体。 验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性;“确认”是确认所开发的软件是否满足用户真正需求的活动。
Rick的《系统的软件测试》(预防为主):
- 测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程。
- 测试和开发是并行的,用来预防缺陷的发生没提高软件质量。
现代的软件测试包含:正向思维、逆向思维
2.3.3 软件测试的定义
- 验证/确认软件的质量,并获得产品质量的全面、客观的信息。(正向思维)
- 发现问题,提高质量。在开发全过程中,持续性提供质量反馈,控制项目风险。(逆向思维)
正向思维:证明为主+评估为主
逆向思维:破坏为主+预防为主
2.4 软件测试和质量保证的关系
软件开发需要进行SQA,也就是软件质量保证活动。
软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
-
对软件工程各个阶段的进展、完成质量及出现的问题进行评审、跟踪。
-
审查和验证软件产品是否遵守适用的标准、规程和要求,并最终确保符合标准、满足要求。
-
建立软件质量要素的度量机制,了解各种指标的量化信息,向管理者提供可视信息。
软件测试与SQA的关系:
- SQA指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。
- 软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。
- SQA是一项管理工作,侧重于对流程的评审和监控。
- 测试是一项技术性的工作,侧重对产品进行评估和验证。
2.5 软件测试和软件开发的关系
测试不是开发的下一道工序!!!
瀑布模型的错误性:
真正的关系:
2.6 测试驱动开发的思想
TDD(test driven development):测试在前,开发在后
2.6.1 TDD、UTDD和ATDD
- TDD有广义、狭义之分;狭义上,TDD 指的是UTDD;广义上,TDD 包括UTDD、ATDD。
- 为了消除歧义,此处我们进行 统一术语(TDD采用广义说法)。所以,TDD可分为UTDD、ATDD两大分支;在代码层面,进行TDD(测试驱动开发),称为UTDD(单元测试驱动开发);在业务层面,进行TDD(测试驱动开发),则称为ATDD(验收测试驱动开发)。
- ATDD(验收测试驱动开发),由于验收方法和类型也是多种多样的。所以根据验收方法和类型的不同,将ATDD细分为BDD、EDD,FDD、CDCD等各种的实践方法。
3. 总结
本篇文章作为【软件测试】系列的第一篇文章,主要用来帮助大家先与软件测试认识一下,见个面~~~后续将一一带大家和软件测试成为好朋友!
如果想持续关注【软件测试】和【软件项目管理】系列文章,可以订阅:
- 软件测试与软件项目管理_十二月的猫的博客-CSDN博客
如果想学习计算机其他方面的核心知识(都是猫猫的优质好文哦),可以订阅:
- 计算机网络_十二月的猫的博客-CSDN博客
- 软件工程与面向对象_十二月的猫的博客-CSDN博客、
- 操作系统与数据库_十二月的猫的博客-CSDN博客
- 编译原理_十二月的猫的博客-CSDN博客
- 算法启示录_十二月的猫的博客-CSDN博客
如果觉得本文对你有帮助,友友们可以点个赞,收个藏呀~