2022年,软件测试自学指南持续更新

前言:

本人7年从业经验,这篇文章将汇集软件测试所需知识,拒绝标题党,水文。让所有想转行的同学能从文中获取有价值的知识。

软件测试前景如何:

虽然现在很多地方充斥着程序员的35岁职场危机,但是我建议同学们有自己的判断,毕竟除了公务员,其他行业都不能称为铁饭碗。软件测试作为当下比较热门的互联网行业里的一个职位,它的价值是不能小觑的。同学们可以翻一翻BOSS直聘,查一下测试的岗位薪水,特别是3年以上,测试工程师的薪水还是大大领先于其它行业,所以越早进入测试行业,你的优势就越大,前景目前来看未来10年肯定是越来越好。

学习内容(重要,详细):

这里将从浅到深的介绍要学习的内容,先学习理论,把软件测试一些概念弄清楚,这部分相对来说比较简单,然后再学一些工作上要用到的测试工具,学完之后肯定会入门软件测试的。

如何学习:

关于如何学习,如果想省事可以找一个靠谱机构,也可以找个有经验的师傅带。如果自学能力比较好,跟着这篇文章进行就可以了,要相信自己哦。

测试工程师存在的目的:

那当然是找bug了,因为BUG无处不在。

一个公司有测试人员和没有测试人员,做出来的产品是天壤之别。

在这里插入图片描述


我从业这么久,碰到优秀的开发寥寥无几。测试的存在就尤为重要。测试人员在实际工作中如果是做的好的话有几方面:一是帮助产品经理完善需求,二是发现BUG,三是及时的暴露风险。虽然大家各司其职,但仍然需要相互配合。一般公司测试人员是比开发人员少,大概的比例为1:3,当然这个不是绝对的。

我的条件能学测试吗?

其实很多同学都有这方面的困惑吧,特别是在其它行业做了好几年的,会开始怀疑自己。我的建议是从3方面去考虑。

1、学历,最好是大专及以上;
2、年龄,最好是32岁以下(本来打算写30的,但是带过的学生有32还找到工作的);
3、学习欲望,这个行业不是养老的行业,是需要持续学习才能获得更好的回报。

一、理论知识学习:

软件开发的模型

这里就介绍一种模型,瀑布模型。其它的模型比如V和W模型、敏捷模型都是由此演变的,可万变不离其宗。我们需要在脑海中有一个软件开发过程的一个概念。而测试就是在开发编码后要进行的主要工作。

在这里插入图片描述


软件测试的质量

在这里插入图片描述


需要理解从哪些方面去保证一个产品质量。如果面试官让你测一个杯子,你可以这么回答:

功能方面:

能否装水或者其它液体
能装多少ML的水
杯子是否有刻度表
杯子是否可以泡茶或者咖啡
杯子的材质

界面测试:

杯子的形状
杯子的大小
杯子的外观颜色

性能方面:

能否装100度的开水
能否装0度的冰水
杯子是否耐摔
杯子是否掉色
杯子里乘水几天后是否会漏

易用性:

杯子是否美观
杯子拿久了会不会累
开水会不会烫手
安全性:

杯子的材料是否有毒
微波炉里会不会爆炸
杯子会不会有缺口划破嘴巴

测试用例的编写

如何编写测试用例,这个是非常重要的。常见的编写测试用例的方法有等价列,边界值,因果图等,可以找几个网站尝试去写一下。

BUG的要素和状态

测试过程中,发现BUG后需要提交BUG给开发。

测试过程

测试在工作上到底做的事情是什么,难道只是提BUG吗,那肯定不是的。

在产品过需求的时候,测试要参与其中并提出疑惑
需求在开发的时候,测试要开始写测试用例并进行测试用例的评审
开发完毕后,测试就开始测试了。测试过程中发现BUG要通过系统去提交BUG
开发修复BUG,测试要去验证。
BUG全部修复完毕后,这个产品就可以上线了

测试的类型
黑盒测试 VS 白盒测试

在这里插入图片描述


掌握黑盒测试的概念,黑盒说白了就是把产品当做一个黑盒子,不去关心它是怎么开发的,以用户的角度去进行测试;了解白盒测试是什么。初级的测试工程师只需要掌握黑盒即可。

手工测试 VS 自动化测试

手工测试,就是人工的进行测试。自动化测试就是写代码让机器帮助你测试。黑盒测试和手工测试在行业内是一个意思。属于初级的测试工程师。自动化测试需要你掌握工具,代码等一些稍微复杂的知识。学习建议为先学习手工测试,最后再学习自动化。

Web VS App

常见的测试系统为Web系统和App系统,需要去了解下他们的构成原理和区别。如果让你去测试一个web或者app,你应该怎么做。带着这个问题去学习。

学习Web测试需要有一定的网络基础,所以需要学习网络模型和接口相关的知识。

二、工具学习

工具的学习是相对重要的,测试的工作中是离不开工具的。所以这一部分一定要弄清楚。

Mysql学习,掌握增删改查(查是重点),免费视频是有很多的。
Linux命令学习,主要学习常用命令即可,最低20个吧,顺便学习一下secureCRT / Xshell
Charles/filddler抓包工具的学习,这个是和上面的web接口相对应的。学了之后会打开知识的新大门。
postman接口测试工具的学习

以上的工具相对比较简单,多多练习就能掌握,如果是初级测试工程师,或者你是应届生,上面学习完找个实习还是绰绰有余的,如果工作年限2年以上且要提升自身竞争力,可以继续学习。

三、编程语言的学习

编程语言就推荐python吧,之前也推荐java的,但是java确实相对来说比较难,所以能把python学的差不多就完全够了。学习Python的目的一方面是在工作中写脚本,另一方是就是做自动化测试。

四、自动化测试

自动化测试目前主要的就是UI自动化和接口自动化。先来一张自动化的金字塔,可以明确看出自动化的投入和收益。也能看出主要有3个自动化类型。UI、接口、单元测试。

在这里插入图片描述


单元测试的难度太大,所以测试行业很少做单元测试的自动化,主要还是UI+接口自动化。建议学1-2个即可(初级的工程师不学自动化也是可以的):

Web端UI自动化框架介绍:

Python+selenium+unittest,行业内的主流UI自动化框架,python语言简单易懂。学习起来非常容易上手
Java+selenium+TestNg,以java语言为主的UI自动化框架。和上面的区别主要是编程语言的区别。
python+RobotFramework,在测试行业有一定的比例,关键字驱动进行的自动化。robot为可视化的工具,引入selenium包后即可进行UI自动化。

APP端的UI自动化工具介绍:

Python+Appium+unittest,行业内的主流自动化框架,python语言简单易懂。学习起来非常容易上手。
Java+Appium+TestNg,以java语言为主的自动化框架。和上面的区别主要是变成语言的区别。

接口自动化框架介绍:

python+unittest,接口测试不借助第三方包,所以纯代码即可实现,python语言简单易懂,加上python自带的unittest断言工具即可实现接口自动化。当然,现在python+pytest也是非常火了。更建议学习。
Java+TestNg,java语言的自动化框架,TestNg为java自带的断言工具。
python+RobotFramework,robotframework为可视化工具,引入python requests包,可以实现接口自动化。
Jmeter+Ant,此工具行业内一般用来做压力测试工具,但是也可以做接口自动化。优势为可视化工具,学习难度成本低。

五、性能测试:

性能测试主要解决的是测试公司的当前服务器(Linux操作系统)能力如何,保障服务器能满足XX的压力,发现服务器当前的瓶颈和解决方案。公司里专职的性能测试并不多,专职的性能测试一般在对外服务的公司里(公司卖服务)以及大公司(用户量大,交易量大)居多。创业公司,普通公司一般不会做性能测试。

性能测试工具介绍:

Jmeter:行业内开源的工具,易上手,扩展性强。学习者需要学习jmeter常用组件用法,脚本的编写。
loadrunner:历史主流工具,会逐渐被jmter取代。
学习建议:学jmeter即可,工具会用不代表会了压力测试,仍需要学习常用压力指标比如:TPS、错误率、90%平均,常用的Linux监控命令比如:top、vmstat。可视化工具比如:influxdb。性能测试是一门高深的测试内容,需要熟悉Linux服务器相关知识,还需要了解运行在服务器上的应用原理。初学者只能学个皮毛,需要在公司内实践才能逐渐提升。

六、其它测试类型

安全测试,渗透测试,专项测试相对来说有难度,基本上不建议学习了。

总结:
以上内容可以说是较为详细的了,如果还是学不会,可要打pp了。

最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

在这里插入图片描述

这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

自学推荐B站视频:

零基础转行软件测试:38天自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!

自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享

在这里插入图片描述

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...