介绍下自己的测试历程吧,普通本科,毕业4年, 去年成功转型测试开发,总结一下测试心得。
平凡的大学生活
我大学期间属于并没有什么出众的,按部就班,老实办事的那种学生,我导师对我们那届的学生比较散养, 只要完成导师给的任务,毕业是问题不大的,所以学术产出一般(学术产出拿到校二等奖学金),一个专利+一个EI+一个DSP会议。
暑假就开始在实验室复习计算机网络、数据结构、C语言、操作系统、通信等知识,准备迎接8月份开始校园招聘。 而同实验室也有同学去报编程辅导班的,后面校招就去了大公司。
误打误撞从事测试岗位
校园招聘开始了,肯定优先考虑大厂呀,像华为、中兴、腾讯、百度、阿里等都投了简历(但是当时对bat并没有报希望,自己几斤几两清楚的很,所以只是贵在参与, 但是对中兴华为还是挺有信心的,主要是专业对口,而且做的准备工作充足)。
果不其然,阿里简历没过,腾讯百度笔试没过,至此bat全军覆没。当然我也并不意外。 接下来是华为面试,投的是技术支持岗,依稀第一轮面试问了很多通信专业知识, 这个回答的没啥大问题,但是也没有亮点。本以为能进入二轮面试,可惜没给机会。
说实话当时面试结束后挺失落了。毕竟准备了这么久,没想到二轮都没有进。接下来中兴测试岗位面试类似, 进了二轮,但是三轮没过,所以当时大家追逐的“大厂”都与我无缘。所以也开始准备各种“小众厂”。毕竟面试多了,经验也充足了,下定决心只投软件测试。
最终拿到了杭州的一家金融科技软件公司和成都的一家通信芯片公司软件测试岗位。 待遇杭州比成都的offer机会多了2000,加上杭州当时有高学历人才补贴,所以就去了杭州(为什么不留成都,虽然毕业时候已经决定将来在成都买房,但是当时想着外面工作几年后长长见识再回成都,没料到如今成都房价这么高,上车又难, 当然这是后话)。
初入职场
毕业来到公司,被分到公司的创新业务部门,测试小组6个人,就我一个新人。刚开始工作内容web测试, 也就是对着页面点点点,学习jmeter写各种测试用例(提升测试覆盖率,为了完成组内kpi要求 )。带我的是一个工作几年的同事,至今还记得参与第一个项目时候,测出一个bug时候还有点小兴奋。
但是工作了2个月不到,就开始对这种工作内容产生厌倦了,重复度太高,感觉自己就是个机器人 , 除了越来越熟悉业务,看不到太多成长,完全是浪费时间。
对,这是第一次遇到瓶颈!!!
克服第一次瓶颈:养成自动化思维
虽然当时是测试,但是我当时的认知是开发只是还是要学, 所以我平常下班后也会自学spring mvc,Java web编程、redis等似乎当时看起来没什么用的东西来充实自己,经常学习到凌晨,周末也花一天在家学习。(现在想想,当时也走了很多弯路, 学东西都是靠百度Google,没有系统性学习。虽然也掌握了些开发技能,但是并不牢固。)
对于测试上遇到的瓶颈,我就和同组的老同事交流,问他们是否也曾遇到类似的瓶颈,如何克服瓶颈期的? 有个同事的回答似乎一下子点醒了我,他说的就俩字“偷懒”。然后我就很好奇这是什么意思,怎么个偷懒法。然后就聊起来了Python,可以使用Python写测试脚本,比如造数据,结合selenium做ui自动化。这是我第一次听到Python, 通过他给我看的他写的批量造数据脚本瞬间生成成百上千条数据,当时感觉这玩意肯定有用,有大用处。
然后我就下班自学Python编程, 开始尝试写简单脚本,比如利用pymysql操作数据库,利用selenium做ui自动化。虽然当时老板在组内不鼓励做UI自动化,但是抱着好奇与学习的心态还是自学了下,也基于项目开发了case。但结果不出所料, 需求变动频繁不适合做UI自动化,利用selenium写自动化以及维护自动化用例成本太高,所以没有解决手工测试重复度高的根本问题。
但是通过学习Python和UI自动化,提升了认知,原来很多工作是可以通过Python代码解决的, 对这就是自动化思维(虽然也学习过Java,但是诚心讲,它不适合写批量的测试脚本) 。后面的工作就养成了一种思维,遇到重复度高的内容(重复度>3),第一时间去思考是否能通过自动化手段解决。
克服第二次瓶颈:进入大厂
转眼工作了快一年半,虽然年中绩效还不错,而且还拿了部门的一个测试奖,但是觉得在团队里很难再提升了, 因为当时能接触到的开发相关知识、运维知识自己也都熟悉一些,还有就是当时测试在项目中话语权低,部门老板不太重视,测试很难推行一些质量改进工作,所以觉得自己可以看看更大的平台。 (因为我们团队测试经常出差驻场甲方爸爸,像搭环境、部署产品、问题解决都是测试一个人搞,简直把自己逼成了“全能王”)。
开始准备面试:网上找各种测试面试经验、面试问题。也针对几个中意的大厂找了面经。
然后投了xx银行、OPPO、字节跳动。对,都在上海,经常出差上海的我慢慢喜欢上了这座城市, 与其出差来这里,不如工作在这里。
xx银行最早面试,周六从刚杭州坐高铁现场面试,一次性三面,当时的老板对我比较满意,给我聊了下他们团队的规划,团队的实力(有很多大厂背景的), 但是给的薪资,考虑到上海物价,扣除花销等于从杭州平移到上海,所以我放弃了这个offer。
然后就是OPPO,字节跳动,这两家公司几乎是同时在面试,最终先拿了字节跳动的offer,OPPO终面也就放弃了,和他们hr说明了原委。
克服第三次瓶颈:转型测开
来到字节跳动,老板也很好, 他也给予很多帮助和成长机会,比如团队管理、自动化测试以及参加测开大会、对外的学习与交流。字节期间最大的成长就是承担团队自动化测试owner, 推动了我们团队从手工测试向自动化测试转型。
来到字节一年,有过一次涨薪,不得不说, 字节对于付出多、高产出的员工真的是很大方,真的不差钱,涨薪幅度也是挺豪气。
上海虽好,但是上海这座城市购房压力太大,结合自己实际情况,还是决定去成都发展,虽然不舍字节, 但是还是要考虑未来的生活质量。
然后就开始寻求公司内部转岗的机会,看到成都有互娱团队测试/测开机会,就和老板沟通了一下意向, 很欣慰他也遵循我的意愿同意我转岗。
第一次测开转型尝试-内部转岗XX团队,虽说是内部转岗,但是面试难度丝毫没有降低,因为前期在头条圈看到的转岗率多高多高的帖子,所以这次转岗并没有针对性XX团队侧重的技术面 (偏移动端,而我工作内容web中台、工具开发,在字节几乎没接触移动端)做一些准备,最终结果也是不好的,面试没通过, 至今觉得挺遗憾的,如果做足准备,转岗概率还是蛮高的。
第二次测开尝试-尝试阿里巴巴测开,第一次的失利,总结了很多经验,也为后面进入阿里打下了基础。 比如多线程、高并发、leetcode、spring mvc等,这些都是测开岗必考题,一面问的技术问题更多些,二面回结合项目穿插一些技术方面的问题, 例如如何利用xx技术解决高并发的问题等,简单贴一下部分面试题目。
1.了解多线程吗?了解Python的GIL锁吗?
2.说一下进程和线程
3.线程安全
4.进程间通信的方式有哪些?
5.程间通信?
6.说一下什么是乐观锁和悲观锁?
7.AOP
8.什么是IOC?
9.list和map相关
10.解释一下工厂模式?
11.内存泄漏
12.性能测试
13.会做性能测试吗?容量测试/稳定性测试?
14.线程间的通信机制
最终如愿以偿拿到offer,在成都已经很知足了。除了薪资,更重要的是测试开发的机会,毕竟阿里在业界质量保证基础建设是相当完善的,能够在阿里接触更多成熟的测试技术和来自项目上的挑战。
开始灌鸡汤啦
1.瓶颈普遍存在
感谢瓶颈,瓶颈就是机会。
每个人在发展过程中,都会遇到各种瓶颈,有瓶颈是好事,表示你渴望成长,只要多和身边的“高阶“同事多沟通,多听建议,他们是可以给到你很多帮助的。
2.选择很重要,努力更重要
没有努力谈选择等于空谈!!!
选择一个平台很重要,遇到一个好老板更重要,但是前提是你要准备好给你选择机会的“基础”,真的很感激Z哥。
3.持续学习决定你能走多远
养成持续学习的习惯。
学历只能代表过去,工作上更重要的是要不断学习。持续学习能力决定一个人能走多远,它主要体现在:归纳分析能力;思维创造力;时间管理能力;自律能力等方面,养成这些习惯,对于一个人的成长至关重要,也是克服成长路上遇到瓶颈的“杀手锏”。
4.多学博客多记录工作历程
Writing is Thinking。所写即所思。
你是不是有时候感觉很懂一个东西,但是给别人分享时候,却表达的不怎么样。其实根因就是你并没有想象的那样了解了一个技术。尝试把它们写出来吧。
5.“三思而行”
在大公司,牛人很多,你的所思/问别人的问题决定别人对你的看法。
浅显的问题无需提,要锻炼看问题本质的能力,多问一些深刻的问题。
建议大家遇到每个问题 都先说服自己,多问一下自己这是what、为什么是这样why,怎么解决How。
下面分享我整理的这份2023年可能是最全的软件测试工程师发展方向知识架构体系图。
一、测试基础
了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维
二、Linux必备知识
Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力。
三、Shell脚本
掌握Shell脚本:包括Shell基础与运用、Shell逻辑控制、Shell逻辑函数
四、互联网程序原理
自动化必经之路:前端开发基础知识以及互联网网络必备知识四、互联网程序原理
五、MySQL数据库
软件测试工程师必备MySQL数据库知识,不仅仅停留在基本的“增删改查”。
六、抓包工具
Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用于各种项目,总有一款适合你的
七、接口测试工具
接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman
八、Web自动化测试Java&Python
了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理
九、接口与移动端自动化
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用
十、敏捷测试&TestOps构建
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心
十一、性能测试&安全测试
软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!
看完这篇内容后,相信以下两件事,也会对你的个人提升有所帮助:
1、 点赞,让更多人能看到这篇文章,同时你的认可也会鼓励我创作更多优质内容。
2、 让自己变得更强:想一想,如果你想在测试这个行业一直做下去,你的经验和测试技术是远远不够的,你需要进阶,你需要丰富你的技术栈!还等什么!
资源分享
下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取