跳转至
内容字体
东观体
上图东观体
OPPO Sans
江城黑体
霞鹜臻楷
代码字体
DejaVu Sans Mono
DejaVu Sans Mono
Google Sans Code
JetBrains Mono
主题切换
返回顶部

软件测试相关概念

约 1853 个字 预计阅读时间 6 分钟

何为测试

软件测试是指在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程

测试的核心要素:

  • 验证性:验证软件是否按照需求规格说明书正确实现
  • 确认性:确认软件是否满足用户的实际需要
  • 发现缺陷:通过执行程序发现其中的错误和缺陷
  • 质量评估:评估软件产品的质量水平

测试的本质:测试是一个过程,为了发现错误而执行程序的过程。测试包括静态测试(不执行代码)和动态测试(执行代码)

为什么需要测试

软件测试在软件开发生命周期中具有至关重要的作用,主要原因包括:

  1. 发现和预防缺陷
  2. 保证软件质量
  3. 降低风险
  4. 建立信心
  5. 经济效益
  6. 法律和合规要求

软件测试是验证软件产品特性是否满⾜⽤⼾的需求,其不仅仅是发现错误的手段,更是保证软件质量、降低风险、提升用户满意度的重要过程。在现代软件开发中,测试已经成为不可或缺的环节,贯穿于整个软件开发生命周期

测试岗位的分类

测试岗位一般分为两类:

  1. 测试开发工程师:工作重心为可测试性以及通用测试基础框架。编写单元测试框架和自动化测试框架。软件测试开发⼯程师关注质量提升和测试覆盖率,一般还会开发一些用于测试的工具
  2. 测试工程师:与软件测试开发工程师关系密切,但把用户放在第一位来思考。测试工程师组织整体测试实践,并进行分析总结,驱动测试执行,构建端到端的自动化测试

测试开发工程师与测试工程师的区别:

相同点:

  1. 都统称为测试人员
  2. 对产品质量负责,保障产品的质量

不同点:测试开发比测试多「开发」二字,而这个开发并不是指业务开发,因为业务开发是开发人员的主要职责,这里的开发指的是需要开发测试效率工具,通过效率工具来提升测试效率和测试质量,比如自动化、性能测试等就属于效率工具

调试和测试的区别

测试经常会进行测试动作,而开发人员进行调试动作,二者对比如下:

调试 测试
目的 调试的任务是定位并且解决程序中的问题 测试的任务是发现程序中的缺陷
参与角色 主要由开发人员完成 测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行
执行阶段 开发/编码阶段 测试贯穿整个软件开发生命周期,并不局限于测试阶段
为什么测试岗位还需要学习开发的知识
  1. 测试人员也需要编写代码,如自动化测试、性能测试、开发测试效率工具等。测试人员需要能够看懂代码、了解开发框架
  2. 学好开发知识能够提高软件测试质量。通过查看代码中数据的走向能够更好的从代码层面去发现问题
为什么不走开发,走测试

回答思路:从岗位工作性质分析+个人性格/爱好+个人职业规划三个方面阐述。例如下面的示例:

  1. 个人兴趣爱好:从性格和兴趣出发,测试工作需要测试人员具备良好的耐心、细心,接触了测试内容后对测试工作产生浓厚兴趣
  2. 岗位性质:不管是测试还是测试开发都统称为测试人员,测试人员主要以保障项目测试质量为主,通过开发一些测试效率工具来提高测试效率。而软件开发主要以业务编码为主
  3. 个人职业规划:大学期间就树立了走测试方向的目标,今后将继续提高测试和开发能力,争取在测试领域做出一番有影响力的事务

何为需求

软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。它是软件开发和测试的基础,描述了软件系统应该做什么以及如何做。需求一般分为两种:

  1. 用户需求:用户对软件系统的原始期望和要求
  2. 软件需求:经过分析和处理后的技术性需求

二者的关系是:产品经理根据用户需求进行需求分析判断用户需求的技术可行性、市场可行性、成本投入、收益占比等方面是否有效后得到软件需求(一般是以需求文档形式呈现)

何为开发模型

开发模型(Software Development Model)是指软件开发过程中采用的工作流程和方法论,它定义了软件开发各个阶段的顺序、活动内容以及各阶段之间的关系

软件生命周期

软件的生命周期(Software Development Life Cycle, SDLC)通用的顺序如下:

  1. 需求分析:确定用户需求和系统功能
  2. 计划:对成立的需求执行需求执行计划,多长时间内完成该需求,每段时间具体完成哪些功能
  3. 设计: 将需求细化成一个个任务,团队成员各司其职领取任务并进行技术设计(如何进行架构设计,设计哪些接口、采用什么技术)
  4. 编码:根据设计文档编写代码
  5. 测试:验证软件功能和质量
  6. 运行维护:项目测试结束之后,项目需要进行上线,并对产品进行线上的维护。线上的维护主要分为三个方面

对于线上维护来说,分为三个方面:

  1. 修复性维护:对项目中未发现的问题进行修复
  2. 完善性维护:完善功能
  3. 预防性维护:进行一些预防手段以避免产品在线上出现一些其他的问题

瀑布模型

特点:每个流程只执行一次,属于线性的开发流程

优点:

  1. 强调开发的阶段性
  2. 其他模型的基础框架

缺点:

  1. 测试后置:前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去了及早修复的机会
  2. 周期太长,产品很迟才能被看到和使用,可能会导致需求/功能过时

瀑布模型适用于需求固定的小项目

螺旋模型

增量模型与迭代模型

敏捷模型

何为测试模型

V模型

W模型

软件测试生命周期

何为Bug

Bug的要素和级别

Bug的生命周期