课程导入
各位同学,大家好!今天我们正式开启软件测试技术这门课程的学习,第一章作为入门章节,核心是让大家建立软件测试的基础认知,理解软件测试在软件开发全流程中的核心价值,掌握软件开发过程、软件质量保证、软件测试的基本概念与分类、工作流程以及测试人员的能力要求等核心内容。
软件测试是保障软件质量的关键环节,就像产品出厂前的质检,直接决定了软件交付给用户后的使用体验和安全性,无论是日常使用的APP、电商平台,还是工业级的软件系统,都离不开专业的软件测试工作。
接下来,我们将从软件开发过程出发,逐步深入软件测试的核心知识体系。
一、软件开发过程
前言
软件测试是软件开发过程的重要组成部分,想要做好测试工作,首先必须清晰认识软件开发的完整流程和主流的生命周期模型。
简单来说,
软件开发过程是项目组开发软件时遵循的一系列步骤,每个步骤都有明确的输入、输出和实施方法,而软件生命周期则在开发过程基础上,增加了运行与维护阶段,涵盖了软件从诞生到被淘汰的全过程,分为定义、计划、实现、稳定化、部署、运行与维护 6个核心阶段。
为了适配不同的项目规模、需求特性和开发场景,行业中形成了多种软件生命周期模型,接下来我们重点讲解四种主流模型,并结合实际案例分析其特点和适用场景。
1.1 瀑布模型
瀑布模型 是最经典的软件开发模型,将开发过程分为计划、需求分析、设计、编码、测试、运行维护6个阶段,自上而下、顺序衔接 ,下一个阶段的开始必须以上一个阶段的完成为前提,且每个阶段都需要产出规范的文档,是文档驱动的模型。
案例:传统的银行核心系统开发,需求相对固定、对安全性和规范性要求极高,开发过程中采用瀑布模型,先完成完整的需求分析和设计文档,经评审通过后再进行编码,编码完成后开展集中测试,全程文档留痕,便于后续的审计和维护。
优点:阶段划分清晰,文档规范,便于项目管理和追溯;
缺点:灵活性差,需求变更成本高,测试工作看似集中在后期,实际前期需求、设计阶段的测试准备工作已同步开展。
1.2 原型模型
原型模型 针对瀑布模型需求固化 的问题进行优化,核心是快速构建软件原型,让用户直观感受产品功能,通过用户反馈不断迭代修改原型,最终形成符合用户需求的正式产品。
案例:一款新型社交APP的开发,初期无法精准定义用户的交互需求和功能偏好 ,开发团队先搭建简易原型,包含核心的聊天、朋友圈功能,让部分种子用户试用并提出意见,根据反馈优化界面设计和功能逻辑,再进行正式开发。
优点:快速响应用户需求,降低需求理解偏差的风险;
缺点:原型迭代可能导致开发周期不可控,若原型设计不规范,易影响后续正式开发。
1.3 增量模型
增量模型 将软件产品拆分为多个独立的“增量模块”,分阶段开发和交付 ,每个阶段完成一个模块的设计、编码、测试,逐步构建完整的软件系统,后续增量模块的开发可基于已完成的模块进行。
案例:企业管理系统的开发,先开发核心的员工信息管理模块,测试通过后交付企业使用,再依次开发考勤管理、薪酬管理、绩效考核等模块,每个模块作为一个增量,持续迭代完善。
优点:可以提前交付部分功能,快速为用户创造价值,降低整体开发风险;
缺点:模块之间的接口设计要求高,若接口规划不合理,会增加后续集成的难度。
1.4 螺旋模型
螺旋模型 是融合了瀑布模型的结构化和原型模型的迭代性,同时引入风险分析的模型,将开发过程分为 制定计划、风险分析、实施工程、客户评价四个阶段,形成螺旋式的循环 ,每一次循环都会对产品进行一次迭代优化,风险分析是其核心环节。
案例:航空航天领域的嵌入式软件开发,项目投入大、技术难度高、风险系数大,采用螺旋模型,每一次循环都先分析技术风险、成本风险、进度风险,比如芯片兼容性、实时性要求等,针对风险制定应对方案后再进行工程实施,确保项目稳步推进。
优点:全程重视风险控制,适合大型、复杂、高风险的软件项目;
缺点:流程复杂,风险分析需要专业的团队,开发成本较高,周期较长。
核心要点
软件测试并非独立于软件开发过程,而是贯穿整个开发周期,即使是瀑布模型,测试人员在计划、需求分析阶段就需要参与需求评审、编写测试计划;在原型模型、增量模型中,测试工作会随模块/原型的迭代同步开展,及时发现问题并修复。
二、软件质量保证
前言
开发软件的核心目标是为用户提供有价值的产品,而软件质量是产品的核心竞争力,软件质量保证(SQA:Software Quality Assurance)则是保障软件质量的一系列规程和活动,是软件开发的重要支撑,也是软件测试的核心导向。
2.1 软件质量的定义
软件质量与传统产品质量的核心逻辑一致,本质是满足用户的需求 ,这是评判软件质量的首要标准。除此之外,优秀的软件质量还体现在: 👇
合理的进度、成本和功能关系;具备扩展性和灵活性,能适应需求变化;能有效处理例外情况;保持成本和性能的平衡。
需要注意的是,软件质量并非单指“无缺陷”,还需要兼顾功能和可靠性的平衡。
比如一款外卖APP,为了快速上线新增的“跑腿”功能,若少量非核心的界面瑕疵不影响用户使用,在可控范围内的小缺陷可接受,核心是功能能满足用户的跑腿需求,这也是质量的一种体现。
2.2 软件错误的定义
软件错误(通常称为Bug)是导致软件期望运行结果和实际结果出现差异的问题,包含故障、失效和缺陷三个层面,三者的逻辑关系为:人为的软件错误产生软件缺陷,缺陷被激活产生软件故障,故障未被处理导致软件失效。
案例:电商平台的结算功能,开发人员在编码时将“满减优惠”的计算逻辑写错(软件错误),导致系统中存在计算偏差的缺陷;当用户下单满足满减条件时,该缺陷被激活,出现结算金额计算错误的故障;若系统未对该故障做容错处理,最终导致用户支付金额错误,这就是软件失效,可能造成用户投诉和平台损失。
另外,Bug并非仅由代码问题引起,需求分析阶段的需求偏差、设计阶段的逻辑漏洞,都会导致软件错误的产生。
2.3 软件质量保证的核心内容
软件质量保证的核心是过程管理,通过对软件开发全流程的控制,预防缺陷的产生,而非仅在后期弥补。其主要活动包括:技术方法的应用、正式技术评审、软件测试、标准的执行、修改的控制、度量、记录和保存。
重要区分:软件质量保证≠软件测试。SQA聚焦过程质量,核心是缺陷预防;软件测试聚焦产品质量,核心是错误检测。SQA会通过评审测试结果、审核测试文档,监控测试工作的有效性,二者相辅相成,共同保障软件质量。
案例:某互联网公司开发一款理财APP,建立了完善的SQA体系:制定统一的开发和测试标准,每一个阶段完成后都进行技术评审;测试团队开展功能、安全、性能测试;对开发过程中的任何需求、代码修改都进行严格的流程控制;全程记录开发和测试数据,最终该APP上线后缺陷率远低于行业平均水平。
三、测试一个小软件——从实际案例理解测试核心思路
前言
为了让大家直观感受软件测试的工作内容,我们以软件登录界面这个经典的小模块为例,讲解测试的基本思路和方法。登录界面是几乎所有软件的基础模块,看似简单,却隐藏着诸多测试点,比如Microsoft Windows 2000就曾在登录界面出现过安全漏洞,足以见得基础模块测试的重要性。
3.1 登录界面的核心功能
包含用户名称、密码两个输入框,确认、取消两个按钮,核心功能为:
- 输入正确的用户名和密码,点击确认,登录成功并进入对应权限界面;
- 输入错误的用户名/密码,点击确认,提示“用户名或者密码错误”;
- 点击取消,清除输入框内容,光标定位到用户名输入框;
- 用户名/密码不能为空,否则给出对应空白提示。
3.2 测试的核心思路:设计测试用例,明确预期结果
软件测试并非随意操作,而是有计划、有设计的过程,核心是编写测试用例,测试用例需明确测试操作和预期结果,将实际操作结果与预期结果对比,不一致则说明存在软件错误。
以下是登录界面的核心测试用例设计:
| 测试人员操作 | 预期结果 |
|---|---|
| 输入正确管理员用户名+密码,点击确认 | 进入管理员操作界面,拥有管理员权限 |
| 输入正确普通用户用户名+密码,点击确认 | 进入普通用户操作界面,拥有普通用户权限 |
| 输入正确用户名+错误密码,点击确认 | 提示“用户名或者密码错误”,无法登录 |
| 输入错误用户名+正确密码,点击确认 | 提示“用户名或者密码错误”,无法登录 |
| 用户名为空,输入正确密码,点击确认 | 提示“用户名称空白”,无法登录 |
| 输入正确用户名,密码为空,点击确认 | 提示“密码空白”,无法登录 |
| 输入内容后,点击取消 | 清除输入框内容,光标定位到用户名输入框 |
3.3 核心启示
从这个小案例可以看出,软件测试的核心是覆盖所有核心功能点,考虑正常场景和异常场景,同时明确预期结果,这是后续所有软件测试工作的基础。无论是简单的模块还是复杂的系统,测试的基本思路都是一致的:基于需求设计测试用例,通过用例执行发现问题。
四、理解软件测试
前言
在实际案例的基础上,我们正式梳理软件测试的基本概念、核心功能、错误产生原因,以及测试人员的目标和主要工作,建立软件测试的核心认知。
4.1 基本概念
软件测试是为了发现程序中的错误而分析或执行程序的过程,具体是基于软件开发各阶段的规格说明和程序内部结构,设计测试用例,利用测试用例运行程序,发现程序错误的过程。
根据测试的实施方式,可分为静态测试和动态测试 ,二者互为补充:👇
- 静态测试:不实际运行软件,通过走查、代码审查、文档检查等方式分析软件,比如开发人员之间的代码互审Review,就能快速发现代码中的语法错误、逻辑漏洞;
- 动态测试:在目标环境中实际运行软件,通过输入测试数据,观察输出结果发现问题,比如我们测试登录界面的操作,就是典型的动态测试。
软件测试的两个核心功能:验证(Verification) 和确认(Validation)。
- 验证是保证软件正确地实现特定功能,关注开发过程的正确性,比如验证登录功能的代码是否符合设计要求;
- 确认是保证最终产品满足系统需求,关注产品的有效性,比如确认登录功能能满足用户的实际登录需求。
简单来说,验证是“做对的事”,确认是“把事做对”。
4.2 软件错误的产生原因
软件错误的产生是多阶段、多因素的,并非仅出现在编码阶段,主要原因包括:
- 需求分析阶段:对用户需求理解偏差、需求描述不清晰、需求遗漏;
- 设计阶段:系统架构设计不合理、模块接口设计有漏洞、逻辑设计错误;
- 编码阶段:程序员的语法错误、逻辑错误、代码规范问题;
- 项目管理阶段:进度安排不合理、沟通不畅、需求频繁变更。
核心规律:错误发现得越晚,修复成本越高 。需求阶段的错误若到编码完成后才发现,修复需要重新修改需求、设计和代码,成本是需求阶段修复的数十倍甚至上百倍 。⚠️
4.3 软件测试的核心原则
作为测试人员,必须牢记以下核心原则,这是开展测试工作的基本准则:
- 测试能提高软件质量,但提高质量不能依赖测试;
- 测试只能证明错误存在,不能证明错误不存在,彻底的测试难以实现,需考虑时间、成本限制;
- 82原则:80%的错误聚集在20%的模块中,经常出错的模块改错后仍易出错;
- 程序员应测试自己的程序,但不能作为程序通过测试的依据,需要独立的测试人员;
- 测试应当循序渐进,不可急于求成。
4.4 测试人员的目标和主要工作
4.4.1 核心目标
测试人员的核心目标并非单纯“找Bug”,而是尽可能早地找出软件错误,并确保其得以修复,具体包含三层含义:
- 基础目标:发现软件错误,这是测试工作的核心;
- 关键目标:尽早发现错误,降低修复成本;
- 最终目标:跟踪错误的处理结果,确保错误得以关闭(错误修复或经评估后确定不修复,均为关闭)。
开发人员和测试人员的最终目标一致——提升产品质量,只是工作重心不同:开发人员聚焦于“构建无缺陷的产品”,测试人员聚焦于“发现产品中的缺陷”。

4.4.2 主要工作
软件测试并非单纯的“执行测试”,而是一套完整的工作流程,核心工作包括:
- 规划测试任务,制定测试计划;
- 基于需求和设计,设计测试用例;
- 建立合适的测试执行环境;
- 评估、安装和配置自动测试工具;
- 执行测试,记录测试结果;
- 报告软件缺陷,跟踪缺陷处理过程;
- 撰写测试文档,输出测试报告。

五、软件测试的分类
前言
软件测试的分类方式多样,核心可从 测试是否关注软件结构、是否执行被测软件、测试的不同阶段 三个维度划分,同时还有基于测试目标的专项测试,接下来我们逐一讲解,理清各类测试的关系和应用场景。
5.1 按是否关注软件结构与算法划分:
黑盒测试 & 白盒测试 等软件测试最基础的分类方式,核心区别在于是否了解软件的内部结构和实现逻辑。
5.1.1 黑盒测试
也称为功能测试/数据驱动测试,不关心软件的内部结构和实现算法 ,仅将软件视为一个“黑盒子”,基于软件需求,测试软件的输入和输出是否符合要求。
案例:测试电商平台的商品搜索功能,测试人员只需输入不同的关键词(如商品名称、品类、品牌),观察搜索结果是否准确,无需了解搜索功能的代码逻辑和算法实现 ,这就是典型的黑盒测试。
适用场景:功能测试、性能测试、易用性测试、安全性测试等,主要应用于系统测试和验收测试阶段。
5.1.2 白盒测试
也称为结构测试/逻辑驱动测试,将软件视为一个“打开的盒子”,测试人员了解软件的内部结构、逻辑算法和代码实现 ,设计测试用例覆盖所有的逻辑路径,检查程序内部状态是否符合预期。
案例:测试一个计算“1-100求和”的函数,测试人员了解函数的循环逻辑和求和算法,设计测试用例覆盖循环的边界值(如1、100)、中间值(如50),检查函数内部的变量计算是否正确,这就是白盒测试。
适用场景:接口测试、路径测试等,主要应用于单元测试和集成测试阶段。
5.2 按是否执行被测软件划分:静态测试 & 动态测试
该分类在4.1节已初步讲解,核心区别在于是否实际运行软件,二者是测试的两种基本方式,通常先静态测试,后动态测试,静态测试快速发现表面问题,动态测试验证实际运行效果。
- 静态测试 :代码审查、文档走查、桌面检查,发现代码语法错误、文档不一致、需求描述漏洞等;
- 动态测试 :用例执行、压力测试、性能测试,发现软件运行中的功能错误、性能瓶颈、兼容性问题等。
5.3 按测试的不同阶段划分:单元测试→集成测试→系统测试→验收测试
这是软件测试的核心流程,遵循从小到大、循序渐进的原则,测试对象从单个模块逐步扩展到整个系统,测试人员也从开发人员逐步过渡到独立测试小组和用户。四个阶段的核心信息如下表:
| 测试阶段 | 核心测试对象 | 主要依据 | 测试人员 | 主要测试方式 | 核心目的 |
|---|---|---|---|---|---|
| 单元测试 | 软件的单个模块/单元 | 系统设计文档 | 开发人员 | 白盒测试 | 验证单个模块的功能和逻辑是否符合设计要求 |
| 集成测试 | 多个集成的模块/子系统 | 系统设计文档+软件需求 | 开发人员 | 白盒+黑盒测试 | 验证模块之间的接口和集成后的功能是否正常 |
| 系统测试 | 整个软件系统 | 软件需求 | 独立测试小组 | 黑盒测试 | 验证整个系统是否符合所有需求(功能+非功能) |
| 验收测试 | 整个软件系统 | 软件需求 | 用户/客户 | 黑盒测试 | 验证系统是否满足用户的实际使用需求,决定是否接收产品 |
关键补充
- 单元测试:模块通常无法独立运行,需要开发测试驱动程序调用模块接口,测试人员需了解模块的详细设计,一般由开发人员自行测试或同伴互测;
- 集成测试:即使单个模块都通过测试,集成后仍可能出现接口数据传输错误、功能联动失效等问题,因此集成测试是必要的,集成方式主要有自顶向下和自底向上两种;
- 系统测试:需在真实的目标环境中开展,测试内容涵盖功能、性能、安全性、健壮性、兼容性等,是保障软件质量的核心环节;
- 验收测试:分为Alpha测试(用户到开发方场地测试,环境受开发方控制)和Beta测试(在用户场地测试,环境不受开发方控制),通用软件产品一般需要大规模的Beta测试,通过后才可正式发行。
5.4 基于测试目标的专项测试
除了上述基础分类,实际工作中会根据测试的具体目标开展专项测试,核心的专项测试包括:
- 功能测试:测试软件功能是否符合需求,最基础的专项测试,采用黑盒测试;
- 性能测试:获取软件的性能指标(如响应时间、并发量、吞吐量),验证是否满足性能需求;
- 负载/压力测试:负载测试通过增加负载发现性能问题,压力测试是高负载下的稳定性测试,比如测试电商平台双11的并发承载能力;
- 易用性测试:测试软件的操作是否便捷、界面是否友好,主观性较强,需结合用户反馈;
- 安全性测试:测试软件防止非法侵入的能力,比如电商平台的用户信息防泄露、支付安全测试;
- 兼容性测试:测试软件与不同操作系统、浏览器、硬件的兼容能力,比如APP在安卓和iOS系统的适配测试;
- 回归测试:软件错误修复后或功能、环境变更后,重新进行测试,验证修改是否引入新的错误。
5.5 各类测试分类之间的关系
不同的分类方式并非相互独立,而是相互关联、相互融合,不同的测试阶段适合采用不同的测试方式和专项测试。核心规律为:
- 单元测试 :以白盒测试、静态测试为主,侧重接口测试、路径测试;
- 集成测试 :白盒+黑盒测试结合,静态+动态测试结合,侧重接口测试、功能测试、性能测试;
- 系统测试和验收测试 :以黑盒测试、动态测试为主,覆盖所有专项测试内容。
六、软件测试工作流程
前言
软件测试是一项规范化的工程活动,有清晰、固定的工作流程,核心分为测试计划、测试设计与开发、执行测试三个基本步骤,同时伴随测试信息流的传递,确保测试工作的有序开展。
6.1 测试工作的主要步骤
6.1.1 测试计划
测试人员首先分析软件需求,定义测试范围和测试集合,会同项目主管制定并确认测试计划,明确测试目标、测试范围、测试资源、测试进度、测试风险及应对方案,这是测试工作的指导文件。
6.1.2 测试设计与开发
基于软件需求和设计说明书,完成测试用例设计,这是测试工作的核心;同时根据测试需要,编写测试驱动程序、测试脚本,配置测试工具,为测试执行做准备。
6.1.3 执行测试
- 建立符合要求的测试环境,模拟用户的实际使用场景;
- 按照测试计划和测试用例执行测试,记录测试结果;
- 发现软件缺陷后,及时报告缺陷,包含缺陷描述、重现步骤、测试环境等信息;
- 跟踪缺陷的处理过程,直到缺陷关闭;
- 分析测试结果,输出测试报告,总结测试发现的问题、软件的质量情况、测试的覆盖度等。
6.2 测试信息流
测试工作的开展伴随各类信息的输入、处理和输出,核心的三类输入为:
- 软件配置:软件需求规格说明、设计规格说明、源代码、文档等;
- 测试配置:测试计划、测试用例、测试驱动程序等;
- 测试工具:测试数据自动生成程序、性能测试工具、缺陷跟踪工具等,用于提高测试效率。
测试的核心处理过程:执行测试→对比实际结果与预期结果→发现错误→排错(开发人员)→修改软件→回归测试。
测试的输出:测试报告、缺陷报告、修改后的软件、软件质量评估结果等。
核心要点
软件测试的开销可占整个软件开发进度的一半,实际项目中不能因开发进度拖延而压缩测试时间,否则会导致软件缺陷遗漏,影响产品质量。同时,单元测试和集成测试一般由开发人员完成,系统测试是独立测试小组的核心工作,也是我们后续学习的重点。
七、测试人员的能力要求和职业前景
前言
软件测试工作的质量,核心取决于测试人员的专业素养和能力,很多人认为软件测试是“简单的工作,无需专业知识”,这是典型的误区。实际上,软件测试需要扎实的技术功底和综合素养,且随着软件行业对质量的重视,测试人员的职业前景十分广阔。

7.1 测试工程师的职业素质要求
优秀的测试工程师需要具备8大核心素质,这是开展测试工作的基础:
- 责任心:测试工作繁琐,需要有强烈的责任心,不遗漏任何潜在的缺陷;
- 学习能力:既要学习测试技术,也要学习项目的业务知识,成为“技术+业务”的复合型人才;
- 怀疑精神:对产品的每一个功能都保持怀疑,不轻易认为“某部分不会有问题”;
- 沟通能力:需要与开发人员、产品人员、用户高效沟通,清晰描述缺陷问题,推动问题解决;
- 专注力:面对枯燥的测试工作,保持耐心,专注于发现隐藏的、随机出现的缺陷;
- 洞察力:能敏锐捕捉产品的缺陷,这源于经验的积累和逻辑思维能力;
- 团队精神:软件测试是团队工作,需要与测试同伴、开发团队协作,共同完成质量保障工作;
- 注重积累:软件测试是工程学科,需要在实际工作中不断积累测试经验、总结测试方法。
此外,Bill Hetzel在《The Complete Guide to Software Testing》中提出的5C特征,也是优秀测试专家的核心标志:Controlled(有条理)、Competent(懂测试技术)、Critical(专注找问题)、Comprehensive(注重细节)、Considerate(善于沟通)。
7.2 测试工程师的职业前景
在软件行业高质量发展的背景下,软件测试工程师成为不可或缺的核心岗位,其职业前景的核心支撑在于:该岗位在软件开发中不可或缺、面临持续的技术挑战、需要不断学习新的知识和技术,与软件设计、编码岗位具有同等的技术价值。
7.2.1 测试工程师的技术能力要求
成为一名优秀的测试工程师,需要掌握:
- 特定行业领域的业务知识(如金融、医疗、电商);
- 全面的测试技术(黑盒/白盒测试、自动化测试、性能测试等);
- 对软件开发过程的深入理解;
- 测试工具的使用和开发能力(如Jmeter、Selenium、Postman或Apifox等)。

7.2.2 测试工程师的职业等级划分
测试工程师的职业发展呈阶梯式,不同等级的工作内容和能力要求不同:
- 初级测试工程师:按照测试方案搭建测试环境,执行测试用例,发现并提交缺陷报告,核心是掌握基础的测试操作;
- 中级测试工程师:能独立编写测试计划、测试用例,合理使用测试工具,参与测试流程的制定,核心是掌握测试设计能力;
- 高级测试工程师:掌握测试与开发技术,能独立设计测试框架,开发自动化测试脚本,对行业和产品有深入理解,能分析和评估测试风险,核心是掌握测试架构和整体把控能力。
7.2.3 职业发展方向
测试工程师的职业发展路径十分广阔,主要包括:
- 技术路线:初级测试工程师→中级测试工程师→高级测试工程师→测试架构师→技术专家;
- 管理路线:测试工程师→测试组长→测试经理→项目质量经理→研发总监;
- 跨界路线:转向产品经理、运维工程师、开发工程师等岗位,依托测试工作积累的产品和技术认知,实现跨界发展。
八、本章总结
前言
本章作为软件测试技术的入门内容,核心是让大家建立软件测试的基础认知体系,我们从软件开发过程出发,讲解了瀑布模型、原型模型、增量模型、螺旋模型四种主流生命周期模型,明确了测试贯穿软件开发全周期的核心观点;随后讲解了软件质量保证的核心内容,区分了软件质量保证和软件测试的差异;通过登录界面的实际案例,直观感受了软件测试的基本思路;在此基础上,梳理了软件测试的基本概念、核心原则和测试人员的工作目标;详细讲解了软件测试的多维度分类,尤其是按测试阶段划分的单元、集成、系统、验收测试的核心内容;最后介绍了软件测试的规范化工作流程和测试人员的能力要求、职业前景。
核心要点回顾:
- 软件测试是软件开发的重要组成部分,核心目标是尽早发现并确保修复软件错误,保障软件质量;
- 软件测试的分类多样,不同分类方式相互融合,不同测试阶段适合采用不同的测试方式;
- 软件测试工作流程规范化,分为测试计划、测试设计与开发、执行测试三个核心步骤;
- 软件测试工程师需要具备扎实的技术素养和综合能力,职业前景广阔,并非“简单的体力劳动”。
关键术语:
结合章节核心内容,梳理出软件开发、软件质量、软件测试三大核心板块的关键术语,涵盖概念、分类、流程、人员要求等维度,均为章节重点核心词汇:
一、软件开发相关
- 软件开发过程:项目组开发软件遵循的一系列有明确输入、输出和实施方法的步骤。
2.软件生命周期 :软件从诞生到被停止使用的完整周期,包含定义、计划、实现、稳定化、部署、运行与维护6个阶段。 - 瀑布模型:经典的软件开发模型,分计划、需求分析、设计、编码、测试、运行维护6个阶段,自上而下顺序衔接、文档驱动。
- 原型模型:快速构建软件原型,通过用户反馈迭代修改,最终形成正式产品的开发模型。
- 增量模型:将软件拆分为多个增量模块,分阶段开发、测试和交付的开发模型。
- 螺旋模型:融合结构化和迭代性,引入核心风险分析环节,螺旋式循环迭代的开发模型。
二、软件质量保证相关
- 软件质量 :软件满足用户需求的核心特性,还包括合理的进度成本功能关系、扩展性、容错性、成本性能平衡等。
- 软件错误(Bug):导致软件期望运行结果和实际结果出现差异的问题,含故障、失效、缺陷。
- 软件故障:软件运行过程中出现的不希望/不可接受的内部状态。
- 软件失效:软件运行时产生的不可接受的外部行为结果。
- 软件缺陷:存在于软件中的不希望/不可接受的偏差,由人为软件错误产生。
- 软件质量保证(SQA) :为确保软件开发过程和结果符合预期,建立的规程及开展的活动、结果评价,核心是过程管理、缺陷预防。
三、软件测试核心概念
- 软件测试:为发现程序错误而分析或执行程序的过程,通过设计测试用例运行程序,发现程序错误。
- 静态测试:不实际运行软件,通过走查、代码审查、文档检查等分析软件的测试方式。
- 动态测试:在目标环境中实际运行软件,通过输入测试数据、观察输出结果发现问题的测试方式。
- 验证(Verification):保证软件正确实现特定功能的一系列活动,关注开发过程的正确性,即“做对的事”。
- 确认(Validation):保证最终产品满足系统需求的一系列活动,关注产品的有效性,即“把事做对”。
- 测试用例:为开展测试设计的,包含测试操作和预期结果的标准化测试文档,是测试执行的核心依据。
- 80-20原则:软件测试中的经典规律,指80%的错误聚集在20%的模块中,常出错的模块改错后仍易出错。
四、软件测试分类相关
- 黑盒测试 (功能测试/数据驱动测试):不关心软件内部结构和实现,基于软件需求测试输入输出的测试方式。
- 白盒测试(结构测试/逻辑驱动测试):了解软件内部结构和算法,设计用例覆盖逻辑路径的测试方式。
- 单元测试:对软件单个模块/单元进行的测试,验证其功能和逻辑符合设计要求,以白盒测试为主。
- 集成测试:对多个集成的模块/子系统进行的测试,验证模块间接口和集成后功能,白盒+黑盒测试结合。
- 系统测试:对整个软件系统的测试,验证其符合所有功能和非功能需求,由独立测试小组执行,以黑盒测试为主。
- 验收测试:由用户/客户执行的测试,验证系统满足实际使用需求,分Alpha测试和Beta测试。
- Alpha测试:用户到开发方场地进行的验收测试,环境由开发方控制。
- Beta测试:在用户场地进行的验收测试,环境不受开发方控制,适合通用软件大规模测试。
- 功能测试:测试软件功能是否符合功能性需求的专项测试,以黑盒测试为主。
- 性能测试:为获取或验证系统性能指标而开展的专项测试。
- 负载测试:通过改变负载方式、增加负载发现系统性能问题的专项测试。
- 压力测试:高负载下测试系统稳定性,发现峰值负载下功能隐患的专项测试(属于负载测试)。
- 健壮性测试(容错性测试):测试系统出现故障时能否自动恢复或忽略故障继续运行的专项测试。
- 安全性测试:测试系统防止非法侵入能力的专项测试。
- 兼容性测试:测试系统与其他软件、硬件兼容能力的专项测试。
- 回归测试:软件错误修复后或功能、环境变更后,进行的重新测试,验证修改是否引入新错误。
- 文档测试:测试软件配套使用手册、说明书等文档与实际产品的一致性、清晰性的专项测试。
- 接口测试:测试软件内外部接口数据交换、传递和控制管理过程的专项测试。
五、软件测试流程相关
- 测试计划:测试前分析需求,定义测试范围、目标、资源、进度等的指导性文档。
- 测试设计与开发:基于需求和设计文档,完成测试用例设计、编写测试驱动程序的阶段。
- 执行测试:建立测试环境,按测试计划和用例运行测试、记录结果、报告并跟踪缺陷的阶段。
- 测试信息流:测试过程中的信息输入、处理和输出过程,核心输入为软件配置、测试配置、测试工具。
- 软件配置:测试的输入信息之一,含软件需求规格说明、设计规格说明、源代码等。
- 测试配置:测试的输入信息之一,含测试计划、测试用例、测试驱动程序等。
- 测试工具:辅助开展测试、提高测试效率的工具,如测试数据自动生成程序、性能测试工具等。
- 缺陷跟踪:测试人员对发现的软件缺陷进行记录、跟进,直至缺陷关闭的全过程。
- 缺陷关闭:软件缺陷被修复,或经评估后确定不修复,缺陷的处理流程正式结束。
六、测试人员能力与职业相关
- 5C特征:优秀测试专家的核心特征,包括Controlled(有条理)、Competent(懂测试技术)、Critical(专注找问题)、Comprehensive(注重细节)、Considerate(善于沟通)。
- 初级测试工程师:测试职业入门等级,主要工作为搭建测试环境、执行测试用例、提交缺陷报告。
- 中级测试工程师:测试职业中级等级,能独立编写测试计划和用例、使用测试工具、制定测试进度。
- 高级测试工程师:测试职业高级等级,掌握测试与开发技术,能设计测试框架、分析评估测试风险、理解行业业务。
