软件测试的基本概念

软件测试

认识测试

什么是测试

测试在生活中处处可见
例如:生活中买个衣服

外观测试:筛选出自己喜欢的衣服

尺码测试:试穿一下,看看自己喜欢的衣服是否合身

面料测试:衣服的材质是否符合自己的要求

价格测试:询问价格,与自己的预期价格是否合适

............

这样简单的买个衣服其实也是经过许多测试过程

例如:Java中一个相除的方法

测试1:10 / 2 = 5

测试2:1 / 2 = 0.5

测试3:1 / 0 此时这里除数不可以为0,这里就会出现错误

测试4:6.6 / 3.3 = 2 测试浮点数,但是此时这里只可以接收整数类型

测试5:'abc' 'abc' 这里两个字符串进行相除也会出现错误

..................

这里要不仅要测试对应的值求出结果是否符合,也要对值的类型进行测试,也要判断此时操作是否合法............

为什么需要软件测试

测试人员可以提高产品质量和提高用户满意度 ,用户会直接或者间接付费,进一步就使企业盈利

软件测试其实就是验证产品特性(功能、界面、性能的......)是否满足用户需求

测试相关岗位

主要分为两个方面
软件测试开发工程师和测试工程师

这两个有什么区别呢?

本质上都称为测试人员,主要工作是对产品质量负责,保障产品的质量

但是此时测试开发工程师还会开发一些提高测试质量和效率的工具像自动化测试、性能测试、效率平台等等

测试为什么需要学习开发知识呢?

1.测试人员有时候也是需要写代码的,像自动化测试】性能测试、开发测试效率的工具。测试人员懂这些代码、了解一些框架

2.学习好开发知识可以更好的提高软件测试的质量,通过查看代码顺着走向从代码层面去发现问题

优秀的测试人员具备的素质

1.综合能力(沟通能力、快速学习能力、开发能力、文字能力)

有良好的沟通能力可以提高工作的效率,对不同业务有快速学习和理解能力,日常有时候需要开发一些提高开发效率工具,我们也要编写测试用例

2.掌握自动化测试技术

毕竟使用机器模拟人这样效率是比较高的

3.测试用例的设计能力

无论设计什么类型的测试,一个用例尽可能覆盖业务的测试用例

4.探索性思维

不断进行测试,结合自己经验知识、直觉进行系统猜测和逻辑推理,找出一些针对性测试关注点

5.兴趣

有兴趣自己才会好好干

6.责任感和压力

虽然测试无法测试出100%的问题,但是要保证产品上架后不会出现明显问题
测试是贯穿整个软件的开发生命周期

概念

需求

分为两部分,一部分是用户需求,一部分是软件需求

用户需求通常是一句话,做一个什么事,实现一个功能什么的

软件需求:是测试人员和开发人员的依据

例如:用户需求实现一个排序

软件需求:

对什么类型数据进行排序

数据量多少 ,选择合适的算法

..................

这里要对用户提出的事情进行详细化

此时用户的需求不可以直接作为开发和测试的依据,此时根据用户的需求,产品经理要对需求进行分析(技术可以性、利益等等)才可以进行转化为软件需求

开发模型

这里所指的模型,实际上是流程,所以开发模型实际上是产品的开发流程

生命周期

生命周期是从生命开始到生命结束的一段时间,人有出生死亡,软件也有,需求的开始就是其软件的起点,中间会进行需求计划、设计、开发、测试、发布等等,当这个软件被淘汰,也就是不在使用,这个软件的生命就结束了
软件的生命周期

需求分析 :先分析这里的用户需求是否合理,从市场、技术等方面分析
计划 :实现上面需求的计划设计,多长时间完整,每个时间段完整什么
设计 :将这里需求进行大化小,化成一个个小任务,成员完成对应任务并进行技术设计,设计出开发文档
编码 :开发人员需要根据需求、开发文档等文件进行编码
测试 :测试人员参与对软件进行测试产品是否符合要求
运行维护 :产品上架之后也要进行维护,有修复性维护、完善性维护、预防性维护

瀑布模型


瀑布模型 :就是一个阶段只执行一次,是线性顺序进行的软件开发模式

但是这样有个最大缺陷,运行产品很长时间才会被看到,并且也会出现集成的风险,如果此时在需求分析出现了问题,并且没有被发现,此时到了后面才被发现,那前面所做的东西都会需要返工,这样即浪费了时间,也浪费了精力

因此使用这个模式要进行一些修改

优缺点
优点 :线性结构,每个阶段只执行一次
缺点 :测试后置,只有等到前面搞出来以后才可以进行测试,给了测试巨大压力,并且此时如果发现问题也可能会大面积返工

周期较长,产品很迟才被看到和使用

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

螺旋模型

一般情况下用户需求是起伏不定的,因此采用渐进式的开发模式,螺旋模型是渐进式开发模型

非常适合规模庞大、复杂度高、风险度大的项目尤为合适,并且这里迭代开发模式让测试随着开发的迭代而迭代

执行到前面几个阶段都会进行一次风险分析得到一个新的原型,到了编码时候得到的就是可运行原型,这样可以更好的保障前面分析不会出错,避免大面积返工问题

优缺点
优点 :增加风险分析和原型,严格的风险分析保障了每个阶段的质量
缺点:风险分析也需要专业人员来进行,项目中的风险性和风险管理人员技术有直接关系,并且需要人员、资金、时间的投入,增加成本

适⽤场景:规模庞⼤、复杂度⾼、⻛险⼤的项⽬

增量模型和迭代模型


增量模型 :例如这里有很多功能,但是可以将这里的功能进行分类,那些功能可以放在一起,那些可以分开,这样就可以设计多个编码进行功能实现,降低了开发的风险
迭代模型 :迭代是精益求精的概念,就是先开发一个简单的,不断进行迭代优化

增量模型:先画头部、在画身体等等

迭代模型:先将整体轮廓描绘出来,进行细化,进行上色等等

适用场景:大型规模,需求不明确

敏捷模型

上面的增量和迭代模型的确是比较流的方式完成一个项目,但是仍然也有越来越多的问题需要解决,主要问题是开发过程中用户需求变更问题

为了解决这个问题,于是就有了敏捷模型

特点:轻文档、轻流程、重目标、重产出

敏捷开发中,需求被分解成多个增量开发的小部分。采用迭代开发,每个增量部分都是通过迭代开发。每次都旨在小,这样容易管理,并且断短时间内可以完成。

Scrum 是敏捷开发的一种,也称迭代增量软件开发模型

主要有三个角色和五个重要会议

三个角色

scrum由product owner(产品经理)、scrum master(项⽬经理)和team(研发团队)组成
产品经理 负责userstory(用户故事)、定义其商业价值、对其进行排序、指定发布计划、对产品负责
项目经理 负责召开各种会议、协调项目、为研发团队服务
研发团队由不同技能的成员组成,协作完成一个迭代的目标,交付产品

流程图

五个重要会议
产品负责人 负责整理出用户需求(user story),形成产品需求列表(product Backing)
发布计划会议 :产品经理负责讲解用户需求,对其进行评估和排序,指定出这一次迭代需要完成的需求列表,迭代需求列表
迭代计划会议 :对需求进行分解,每个任务都有对应的负责人,并对工时进行评估
每日例会(站会) :项目经理每天会开每日站,三个问题,昨天做了什么、今天做什么、有什么问题,这样更好的直到当前个人的进度,以及出现了某个问题无法解决要及时解决保证在这个周期产品可以交付
演示会议 :迭代结束之后要召开演示会议,介绍这个可交付软件,产品有那些功能如何使用,是否有需要优化地方,有的话就放入下一次迭代中新的需求列表中
回顾会议:对本期迭代进行回顾,发现不足,指定计划,下一次迭代继续改进

敏捷模型注重的是轻文档和快速迭代

因此测试人员不应该使用传统的Excel编写测试用例,应该使用思维导图、探索性测试(根据测试结果调整测试计划)、自动化测试等等

敏捷模型特别注重合作,因此测试人员需要主动根开发人员了解需求,讨论如何设计,一起探讨bug出现的原因

测试模型

测试模型中有两个标志性的模型:V模型和W模型

V模型

单元测试是对程序(人为规定的)最小单元进行测试

单元测试和集成测试检测程序的执行结果是否符合设计要求

系统测试检测器功能、性能的质量是否达到系统要求的指标

验收测试确定确定软件实现是否满足用户需求

明确标注了测试过程中存在不同类型的测试 ,明确描述了测试阶段和开发阶段对应的关系,这样提高了测试的质量

但是此时测试仍然是在编码之后的阶段,没有在需求阶段就介入测试,缺点和瀑布模型一样

W模型

解决了V模型未将测试前置的问题

W模型增加了各开发阶段应同步进行验证和确认活动,两个V组成,分别表示开发和测试过程

特点:不仅仅测试程序,需求、设计等等同样需要测试,测试与开发同步进行
优点
有利于更早、更全面发现问题 ,由于测试早期就介入,因此需求分析完成,测试人员就应该需求和测试验收准备,尽可能早的发现问题
缺点

1.需求、设计、编码等活动仍然是串行的 ,有前后关系,上一个阶段完成,才可以进行下一个阶段

2.测试和开发同步进行,比较注重每个流程,这样无法支持敏捷开发模型,对于一些复杂多变的情况,仍存在问题

相关推荐
超的小宝贝4 小时前
软件测试期末复习
软件测试·测试
用户47949283569151 天前
给前端明星开源项目Biome提 PR,被 Snapshot 测试坑了一把
前端·后端·测试
编程武士1 天前
特性测试(Characterization Test):遗留系统重构的“行为保险“
重构·测试
转转技术团队3 天前
从"人工催办"到"AI 规则驱动":我们如何解放测试团队的生产力
测试
喝养乐多长不高5 天前
测试基础篇
测试工具·测试·测试基础
岁月宁静6 天前
软件开发工程师如何借助 AI 工具进行软件自测
前端·ai编程·测试
爱尔兰极光6 天前
软件测试--接口测试
接口测试·测试
Apifox7 天前
Apifox + AI:接口自动化测试的智能化实践
前端·后端·测试
狗哥哥8 天前
AI 驱动前端自动化测试:一套能落地、能协作、能持续的工程化方案
前端·测试