2023年早已过半,来个迟到的年中总结,说实话,2023,很迷茫,然后过的非常不如意,倒不是上一年的职业目标没达到,而是接下来的路根本不知道如何走。在没解决这个问题之前,或者说没搞清楚自己的方向之前,是迟迟不能落笔的,啊不,应该是落键盘。
下班后花了几天的时间研究了下测试的职业生涯规划,在许许多多的文章之中穿梭,结合前阵子和某公司t3级的大大面试,对自己接下来的几年职业规划,总算有了眉目,让恍惚的心总算有了着落。
先说我这五年坎坷的经历
刚毕业,计算机专业的我进入了软件测试这个行业,然后外包到了某bat公司,在今天看来,这间公司应该是学习资源最丰富的公司,可悲哀的是,基础能力薄弱,资料看不懂,当时甚至连测试用例都不怎么会写,于是在外包的一年,学习了编程基础和一些基础的测试技术,不过一年后,因为外包政策的调整,权限的限制,还有归属感的原因,离职跑到一个做互联网机顶盒的创业公司。
这家公司真的非常棒,无论领导还是工作氛围,还是学习成长,都给了我很大帮助,这间公司我收获最大的就是,形成自己风格的测试,技术方面增长的不多,但是测试思维这块得到了很大的提升,最重要的是,氛围真的很棒,可是好景不长,因为业务涉及到版权,公司一夜间就衰败了,测试组一个人都没有留下来,非常非常遗憾,就这样被迫加入第三家过的不如意的公司。
再说2023不如意的地方
问题一,通宵&连续加班到很晚
我们的特色,但是无论何种结果都会有原因,我需要做的,就是针对原因提出建议。
原因:
需求变更
这个的原因,归咎于产品经理素质问题,我们没必要抱怨刚毕业或者转行的产品做的多不好,公司也许为了省成本就是不招有经验的产品,我们都很无奈。除了每次提测前强制产品体验外,还要给老板体验,但是老板也是刚毕业的,同样会发版本前改需求,我们也很无奈。
开发转测质量差
这个经过一年的努力,已经基本改善了,至少是UI层产生的bug看起来不会这么难受。这个痛点的改变是我强制要求开发转测前执行测试点,同时在测试报告我会加以统计需求覆盖度和自测情况,还是多少有点帮助的。
不重视测试,无法实现分层理念
因为是软硬件公司,开发的模式是底层封装sdk—-上层调用的方式进行,社区加上了之后还有接口调用。但是,我们只有功能测试,对的,你只需要保证程序做的对就行了,这也是功能测试的职责,但是这样够么,随着复杂度的增加,底层和接口暴露的问题越来越多,领导只想着一个人身兼多职,而对建议的分层测试,招聘测试开发做接口,做sdk层测试无动于衷,这一块我想做的努力也基本无效化了。
归根结底
不是无法让领导认识测试的重要性,而是领导根本没有打算让你去做这些事,不怕睡着的人,就怕装睡的人。所以未来,这个东西只能说是我力所能及的范围内改进,本质还是没变,心痛。
问题二,能看看我做的东西不?能给点建议不?
2023,我花时间学习了比较多的新技能,比如专项测试、从jmeter迁移到unittest的接口自动化、web自动化测试等,每个都花了一定时间去研究,并且出了成果,邮件到项目组。
然后… … 对,没有然后,最让我受不了的是,用户从上一年就一直投诉的上传成功率低的问题,我花了将近半个月去学习专项,然后花了几天时间去做的上传专项,发出去什么反应都没有(领导,看了报告吗?看了。有啥建议或者排期解决?不了,没时间。)
接口测试同样如此,写着写着,突然感觉兴趣全无,不过幸好,框架是写完了,测试也跑了一部分。
自动化就更悲剧了,花费了最大的精力,结果因为产品的不确定性,基本上是没有什么成效的。
总结2023上半年
迷茫,痛苦,不被理解,不被支持,各种被打
有失必有得,最后来说说得的地方:
压力忍受能力提高
问题分析能力提高
以前一些理论的东西在项目中得到了实战
沟通能力有提高
职业规划:
接下来把这几天了解到的测试职业生涯规划的个人理解说下,参考了网上各路大神以及和面试公司的面谈总结出来的关于未来的规划。
PS:首先,给我感觉最深的就是,不要人云亦云,不要忘记自己的初衷,更不要被别人影响,失去自己职业方向,吃补药固然好,但是乱吃药可不好哦~~
以时间的纬度来看
分为0 ~ 3年,3 ~ 5年,5~10年以及10年以后
0~3年是刚毕业的懵懂期,可以一心一意工作
3~5年是成长期,已经开始烦恼生活了,工作已经不是全部了
5~10年或者以后,已经步入中年,已经有了一定的生活压力,除了工作,更重要的是家庭
以测试发展方向来看,分为:
√技术管理,兼顾技术的学习和管理
√领域专家,分为自动化,白盒和性能
√纯管理,这个比较少,没怎么了解
√转行,这个也不说,因为已经脱离测试的范围了
so,结合自身情况,定位就在3~5年,职业目标是测试技术管理上。这个通道的模型,其实就是系统测试模型,更像是一个综合性很强的路线,因为你什么都要懂。
这个title是:测试组长–测试主管–测试经理(总监)
测试组长(目前的阶段):分配主管下发的测试任务,设计测试策略,保证流程每一步的有序执行,监督BUG的走向,推进BUG的修改,同时版本发布之后也要总结测试流程的不足和改进点,另外也承担着带领测试新人的职责。
测试主管:推进整个流程的进行,负责跨部门的合作以及资源协调,组员的评级考核,以及针对模块测试策略的确定。
测试经理(总监):整个公司测试资源,测试策略,测试流程的管理者和定制者,更多是大方向上的指定了,基本不直接参与一般的测试工作中来了。
我的测试职业规划
ok,明白了上面的定位之后,我们接下来的工作方向总算浮出水面了:
1.继续深入DB/OS/服务器等基础能力;
2.在基础之上的自动化/接口/专项测试(性能测试)能力;
3.管理技巧,流程优化,问题分析和解决;
基础能力是需要持续学习的,基础之上的技术逐个方向积累原理,管理技巧则是多看书,多思考,多总结。
综上所述,作为一名软件测试人员,只有不断地学习、积累,才能迈向金字塔顶端。
IT工作固然是辛苦的,软件测试当然也不例外。 每天执行用例、跟踪Bug,还要与开发、产品同学争吵PK,与人斗其乐无穷~但正是因为这些默默的付出,才让一场本该在用户面前发生的灾难,提前在自己面前发生了,是否有一种救世主的感觉?
我们拯救了用户,也拯救了这一软件,避免了她被抛弃、卸载的命运。既然选择了测试这一行,那不如好好地坚持下去~~
我用了五天的时候整理了今年我认为软件测试就业的主流技术栈大纲,由于内容实在太多,我就能弄成了一张长图,正在学习测试的小伙伴可以通过点击下面的小卡片
https://jq.qq.com/?_wv=1027&k=3T9tmL0thttps://jq.qq.com/?_wv=1027&k=3T9tmL0t
学习建议
1、一般来说,测试新人的话首先需要把基础打好,测试理论基础可以通过看一些经典书籍或网上也有很多免费的资源,选择前两本基础的看,你会受益匪浅。
2、刚开始不太建议加入过多技术群或其他论坛提问,初期遇到问题可以自己搜索自己尝试解决,当然需要控制一个止损点,不要为一个问题耗费太长时间
3、自学基础的同时一定要做好笔记,且一定是通过自己的理解后做的。可以使用思维导图把前后学到的东西给关联起来
4、读完一本书或一个阶段结束后,可以自测一下,通过找一些经典的笔试题或一些istqb中的题目,来巩固或查漏补缺,有针对性的再次巩固学过的东西
5、接下来可以找一些项目来做或去众测平台看一些基本的项目测试流程,包括基本测试文档的书写规范等等,testin众测平台是一个锻炼的不错平台,至少测试用例设计、执行及bug探索提交缺陷都是挺好的。
6、目前有好多平台会开设一些免费的公开课,通过技术讨论组可以接收消息推送,设定好时间听一些专业领域的测试方法,可以快速了解到大体的流程。(一定要经过严格筛选,选择质量高的,否则会浪费一大部分时间):
测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。
最好学到什么程度呢,最好是能够理解,并能够用自己的话给复述出来。
毕竟面试初级测试的时候,问的问题都是从基础理论上进行考核的。
那测试基础有哪些内容呢?
测试的定义、测试的分类、测试的方法、测试的生命周期。
测试计划、测试方案、测试策略、测试用例的编写。
BUG的定义、BUG的分类、BUG的六要素、BUG的生命周期。
测试和开发流程的关系、瀑布流、V字形、W字型(双V)、螺旋型、敏捷等等。
PDCA、5W2H等分析管理的方法
质量管理体系CMMI(了解)
嗯,大概就是以上的内容吧,以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。
测试工具永远是软件测试人员的得力助手,不能完全依赖工具,但也不能没有工具,在学习软件过程中,要著中软件测试工具的使用,下图覆盖初、中级软件测试工程师所需具备的测试工具,要想学好,下手学习吧。
混在软件测试职业圈,工具千千万,不可能每个都会用,至少要知道有哪些工具可用,什么时候该用什么工具,每个工具能解决什么问题,然后再深入应用几款工具即可,下面就带大家总结一下。
测试管理工具
禅道:简单好用,市场主流,互联网行业居多
Jira:简单好用
QC/ALM:复杂,收费,电信/金融行业使用较多
bugzilla:功能简单
svn:代码和文档管理工具
git:但是多分支管理比svn好
接口测试工具
Jmeter(开源)
postman
SoapUI
推荐使用 jmeter 和 postman。
性能测试工具
loadrunner:大而全,要学精通还是有点难度,重量级工具,过去和现在都是行业老大
jmeter:基于java平台的性能开源测试工具,其实也很强大,而且比较好用
Locust:基于python的一个性能测试工具
白盒测试工具
junit/testng:java下的单元测试框架
unittest/pytest:python下的单元测试框架
cppunit:跨平台的c++单元测试框架
PhpUnit:Php语言下的单元测试框架
TestBed:一个重量级的白盒测试软件,可以进行单元测试、集成测试、静态测试,军工行业常用
Klockword:静态测试工具,军工行业常用
持续集成工具
Jenkins:比较常见的一种CI工具
Hudson
网络测试工具
以HTTP/HTTPs协议为主,网络测试工具有:
wireshark
fiddler
charles
app自动化工具
appium:这个应该算是目前最流行的基于app的自动化测试框架了
uiautomator:安卓自动化测试框架,基本上支持安卓的所有事件操作
Monkey:安卓自带的测试工具
Monkey Runner:Monkey改进版,支持自己编写脚本测试,用Python语言
Robotium:一款国外的Android自动化测试框架,用法比较
web安全测试工具
appscan:算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来
fiddler:网络抓包工具
burpsuite:暴力破解、抓包工具
skipfish:这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。
好了,学完了以上两个部分,恭喜你,你已经是一个出色的初级测试工程师了。
接下来,你要考虑你的发展方向了
是成为一个自动化测试工程师呢?
还是性能测试工程师呢?
还是安全测试工程师呢?
啊!这个问题好难!我也不知道该怎么选。
反正我啥都会一点,哪个岗位都能去面一面。
关于方向的选择,看我的这篇文章
嗯,相信你心中已经有了答案了,那我们继续往下面说。
这个阶段,我们应该学习代码了,关于编程语言的选择,我推荐Java或者python。
还有数据库也是必须掌握的!在工具篇的学习里,我认为你已经可以掌握数据库的相关的应用了!
所以现在各位可以去学习编程语言了,
不过不用像开发那样,学的那么深入。
比如Java,只需要学完JavaSE的部分就够你用了。 python的话也是一样的,把基础的部分学完就行了。
总之前期你两者二选一的学习就OK了。
啥?你问我学的啥。
我当然是两种都会啊
哈哈哈哈哈哈哈,惊不惊喜!意不意外!
自动化方向
等你代码已经基本掌握了,嗯,很好,接下来就要学习各种自动化测试了。
各种单端测试框架:unittest(python)、pytest(python)、JUnit(java)
WEB自动化测试框架:selenium(适用于java\python\javascript)
APP自动化测试框架:appium(适用于java\python\javascript)
以上的内容,根据你学的语言进行选择。
appiunm和selenium根据你参与的项目进行选择。
不过无所谓了,反正迟早都要学会的。
这部分的教程太多了,你学会了编程的基础后,随便百度,好多博客论坛都有教程。
而且凭你那时候的水平,你都能轻松的看懂。
性能方向
对loadrunner和jmeter的掌握更加的深入。
可以手写脚本、脱离录制。
学会了多线程编程、能够手写java或者python、不用工具直接实现压测。
学习linux,毕竟性能总是和服务器打交道的。
学习系统架构的相关知识、方便你更容易的分析系统瓶颈。
说实话、性能方向的提示更难、因为需要掌握的东西太多了。
性能测试做深入了,基本上就是架构师的水平了。
可能你现在看着这个性能方向的学习一脸懵逼。
没关系、等你把上面的编程语言学会了你就不懵逼了。
安全方向
渗透测试
SQL注入
暴力破解
脱库
等等
其实安全测试基本上偏向于网络攻防了,也就是传说中的黑客了,不过我们都是好人,这个的发展方向就是白帽子。
推荐知道创宇的学习体系。
我估计你看到这里就更懵逼了。
没关系、等你把基础的东西学会就知道我在说啥了。
毕竟你现在还是一个小白嘛。
不要去纠结这种小事。
各位在这个阶段,正常情况都应该是中级测试工程师的水平了。
前三个阶段学习完成后,各位就应该考虑怎么写代码更合理了。
怎么去测试更全面。
怎么才能更好的保障项目的质量。
我认为,在这个阶段,应该回头重新学习一遍测试基础。
因为这个阶段的提高是思想、方法的提高了。
上面讲的都是教你应该怎么做。
在这个阶段你要自己去发现、为什么要那样做。
跨过了这个阶段就基本上可以成为专家了。
学习都是水到渠成的,在这个时候,你应该已经掌握了不少框架了,甚至自己也能开发合适的框架了。
自动化测试框架、性能测试框架等等。
已经有了属于自己的一套东西了。
在群里或者论坛上去装逼、别人都会尊称你一声大佬了。
可能你也学会了一些其他的技术了,甚至在往全栈等方向跨进了。
总之,到了这个阶段就没什么学习路线了。
相信你如果掌握了上图上面所有的知识技能,并且能够灵活的运用的话,月薪20k以上并不会是什么问题。