当前位置: 首页 > news >正文

【软件测试】概念篇 — 详解

目录

1. 软件测试的定义

2. 软件测试的岗位

3. 软件测试和开发的区别

4. 测试人员需要具备的素质

5. 需求的概念

6. 开发模型

6.1 软件的生命周期

6.2 常见的开发模型

6.2.1 瀑布模型

6.2.2 螺旋模型

6.2.3 增量模型,迭代模型

6.2.4 敏捷模型

6.2.5 Scrum模型

6.3 测试模式

6.3.1 V模型

6.3.2 W模型


1. 软件测试的定义

软件测试就是验证产品特性是否满足客户端需求,并发现潜在的缺陷(Bug),确保软件的质量、可靠性和安全性。

企业通过软件和用户进行交互获取盈利,用户的使用感受直接影响着企业的收益,如果产品质量太差导致大量用户流失,直接导致企业的收益降低,所以软件测试是为了保证产品的质量,提高用户满意度,留住用户

2. 软件测试的岗位

测试的岗位主要分为两类:软件测试开发工程师和软件测试工程师

软件测试开发工程师(测开)

  • 主要负责开发测试工具和测试基础框架,编写单元测试框架和自动化测试框架
  • 工作的重点是业务测试,通过开发测试效率工具,避免人工去执行很多执行过的测试,提高了效率

软件测试工程师

  • 主要做手动测试,部分自动化,执行测试用例,发现并跟踪bug
  • 工作的重点是业务测试

软件测试开发工程师和软件测试工程师的区别

相同点:都属于测试人员,都负责对产品的质量负责,保障产品的质量

不同点:测试开发比测试多了测试二字,但是这里的开始并不是业务开发,而是开发一些测试效率工具,通过测试效率工具来提升测试的质量和效率,比如在日常的测试中,根据需求文档编写测试用例,执行测试用例都是依靠测试人员手动的点点点,是人就容易犯错,机器执行的质量要比人高,执行的效率也会提高

3. 软件测试和开发的区别

工作内容:

开发人员通过编程语言实现产品的特性,修改bug

测试人员编写测试用例,执行测试用例,发现产品的漏洞。验收漏洞,使用一些测试工具保障产品的质量

开发的知识储备广度小,专业度高,测试的知识储备广度大,专业度相对比较低

测试人员会对代码进行测试动作,而开发人员会对代码进行调试动作

测试和调试的区别

调试

  • 调试的目的是定位并解决程序中的问题
  • 主要是由开发人员完成
  • 一般在开发阶段执行

测试

  • 测试的主要目的是发现程序中的漏洞
  • 测试主要是由测试人员和开发人员来执行,其中黑盒测试和白盒测试主要是由测试人员完成,单元测试和集成测试一般由开发人员执行
  • 测试贯穿软件开发周期

测试岗位为什么要学习开发知识

测试人员也需要编写代码,比如开发自动化测试,开发测试效率工具等,都需要一定的编程基础,比如说在测试的时候,需要看的懂代码,可以更快的发现问题

学号开发知识能够提高软件测试的质量,可以通过查看代码中的数据走向更好的从代码层中发现问题。

4. 测试人员需要具备的素质

沟通能力:测试工程师的沟通能力会直接影响工作开展的效率

快速学习能力:互联网行业发展迅速,新技术迭代非常快。需要不断的提升自己,适应业界的需求。快速学习能力能保证自己快速熟悉公司业务,了解需求文档

开发能力:保证项目质量之外,开发针对当前业务的开发效率工具,提升测试效率和质量

文字能力:测试人员需要编写各项文档,测试计划,测试用例,测试报告等

掌握自动化测试技术:可以让测试人员从大量重复性的手工劳动中解放出来,可以将更多的精力放在更多类型的测试上。

测试用例的设计能力:无论针对哪种类型的测试都能设计出高效的发现缺陷,保证产品质量的优秀测试用例。

责任感和抗压能力

测试往往是产品质量的最后把关者。虽然团队中的每一个人都需要对产品的质量负责,但是产品的测试质量跟测试人员是密切相关的。同时测试人员具备一定的抗压能力,比如说,计划测试的时间为5天,但是突然变为了三天,需要测试人员能快速的应对,安排好接下来的测试工作

为什么选择测试岗位而不是开发岗位

可以从"主动选择+能力匹配+个人的喜好/性格+个人职业规划四方面进行阐述。

5. 需求的概念

用户需求

  • 没有经过合理的评估,通常就是一句话
  • 用户需求可能是可以实现的,可能无法实现(用户让你实现一个软件,只要发消息就会让微信零钱增加200)

软件需求

  • 是开发人员和测试人员执行工作的依据
  • 会详细描述开发人员必须实现哪些软件功能

软件需求分析举例

用户的需求不能直接作为开发和测试的依据,针对用户的需求,产品经理需要进行需求分析后才可以转变为软件需求。

6. 开发模型

6.1 软件的生命周期

软件的生命周期实际上就是软件的开发模型

阶段具体活动产出
需求分析分别从市场需求,技术等方面,分析用户需求是否合理软件需求等文档。
计划根据需求文档编写执行计划(多久时间完成该需求,哪段时间具体完成哪些功能)计划等文档。
设计将需求细化成一个个任务,团队人员进行技术设计(如何进行架构设计,设计哪些接口,采用什么技术)设计等文档
编码实现开发人员参考需求文档,设计文档,交互图等文件进行代码编写。代码文件等文档
测试根据测试用例对软件进行测试。测试用例,测试设计测试报告等文档。
运行维护项目测试结束后,对项目进行上线,对产品进行线上维护。

运行维护一般分为三个方面,分别是修复性维护,完善性维护,预防性维护。

  • 修复性维护:对项目中未发现的问题进行修复
  • 完善性维护:对项目功能进行完善
  • 预防性维护:避免产品在线上出现一些问题,进行的防护手段。

因此,可以得出软件的生命周期:

需求分析——计划——设计——编码实现——测试——运行维护

6.2 常见的开发模型

6.2.1 瀑布模型

瀑布模型的每一个阶段都只执行一次,是线性进行的软件开发模式,是所有模型的基础框架。

优点:

  • 强调开发的阶段性
  • 线性结构每一阶段只执行
  • 是其他模型的基础框架

缺点:

  • 测试后置,如果前面阶段存在遗留风险到了测试阶段才会被发现,会导致项目大面积的返工,因此必须留给足够的时间给测试,否则会导致测试不充分,导致产品质量差。
  • 周期时间太长,产品很迟才会被看见,可能会导致功能过时

使用场景:

  • 需求固定的小项目

6.2.2 螺旋模型

⼀般在软件开发初期阶段需求不是很明确时,采⽤渐进式的开发模式。

在各个阶段都引入了风险分析+原型,这样做的目的是为了减少各阶段遗留的风险问题,避免把问题留到后面阶段。

优点:

  • 增强了全过程的风险管理。
  • 增强了各开发阶段的质量。

缺点:

  • 项目中可能存在的风险与风险管理人员的技术水平有直接关系。
  • 会增加资金和时间的投入,导致项目成本过高。

使用场景:

  • 规模庞大,复杂度高,风险大的项目

6.2.3 增量模型,迭代模型

增量模型和迭代模型经常一起出现,增量模型和迭代模型很相像,但是二者是有区别的。

增量模型

逐块构造的方式,先构建小人的头--->在构建小人的手--->在构建小人的腿

特点:

  • 将功能分成多个可独立交付的增量
  • 每一个增量都是完整的功能模块
  • 增量开发能显著降低项目风险

迭代模型

反复求精的方式,先构建小人的大体框架--->构建出小人的眼睛和手臂---->构建出小人的嘴和四肢

特点:

  • 每次迭代都交付一个可运行的简化版完整系统,逐步增加功能
  • 需要再项目初期确定整体需求框架,根据用户反馈调整需求

增量模型将一个大的需求修改成多个小功能,每个功能独立开发上线。

迭代模型会上线一个基础版本,在基础版本上的所有功能都存在,只是功能比较简陋,后续会继续迭代优化上线。

使用场景:

大型项目,需求不明确

6.2.4 敏捷模型

上述的开发模型中存在一个共同问题,在项目开发期间,可能会出现用户需求变更,这时候就要根据新的需求修改代码和测试用例,每一次变更都会花费大量的成本和时间。

克服上述的问题,于是就有了敏捷模型,敏捷模型中有一个重要的《敏捷宣言》

  • 个体与交互重于过程和工具
  • 可用的软件重于完备的文档
  • 客户协作重于合作谈判
  • 响应变化重于遵循计划

总结出敏捷模型的4个特点:轻文档,轻流程,重目标,重产出

6.2.5 Scrum模型

Scrum模型是敏捷模型的一种,又被称为迭代式增量软件开发模型

Scrum模式中,存在3个角色和5个重要会议

三个角色:

  • 产品经理——收集需求,产出软件需求文档,对产品负责(做什么)
  • scrum master——负责召开各种会议,协调项目,消除项目障碍(怎么做)
  • 研发团队——负责软件研发任务(开始做)

Scrum的基本流程

  1. 产品经理负责整理用户需求,进行优先级排序
  2. 发布计划会议  产品经理讲解用户需求,评估需求的合理性,对需求进行估算和排序,确定出这一期的迭代要完成那些需求
  3. 迭代计划会议  对需求任务进行分解,每一个任务都会有一个负责人,并确定完成时间的估计
  4. 每日例会:每天会开早会,团队成员回答昨天干了什么,今天计划做什么,遇见了什么问题
  5. 演示会议:在这一期的迭代结束后,召开演示会议,负责人向大家演示本次迭代取得的成果
  6. 回顾会议:项目团队对本次迭代进行总结,提出产品可以优化的地方,产出新的用户需求。

敏捷开发中注重轻文档和快速迭代,测试人员不应该使用excel编写测试用例,更多的使用思维导图的方式

6.3 测试模式

测试模式中经常使用的是:V模型和W模型

6.3.1 V模型

优点:

明确标注了测试过程中存在的不同类型的测试

缺点:

  • 测试后置,如果前面阶段存在遗留风险到了测试阶段才会被发现,会导致项目大面积的返工,因此必须留给足够的时间给测试,否则会导致测试不充分,导致产品质量差。
  • 周期时间太长,产品很迟才会被看见,可能会导致功能过时

6.3.2 W模型

特点:不仅对代码程序进行了测试,需求和设计同样进行测试,测试与开发是同步进行的

优点:

可以尽早的发现问题(需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在)

缺点:

  • 重流程,不适合敏捷开发模式
  • 测试和开发活动仍然保持着一种线性的前后关系
http://www.dtcms.com/a/324811.html

相关文章:

  • 广东省省考备考(第七十二天8.10)——言语理解与表达、判断推理(强化训练)
  • APISIX 路由优先级
  • SupChains团队:化学品制造商 ChampionX 供应链需求预测案例分享(十七)
  • 托福阅读记录
  • TypeScript 中的as const是什么?
  • 基于Actor-Critic策略的Atari中的pong_v3
  • 机器学习第八课之K-means聚类算法
  • 零基础学编程,编程从入门到精通系列教程,附:编程工具箱之公用事件的用法#零基础学编程从哪里开始#新手学编程先学什么#公用事件构件编程用法
  • Lua语言变量、函数、运算符、循环
  • 小学数学计算技巧全攻略
  • 攻击者瞄准加密技术的基础:智能合约
  • [网安工具] Web 漏洞扫描工具 —— GoBy · 使用手册
  • Video Lecture 8 Page Fault
  • 7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序
  • LightGBM 与 GBDT 在机器学习中的性能与特点比较
  • element-ui el-progress在有小数的情况下,会换行显示。解决不换行的问题。
  • redis集群-本地环境
  • 【前端基础】14、CSS设置背景(background相关的)
  • 正则表达式常用语法参考
  • STM32H7 以太网配置引申的内存问题
  • A2A协议深度理解与实践
  • 解决 .NET Core 6.0 + PostgreSQL 网站首次连接缓慢问题
  • 安全生产基础知识(一)
  • 去除Edge微软浏览器与Chrome谷歌浏览器顶部出现“此版本的Windows不再支持升级Windows 10”的烦人提示
  • 深度剖析 Linux 信号:从基础概念到高级应用,全面解析其在进程管理与系统交互中的核心作用与底层运行机制
  • 【牛客刷题】REAL799 翻转01 (饿了么面试题)
  • Vue 事件冒泡处理指南:从入门到精通
  • 亚麻云之监控管家——CloudWatch基础监控
  • socket编程中系统调用send()详细讲解
  • 《算法导论》第 16 章 - 贪心算法