软件测试基础概念:从需求分析到开发模型与测试模型

文章目录

文章作者:当战神遇到编程

文章专栏:测试理论和实践

欢迎大家点赞👍评论📝收藏⭐文章



一、什么是软件测试?

软件测试就是验证软件产品特性是否满⾜⽤户的需求

二、为什么需要软件测试?

从企业盈利逻辑出发,软件是企业与用户交互的载体,用户体验直接影响企业收益。测试人员的核心作用是:

  • 保障软件质量
  • 提升用户满意度最终帮助企业通过用户的使用 / 付费行为获得收益。

三、⾼频⾯试题

1.软件测试开发⼯程师和测试⼯程师的区别

相同点:

  • 都统称为测试⼈员
  • 主要工作是对产品质量负责,保障产品的质量

不同点:

测试开发⽐测试多"开发"⼆字,⽽这个开发并不是指业务开发,因为业务开发是开发⼈员的主要职责,这⾥的开发指的是需要开发测试效率⼯具,通过效率⼯具来提升测试效率和测试质量,⽐如我们的⾃动化、性能测试等就属于效率⼯具。

2.简历上写了大量的开发技能,为什么找测试不找开发

  • 测试⼈员也需要编写代码,如⾃动化测试、性能测试、开发测试效率⼯具等。测试⼈员需要能够看懂代码、了解开发框架。
  • 学好开发知识能够提⾼软件测试质量。通过查看代码中数据的⾛向能够更好的从代码层⾯去发现问题。

四、优秀的软件测试⼈员具备的素质

  • 综合能⼒(沟通能力,快速学习能力,开发能力,文字能力)
  • 掌握⾃动化测试技术
  • 具备优秀测试用例的设计能力
  • 具备探索性思维
  • 兴趣
  • 有责任感,抗压能力强

五、用户需求与软件需求

1.用户需求: 是甲方 / 终端用户提出的简化诉求,通常仅用一句话描述。

2.软件需求: 软件需求也叫功能需求,是对用户需求进行分析、拆解和细化之后形成的具体描述。

注意: 针对用户提出的需求,产品经理需要先进行需求分析,包括技术可行性、市场可行性、成本投入、收益占比等方面。

只有经过评估、筛选和确认后的用户需求,才能转化为正式的软件需求,并形成软件需求文档,作为后续开发和测试的依据。

六、开发模型

所谓开发模型,可以理解为软件从需求产生到最终交付所遵循的一套流程或方法。

在学习开发模型之前,需要先理解软件生命周期。

软件生命周期指的是软件从产生需求开始,到最终停止维护或被替代的整个过程。

一个典型的软件生命周期包括:

需求分析 → 计划 → 设计 → 编码 → 测试 → 运行维护

软件生命周期各阶段做什么

阶段 主要工作 常见产出
需求分析 判断用户需求是否合理,从业务、市场、技术等角度进行分析 需求文档
计划 安排开发周期、人员分工、阶段目标 项目计划文档
设计 将需求拆解为具体任务,进行架构、接口、技术方案设计 技术设计文档
编码 开发人员根据需求和设计进行代码实现 代码文件
测试 测试人员根据需求和测试用例验证软件质量 测试用例、测试报告
运行维护 软件上线后修复问题、完善功能、防范风险 维护记录、版本更新记录

其中,运行维护又可以分为三类:

  • 修复性维护: 修复线上已经暴露的问题。
  • 完善性维护: 对已有功能进行优化和增强。
  • 预防性维护: 提前做防护,避免未来出现问题。

软件开发模型有很多,其中比较典型的包括:

  • 瀑布模型;
  • 螺旋模型;
  • 增量模型;
  • 迭代模型;
  • 敏捷模型。

不同模型适用于不同类型的项目。

(1) 瀑布模型

瀑布模型是最经典的线性顺序式软件开发模型,也是很多现代开发模型的基础。

它的流程像瀑布一样单向流动,上一个阶段完全完成后,才会进入下一个阶段,流程为:

需求分析 → 计划 → 设计 → 编码 → 测试 → 上线维护

它的优点是阶段划分清晰、文档齐全、便于管理;缺点是测试后置,前期的问题要到测试阶段才集中暴露,返工成本高。

适用场景: 需求固定的小项目

(2) 螺旋模型

螺旋模型是一种渐进式开发模型,每一轮开发都要进行风险分析。


优缺点:

  • 优点: 全程风险管理、保障各阶段质量、通过原型降低风险;
  • 缺点: 风险管控依赖人员能力、成本较高;

适用场景: 规模大、复杂度高、风险大的项目。

(3) 增量模型和迭代模型

增量模型和迭代模型的区别

对比项 增量模型 迭代模型
核心思想 一块一块做 一轮一轮优化
关注点 功能逐步增加 产品逐步完善
类比 先画头,再画身体,再画手脚 先画轮廓,再细化,再上色
交付方式 每次交付新增功能 每次交付优化版本

适用场景: 大型、需求不明确的项目。

(4) 敏捷模型

敏捷开发有一个非常重要的思想来源:敏捷宣言

宣⾔内容:

个体与交互 重于 过程和工具 强调高效沟通

可用的软件 重于 完备的文档 强调轻文档,文档不应该作为验收的标准

客户协作 重于 合同谈判 主动及时了解当下的需求

响应变化 重于 遵循计划 主动迎接变化

敏捷模型的特点

可以总结为四点:

轻文档、轻流程、重目标、重产出

Scrum是敏捷模型中的⼀种,⼜称为迭代式增量软件开发模型。在scrum模型中,主要有三个⻆⾊和五个重要会议。

Scrum 的三个角色

  • Product Owner,产品经理
  • Scrum Master,项目经理
  • Team,研发团队

Scrum 的五个会议

1.发布计划会议 (Release Planning)

产品经理讲解用户需求,团队共同对产品待办列表(Product Backlog)进行优先级排序和估算,确定本次迭代 / 发布的目标和待办范围,形成本期要完成的迭代待办列表。

2.迭代计划会议(Sprint Planning)

项目团队对迭代待办列表中的每一项需求进行拆解,细化为可执行的开发任务,明确任务负责人、完成时间和验收标准。

3.每日站会(Daily Scrum)

每天由项目经理组织,团队成员通常回答三个问题:

昨天做了什么? 明确每个人当前的项目进度

今天准备做什么? 每日的目标和计划

遇到了什么问题? 有问题及时抛出解决,保证产品在规定的周期内可以按时交付

4. 迭代评审会议(Sprint Review)

迭代结束后,团队向产品经理、客户及相关方演示本次迭代交付的可工作软件增量,收集反馈意见,验证产品价值,并由产品经理更新产品待办列表,纳入新的需求或调整优先级。

5.迭代回顾会议(Sprint Retrospective)

团队复盘本次迭代的全流程,讨论三个核心问题:

  • 本次迭代中哪些地方做得好?
  • 哪些地方存在问题、需要改进?
  • 下次迭代可以具体采取哪些优化措施?

七、测试模型

测试模型中有两个⾮常重要且具有标志性的测试模型:V模型和W模型

(1) V模型

V 模型大致可以理解为:

用户需求 ↔ 验收测试

需求分析 ↔ 系统测试

概要设计 ↔ 集成测试

详细设计 ↔ 单元测试

编码

V 模型中不同测试阶段的含义

1. 单元测试

验证单个函数、方法、类或模块是否符合详细设计要求。

2. 集成测试

验证多个模块组合后是否能够正确协作。

3. 系统测试

从整体角度验证系统是否满足需求规格说明。

4. 验收测试

验证软件是否满足用户需求或合同要求。

V 模型的优点和缺点

  • 优点: 明确的标注了测试过程存在的不同类型的测试,并清晰地描述了这些测试阶段与开发阶段期间各阶段的对应关系,有效提升测试的质量和效率
  • 缺点: 同瀑布模型,前期的问题要到测试阶段才集中暴露,返工成本高.要给测试保留充足时间,否则会将缺陷直接暴露给线上.

(2) W模型(双V模型)

特点: 测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进⾏的

缺点:

  • 仍然偏线性
  • 流程较重
  • 不太适合快速变化的敏捷项目
相关推荐
一马平川的大草原5 天前
软件开发过程中的需求分析、系统原型与系统设计关系剖析
需求分析·系统设计·用例
Alex艾力的IT数字空间6 天前
再思“把事情做对”与“把事情做好”的辩证关系与先后顺序
信息可视化·需求分析·学习方法·抽象工厂模式·远程工作·原型模式·中介者模式
互联网推荐官8 天前
上海软件定制开发全流程拆解:需求分析、技术选型与交付管理的工程实践
大数据·数据库·需求分析
蔡俊锋10 天前
AI 原生智能工作台
人工智能·需求分析·规格说明书·ai 原生智能工作台
其实防守也摸鱼10 天前
软件安全与漏洞--实验 软件安全需求分析
网络·安全·网络安全·需求分析·法律·实验·软件安全与漏洞
2603_9547083112 天前
微电网混合控制架构:主从与对等控制的优势融合
分布式·安全·架构·能源·需求分析
深念Y12 天前
从0到1:推拿头疗店ERP系统的需求分析与架构设计全复盘
物联网·需求分析·跨平台·saas·数字化·项目·erp
锁匙isthekey13 天前
K3老单二开 BOM维护中增加原材料的简便计算
需求分析
中小企业实战军师刘孙亮20 天前
先锁定目标客户,再找获客方法-佛山鼎策创局破局增长咨询
职场和发展·产品运营·创业创新·需求分析·学习方法