Part_1测试基础(上)

一.碎碎念

上一次发博客还是2021.4.27;断更三年,不愧是我!三年之期已到...

因为某些原因最近有跳槽的想法,所以在复习之前写的一些笔记,但是总觉得复习的效率和成果都不太好,于是又捡起了写博客这个方法,也就有了这个分类专栏(2024.9.18 杭州 阴);

这个专栏会从软件测试基础开始,我在工作中常用的测试工具和测试方法也会涉及到,没有在工作中实际应用到的一些技术也会写,自动化会有的,持续集成也会有的,flag先立起来!冲!!

(测试入门必看啊各位未来的QA大佬们!!!)

二.软件测试基础

注:本章为测试基础章,为避免大量的文字导致阅读起来可能会有点枯燥,我会尽量和图片结合并加入一些自己的理解,也希望其他测试同学看了之后,也有自己的理解,ok,开始~

1.软件测试的定义

Q:什么是软件测试呢?

A:在规定的条件对程序进行操作,以发现错误,对软件质量进行评估

部署环境,执行测试,反馈问题,提交报告;

这就是软件测试,后续的比如docker部署测试环境、UI自动化、Api自动化、Jmeter压测、Bug管理平台的使用、测试报告的生成等,我认为这些都是在这个定义上的扩展,让其变得更好更高效,仅此而已。

早些年,开发就是测试,但随着软件架构逐渐复杂,就有了专门的测试/QA(Quality Assurance)。

而软件测试的对象,也不再局限于软件/程序,到现在的,包括代码逻辑操作手册需求文档数据等都成为了测试人员需要关注的东西。

想一想,测试对象为数据时,比如某宝app的所有商品,测试人员需要关注哪些重点?

2.软件测试的分类

按照不同的分类标准,软件测试有不同的类别:

a.按照阶段划分

这里的阶段如果按照测试阶段理解不太好记,但如果是按照开发程序的思路来理解,就会很清晰明了:(防止有同学还没有python基础,这里就先写的抽象一点)

上图我们从右往左看,从最开始的几行代码构成一个我们能测试的最小单元(类、函数);针对这些最小单元的测试,那自然就叫单元测试

这些一个个单元我们把它们集成起来,测试这些“集合体”,给它个名字那就叫集成测试

而我们最后展现给用户的,是这些“集合体”再次整合,形成的系统,对该系统的测试那就叫它系统测试吧;

经过了QA的测试,到最后交付给用户之前一般还会有内测,就像游戏发布那样,也叫aplha测试,属于最后验收阶段,所以叫它验收测试

测试分类

重点
单元测试最小的可测试的单元,可以是一个函数、一个类
集成测试

在单元测试的基础上(不然会受阻于单元测试的问题)将所有单元的“集成体”,可以是某个模块、某个子系统进行测试;单元与单元之间的“连接”没问题

系统测试整个系统的测试,主要根据需求进行测试
验收测试

检查软件是否符合用户的需求的测试阿尔法测试,一般由内部发起,也叫内测。贝塔测试,把产品交给用户进行体验测试,也叫公测

b.按照状态划分

状态就是静态和动态;

比较好理解,静态测试就是不用运行程序的测试;比如代码走查,SQL检查等。

那么动态测试就是需要运行程序的测试。

c.按照测试执行划分

按照测试执行的划分,可以分为冒烟测试探索测试随机测试回归测试

测试分类重点

冒烟测试

测试软件的主要功能是否正常,是否具备可测试的条件

探索测试

根据自身经验,不看用例也不刻意与需求进行核对,快速验证产品功能

随机测试

完全随机的测试,任意发挥,往往会发现出乎意外的问题

回归测试

一轮测试结束以后,再进行快速的重复一轮测试。

主要回归策略有全量回归、新增功能回归、已发现的bug的回归

表情包分割...还有按照技术划分为功能测试性能测试安全性测试

是否清楚代码逻辑划分为黑盒测试白盒测试灰盒测试

三.软件测试基本原则

在开始对一个项目进行测试时,有一些基本原则是需要QA遵守的;有些原则可以帮助我们更快地发现问题,有些原则可以帮助我们更全得发现问题;

1.基于用户角度发现问题

产品最后都是要给用户用的;QA不仅要从自身角度出发进行测试,从用户角度看问题也很重要,有时候,一个按钮的边界范围、一个弹窗的逻辑、甚至一个css样式可能就会影响用户的去留;

2.越早介入测试越好

测试并不是在某个需求开发完或者开发的差不多时才介入测试,测试最早介入测试的时间是需求评审阶段(甚至是项目初创阶段),此时测试对象为需求文档产品手册UI设计等;在开发之前就熟悉需求,熟悉完需求之后就可以着手准备基本的测试用例

3.二八原则

80%的bug,往往集中在20%的功能模块上(这是我跟了某勾课程学到的,个人认为蛮正确);

4.反向测试用例

不仅要有正向的测试用例,还要有反向的测试用例;即考虑异常情况。

你还知道哪些原则或者约定俗成的规则嘞?

四.软件开发模型

最后讲一下软件开发模型吧;

这一点在工作中QA可能关注得不太多,但我切实遇到过这方面的问题;(写在文末吧,希望大家看了之后能避开这个坑)

1.边做边改

适合一些小项目,当场做,当场改;

优点:贴合用户需求,用户针对某一产品提出功能上的需求或者缺陷,开发人员立马进行针对性的修改,主打一个随心所欲,开发觉得合理就可以改,快;

缺点:没有标准流程、没有需求文档、甚至没有测试...

2.瀑布模型

顾名思义,像一条从高到低的河流,中间有多段瀑布一般:

流程一步一步往下推行,当前流程严格依赖上一流程

优点:有管理,结构层次非常清晰;

缺点:测试介入晚,测试进度没有到100%时,和0没有差别;

3.快速原型

在瀑布模型的基础上,加了一个“构造原型”,快速解决前期需求不明确的问题,可以理解为,给用户看一下“样板间”。

优点:优化了瀑布模型,前期需求不一致导致的问题

缺点:测试介入得还是偏晚

4.螺旋模型

 螺旋模型将瀑布模型和快速模型结合,增加了风险分析,特别适合大型复杂的系统;

优点:解决了瀑布模型需求不明的问题,解决了测试介入晚的问题,将开发过程拆分为更小的单元,用户每阶段都可以参与产品体验;

缺点:需要经验更丰富的风险评估人员,迭代次数很多;

5.敏捷模型

a.敏捷开发框架Scrum流程图:

 

首先确定产品需求列表;根据需求列表,从中挑选出作为本次迭代完成的目标,目标周期1~4周;细化这些需求任务交由开发,每日立会汇报完成情况;做到每日集成;做完选出的需求之后进行会议演示;最后总结,提出优化加入下一轮需求列表中。

优点:以人为本易于开发和测试

缺点:如果在开发过程中有人员更迭会导致交接困难;对测试和开发要求高

b.XP极限编程:

 

把复杂的开发过程分为一个个小周期,分三个维度进行管理。

最里层:编程方法

  • 用最简单的方法设计软件
  • 小组编程:互相评审
  • 测试驱动开发:先写测试代码,再写能测试通过的代码
  • 重构:增强程序可复用性

中间层:小组实践

  • 代码集体所有:每个人对代码负责,每个人都能修改代码
  • 编码标准:遵循统一的标准
  • 稳定高速的步伐:保持稳定高速的工作节奏
  • 隐喻:用形象的比喻描述产品的特点
  • 持续集成:每天把代码集成为产品,快速发现问题

最外层:交付与管理

  • 小规模发布:1-3周发布一个版本,这个产品能够直接使用和验证
  • 用户测试:用户参与测试
  • 完整团队:围绕用户进行工作
  • 计划Game:总结与计划

在开发模型这里讲下DevOps吧,最近的一个项目就是使用的敏捷开放框架Scrum;在DevOps中一般都会使用Scrum来推动持续开发;

 DevOps即开发、QA、运维整合协作,加速软件交付周期,同时保持高水准的质量和稳定性;

 还记不记得最开始我说软件测试的定义时,提到的一个观点,“后续的各类技术就是在该定义上的扩展”;比如后面会讲到的Jenkins做持续集成和交付,就是让上面这个流程变得更高效;

五.软件测试模型

篇幅原因,这里我就写一个双W模型吧;

其它的这里不多赘述,我在实际项目中QA团队使用的测试模型都是在双W模型上加以改动居多。

ok到这里测试基础的上半篇就差不多了,项目管理在本系列中不会被提到,如果是从立项开始的话,那还是有必要去了解一下的,或者项目在此之前没有其他QA。

文末,讲一下我遇到的坑点以及为什么说可以让各位避免吧;对,没错,我就是XXX Web项目在这之前没有其他QA的那个第一个呆瓜QA;当时已经是稳定两周一迭代,没有测试流程,没有测试用例,没有任何关于测试的文档。

如果有遇到这种情况的同学,组里还没有其他QA的话(是的,我们项目组就我一个QA);在明确当前项目组的开发模型之后,比如我目前的项目组,敏捷开发模型;

亲身经历!!!

周三入职,熟悉业务,然后第二周就跟迭代了...当周直接测,新增了一个支付方式... 从那之后,我好像陷入了死循环(敏捷开发模型中的中间那块周迭代);

现在回想起来,如果你也遇到这种情况,首先,严格按照开发模式来,测试在每个环节该做什么,就做什么,参与需求评审,写用例,再进入迭代圈执行测试,完善用例继续执行,再到后面的复盘,千万千万不要步我的后路,因为每次迭代需求和bug繁多,而陷入迭代怪圈。哪怕来不及测这次的需求和bug,那也不是你的责任(就一个QA,排这么多来不及测怪我咯)

历历在目,当时一起共事的产品的一句话,“一个人,一次迭代,二十多个需求,三十多个bug,你还是人吗?”

下篇会讲下用例设计,然后Part_2开始Linux吧(已经在草稿箱了,如此美妙的开局),以上!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值