“终于我从字节离职了...“一个年薪50W的测试工程师的自白...

Posted 美团程序员

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“终于我从字节离职了...“一个年薪50W的测试工程师的自白...相关的知识,希望对你有一定的参考价值。

我递上了我的辞职信,不是因为公司给的不多,也不是因为公司待我不好,但是我觉得,我每天看中我憔悴的面容,每天晚上拖着疲惫的身体躺在床上,我都不知道人生的意义,是赚钱吗?是为了更好的生活吗?但是我认为我想要的生活不是每天从早忙到晚,不是每天面对电脑面对工作,我的大好时光已经一半奉献给工作了,我应该要去体验我想要的生活了,我应该去看看山川河海,去看看生活的美好,去遇见一个更加光彩亮丽的自己,而不是现在蓬头垢面,一脸憔悴,所以我辞职了......"这是一位从字节离职的年薪50w的测试工程师的自白。

很多人对我的字节经历感兴趣,我这里跟大家分享一下吧

选择去字节的原因有以下几点:

从岗位来看,字节算是一线大厂,进去体验学习,顺便镀个金

自己内心对自己的认可,能通过字节的技术面,不能说很牛,但起码也不算个水货

我父母希望我在一个“体面”点的地方工作…字节在他们圈子里说出去还是挺体面的,而且显得子女很拼搏奋斗

总之以上种种原因,我认真准备了一番…最终通过了字节的面试,当时心里还是很开心的,薪资也很满意。

之间完成了一次晋升,换了一家公司,有过开心满足的时光,也有过迷茫挣扎的日子,不过还算顺利地从一只职场小菜鸟转变为了一名资深划水员。

一、从认为是上天眷顾到不适应
刚入职的几天,兴致还十分高昂,和一起入职的同事熟悉公司环境,还帮他解决了一些技术上的问题……然而在接下来的两个月,尽管我有心理准备,但还是非常的不习惯。

感觉对整个文化和大家的行事风格还是非常不适应。

首先是会议多,一个会经常一开就是2小时,而且大家都很喜欢插嘴拖慢会议进度,三句话能数清楚的小问题被塞入了各种高大上的词组重组成了一篇篇的大作文,几个会开下来我感觉我人傻了,真是一种完全懵逼的感觉!

与此同时,刚入职不久我就被指派了好几块业务。之后和这些业务有关的人出了问题全都来找你,每天有两位数的人来找你解决问题简直家常便饭……而我本身也是新人,很多事情不了解,刚入职师兄又被调配到了别的线,感觉挺孤立无援的,把问题抛出去寻求组内帮助,得到的也经常只是“你不了解这块业务就去尽快了解啊”的回复……

没办法,只能硬着头皮啃,因为字节内部用得很多都是自建的工具库、框架,有不少工具文档也确实不咋地,很多时候要找维护人直接去问。然后你一问,对方看你新人,大概率就是几个小时的已读不回……总之解决问题很吃力且低效,还经常直接被人怼。

 

二、果断离职
在这期间我还接了另一个测试,本来测试是一个小东西,但结果测着测着我发现和说好的不一样啊,很多应该已经测完的东西全都没弄。于是我向其他组员抛出了这个问题,得到回复是“你测一下吧,顺便把某块xxx也重测下。”结果本来的一个小问题变成了一个略恶心的炸弹,最终好不容易算是搞定了。再看了看一起入职的同事,感觉他们负责的工作就比我这边好对付不少,这也让我原本不稳定的心态更加炸裂。

这样的情况持续了一个月之后。某一天晚上我便找熟人打听了一波情况,他一听到我负责的业务,立马条件反射性地来了句“这是个屎盆子啊”。我当时一惊,这才发现我负责的这些业务中有好几块都是公认的坑,属于琐碎需求极多深坑不少,而且很难测出啥成果的。

得知了这个消息后,我晚饭后在楼下溜了一大圈希望能够冷静下,但感觉越想越头疼,重新上楼,打开电脑,钉钉又是一大堆未读消息。大致扫了一眼,满屏尽是:

“帮忙看看啊”、“我们xxx出了问题快点帮忙解决下”、“你测试下xxx”、“用你们的xxx出了问题,你帮忙看看啊”,以及几个群的满屏幕正能量大拇指…

当时就感觉倒吸一口凉气,精神恍惚。其实前几天就有了上班如上坟的感觉,每天都感觉有一个鬼影子跟着自己,大脑时刻都处在一个高压紧绷的状态。尽管这些事情我应该可以继续硬抗一段时间,但这样的做事风格我是真的不喜欢,感觉出了问题每个人都是想办法甩锅,找责任人。我不认为自己可以转变成一个能够与这种氛围相符的人,于是当晚回去后便思考了下决定离职!

 

在这个过程中,总结出了一些还算实用的划水经验,有些是自己领悟到的,有些是跟别人交流学到的,在这里跟大家分享一下。

我给的建议也差不多,如果你现在在外包公司,多学习争取把自己的技术提升上来,你还要明确自己的职业规划,这样你才有跳槽的资本,才有跟别人竞争的机会。

一、学会深入思考,总结沉淀

我想说的第一条就是要学会深入思考,总结沉淀,这是我觉得最重要也是最有意义的一件事。

先来说深入思考。在程序员这个圈子里,常能听到一些言论:我这个工作一点技术含量都没有,每天就 点点点,这 TM 能让我学到什么东西?抛开一部分调侃和戏谑的论调不谈,这可能确实是一部分同学的真实想法,至少曾经的我,就这么认为过。后来随着工作经验的积累,加上和一些高 level 的同学交流探讨之后,我发现这个想法其实是非常错误的。

之所以出现没什么可学的这样的看法,基本上是思维懒惰的结果。任何一件看起来很不起眼的小事,只要进行深入思考,稍微纵向挖深或者横向拓宽一下,都是足以让人沉溺的知识海洋。

再来说下总结沉淀。这个我觉得也是大多数程序员比较欠缺的地方,只顾埋头干活,可以把一件事做的很好。但是几乎从来不做抽象总结,以至于工作好几年了,所掌握的知识还是零星的几点,不成体系,不仅容易遗忘,而且造成自己视野比较窄,看问题比较局限。

适时地做一些总结沉淀是很重要的,这是一个从术到道的过程,会让自己看问题的角度更广,层次更高。遇到同类型的问题,可以按照总结好的方法论,系统化、层次化地推进和解决。

举一个例子。做后台服务,今天优化了 1G 内存,明天优化了 50%的读写耗时,是不是可以做一下性能优化的总结?

比如说在应用层,可以管理服务对接的应用方,梳理他们访问的合理性;在架构层,可以做缓存、预处理、读写分离、异步、并行等等;在代码层,可以做的事情更多了,资源池化、对象复用、无锁化设计、大 key 拆分、延迟处理、编码压缩、gc 调优还有各种语言相关的高性能实践...等下次再遇到需要性能优化的场景,一整套思路立马就能套用过来了,剩下的就是工具和实操的事儿了。

还有的同学说了,我就每天跟 PM 撕撕逼,做做需求,也不做性能优化啊。先不讨论是否可以搞性能优化,单就做业务需求来讲,也有可以总结的地方。比如说,如何做系统建设?系统核心能力,系统边界,系统瓶颈,服务分层拆分,服务治理这些问题有思考过吗?每天跟 PM 讨论需求,那作为技术同学该如何培养产品思维,引导产品走向,如何做到架构先行于业务,这些问题也是可以思考和总结的吧

所以说学习和成长是一个自驱的过程,如果觉得没什么可学的,大概率并不是真的没什么可学的,而是因为自己太懒了,不仅是行动上太懒了,思维上也太懒了。

可以多写技术文章,多分享,强迫自己去思考和总结,毕竟如果文章深度不够,大家也不好意思公开分享。

二、积极学习,保持技术热情
最近两年在互联网圈里广泛传播的一种焦虑论叫做 35 岁程序员现象,大意是说程序员这个行业干到 35 岁就基本等着被裁员了。不可否认,互联网行业在这一点上确实不如公务员等体制内职业。但是这个问题里 35 岁程序员并不是绝对生理意义上的 35 岁,应该是指那些工作十几年和工作两三年没什么太大区别的程序员。后面的工作基本是在吃老本,没有主动学习与充电,35 岁和 25 岁差不多,而且没有了 25 岁时对学习成长的渴望,反而添了家庭生活的诸多琐事,薪资要求往往也较高,在企业看来这确实是没什么竞争力。

而如果我们积极学习,保持技术能力、知识储备与工作年限成正比,这到了 35 岁哪还有什么焦虑呢,这样的大牛我觉得应该也是各大公司抢着要吧?但是学习这件事,其实是一个反人类的过程,这就需要我们强迫自己跳出自己的安逸区,主动学习,保持技术热情。在滴滴时有一句话大概是,主动跳出自己的舒适区,感到挣扎与压力的时候,往往是黎明前的黑暗,那才是成长最快的时候。相反如果感觉自己每天都过得很安逸,工作只是在混时长,那可能真的是温水煮青蛙了。

刚毕业的这段时间,往往空闲时间还比较多,正是努力学习技术的好时候。借助这段时间夯实基础,培养出良好的学习习惯,保持积极的学习态度,应该是受益终身的。至于如何高效率学习,网上有很多大牛写这样的帖子,到了公司后内网也能找到很多这样的分享,我就不多谈了。

大家在学习过程中还是要好基础,多上手实操,话不多说,这里再上一次干货!这是我整理好的各阶段技能学习资料+实操讲解,适合私下里学习,比找资料自学高效多了,分享给你们需要资料

三、主动承担,及时交流反馈
前两条还是从个人的角度出发来说的,希望大家可以提升个人能力,保持核心竞争力,但从公司角度来讲,公司招聘员工入职,最重要的是让员工创造出业务价值,为公司服务。

虽然对于校招生一般都会有一定的培养体系,但实际上公司确实没有帮助我们成长的义务。而在能为公司办成事,创造价值这一点上,我觉得最重要的两个字就是主动,主动承担任务,主动沟通交流,主动推动项目进展,主动协调资源,主动向上反馈,主动创造影响力等等。

我当初刚入职的时候,基本就是 leader 给分配什么任务就把本职工作做好,然后就干自己的事了,几乎从来不主动去跟别人交流或者主动去思考些能帮助项目发展的点子。自以为把本职工作保质保量完成就行了,后来发现这么做其实是非常不够的,这只是最基本的要求。

而有些同学的做法则是 leader 只需要同步一下最近要做什么方向,下面的一系列事情基本不需要 leader 操心了 ,这样的同学我是 leader 我也喜欢啊。入职后经常会听到的一个词叫 owner 意识,大概就是这个意思吧。

在这个过程中,另外很重要的一点就是及时向上沟通反馈。项目进展不顺利,遇到什么问题,及时跟 leader 同步,技术方案拿捏不准可以跟 leader 探讨,一些资源协调不了可以找 leader 帮忙,不要有太多顾忌,认为这些会太麻烦,leader 其实就是干这个事的。

如果项目进展比较顺利,确实也不需要 leader 介入,那也需要及时把项目的进度,取得的收益及时反馈,自己有什么想法也提出来探讨,问问 leader 对当前进展的建议,还有哪些地方需要改进,消除信息误差。做这些事一方面是合理利用 leader 的各种资源,另一方面也可以让 leader 了解到自己的工作量,对项目整体有所把控,毕竟 leader 也有 leader,也是要汇报的。

可能算是大家比较反感的向上管理吧,有内味了,这个其实我也做得不好。但是最基本的一点,不要接了一个任务闷着头干活甚至与世隔绝了,一个月了也没跟 leader 同步过,想着憋个大招之类的,那基本凉凉。

一定要主动,可以先从强迫自己在各种公开场合发言开始,有问题或想法及时 one-one。

四、一套系统提升学习的好资料
最后就是需要一套系统提升的好资料来提升自己的综合技术能力了!
做为一名测试人,我想分享一下这些年来,我对于技术一些归纳和总结,和自己对作为一名高级自动化测试需要掌握那些技能的笔记分享,希望能帮助到有心在技术这条道路上一路走到底的朋友!

内容涉及:测试理论、Linux基础、mysql基础、Web测试、接口测试、App测试、管理工具、Python基础、Selenium相关、性能测试、LordRunner相关等

一、测试基础
了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维

 

二、Linux必备知识
Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力。

Linux必备知识

Linux系统简介与准备Linux作为现在最流行的软件环境系统,一定得会,从CenterOS版本系统进行介绍,安装,目录结构等基础内容学起,也为后续自建测试环境准备。

Linux远程工具Xshell详细介绍如何入门使用Linux,并进行常规的远程管理,文件传输操作,涉及其中的工具Xshell,Xftp

Linux文件属性与管理Linux文件,目录基本属性,文件操作,文件管理,目录操作,目录管理。切忌自毁行为操作,如何预防意外操作

Linux用户与组管理如何在Linux中新增,删除,修改用户与组,并赋予相应权限,不再因为权限问题而卡壳

Linux文件编辑器Linux文件编辑器vi的使用,命令模式,输入模式,操作实例,快捷键,管道命令,使用心得。在一个没有图形化的系统下到底如何编辑的呢?

Linux常用系统设置网络设置,环境变量,磁盘管理,时间设置,系统资源,防火墙,应有尽有,不用担心毫无头绪。

Linux安装软件Linux安装命令,以及如何通过tar,gz等网络上下载的安装文件进行安装,如MySQL数据库安装。

Linux Docker容器Docker容器技术讲解,image镜像管理,仓库,容器创建,启动,操作,镜像打包,赶上行业流行技术

三、Shell脚本
掌握Shell脚本:包括Shell基础与运用、Shell逻辑控制、Shell逻辑函数

Shell

Linux Shell基础与应用shell脚本编程介绍,环境类型,变量,参数,运算符,数组的使用,零距离接触脚本

Linux Shell逻辑控制shell逻辑应用,test命令,流程控制,数据输入与输出,脚本逻辑不再单调,玩出花样

Linux Shell函数shell脚本函数写法,文件互相调用,脚本实战应用,懂得开发,测试,运维都可以做什么

Windows脚本批处理Linux玩够了,再来看看Windows常规命令用法,批处理脚本写法,实战应用,并不是到哪都是Linux,Windows脚本也是常用脚本之一,看到这里可能你就用的Windows

四、互联网程序原理
自动化必经之路:前端开发基础知识以及互联网网络必备知识四、互联网程序原理

互联网程序原理

Web前端开发基础html、CSS基本内容学习。为什么测试课程有开发?对不起,如果不会,自动化可能不欢迎,很多自动化测试问题都出自于开发基础

Web前端开发脚本javascript最主流的脚本学习,同样的,这也会在自动化测试中涉及,在一些工具中其实也经常用到动态脚本,也是JavaScript语言

开发者调试工具测试应用虽然浏览器的F12被命名为开发者工具,但实际上测试不管在功能测试还是自动化测试中,都起到了很关键的作用。如解析HTML,定位元素,调试脚本,监控网络抓包等等

互联网程序网络架构通过网络架构详细理解互联网程序的诞生,逻辑细节,互联网通讯原理又是如何将数据传递到其他计算机的,TCP,UCP,HTTP,等等协议的关系又是什么。

HTTP协议数据结构分析完整解析HTTP协议数据结构,包括Request、Response数据格式,Header的定义和用法各种状态代表什么,如何辨别错误。分析协议中参数的位置,rest结构,各种常见的body数据形式,解析方式,常见数据解析错误的原因。

Cookie与Session机制解读Cookie到底是什么,和Session存在什么样的关系,如何测试Cookie与Session,需要注意什么

五、MySQL数据库
软件测试工程师必备MySQL数据库知识,不仅仅停留在基本的“增删改查”。

MySQL数据库

MySQL数据库测试应用MySQL环境搭建,客户端Navicat的基本使用与数据操作,学习并巩固基本的SQL语法,增删改查缺一不可,掌握各种条件的使用方法

MySQL高级查询查询升级,掌握多表查询,子查询,查询分组,统计函数的使用,并对经典面试题进行学习与分析

MySQL自定义函数既然有内置函数,当然也不缺自定义函数的位置,也是经常会使用到的,这就好比任意一种开发语言一样都离不开函数的定义与使用

MySQL存储过程SP数据库必不可少的存储过程,通常也叫SP,如何定义?如何测试?怎么样使用更安全,测试到底用存储过程还能做什么更多便于测试的内容

MySQL事物与编程数据库事务使用案例,索引的原理与使用,数据库SQL编程在测试中的应用,如何用其快速精准的产生大量指定的测试数据

六、抓包工具
Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用于各种项目,总有一款适合你的

抓包工具

抓包原理与方式只有了解抓包的原理,才能真正去用好一个适合的工具,选择合适的方向和方法,否则都是徒劳的

抓包工具选择抓包工具的分类与功效,什么样的项目适合哪种工具,如何去辨别工具的优势

Fiddler基础功能作为专业的HTTP体系的抓包工具,详细介绍其工具原理,如何过滤数据,如何搜索想要的数据,如何对web,非web,手机,HTTPS协议等各种环境进行抓包

Fiddler高级功能学会使用其进行接口测试,断电,脚本等方式进行数据的修改,替换,模拟数据进行接口Mock测试,创建自己定义的菜单功能

Wireshark与其说是抓包,更是一种抓包后的分析工具,在各个系统下利用其它与系统一体化的抓包工具进行数据抓取整理并展示,有着强大的过滤和分析功能

Sniffer黑科技抓包工具,有多种版本,非常专业的抓包工具

TcpdumpLinux、android系列的系统中的抓包插件神器

七、接口测试工具
接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman

接口测试工具

Jmeter接口测试入门Jmeter简介,环境准备,目录结构介绍 ,如何录制脚本,以及基础组件的使用,线程、作用域、HTTP请求、定时器、断言等等

Jmeter接口测试进阶使用Jmeter逻辑控制、前置处理器、后置处理器、监视器、结果树,如何参数化、正则表达式关联、事务、检查点等等。并带领大家对带有token等动态数据的项目进行实战演练

Jmeter接口测试高级功能Jmeter脚本思考时间、随机时间、线程启动间隔、并发集合点、联机远程调用,webservice、websocket、jdbc、命令调用等等

Postman接口测试工具使用行业标准HTTP、rest接口测试神器,基本请求、分组保存、动态变量、脚本、数据关联、参数化、自动断言、批量运行、持续集成。思路类似其他接口工具,避免泛滥学习

八、Web自动化测试Java&Python
了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理

Web自动化测试Java&Python

自动化框架思路引导我们做自动化到底为了什么?节省人力、加快速度、还是让机器代替手动、还是提升自我。应该如何建立思路,而非无脑进坑任机器摆布

Java&Python3开发环境及基本语法Java&Python开发环境搭建,基础语法入门,让不会代码的以最快速度入门,方便适应后续自动化测试开发内容学习,代码够用即可,并不是学得越多越好

Java&Python3集合类型与面向对象开发Java&Python各种基本类型、集合数据类型的理解与操作,循环语句、判断语句,面向对象的开发,函数的使用,类的使用

Selenium3环境与浏览器驱动配置基于selenium3的web自动化环境搭建,正确的浏览器配置,不再为起不了浏览器而烦恼。支持IE、Firefox、Chrome等等

Selenium3多种定位及动态操作selenium3常见定位方法,属性和值的获取,如何动态判断不一定存在的元素,复杂的网页结构,需要多步骤操作的元素等等

特殊情况处理(js、特殊控件等)selenium3自动化测试中,常见的特殊情况处理,如日期、控件、智能等待、文件上传下载、网页嵌套结构,各种弹窗的处理方式,cookie处理,JavaScript脚本调用等

TestNG&unittest自动化框架使用Python unittest、Java TestNG自动化框架的使用,环境处理、基本使用逻辑,数据驱动模型,数据库数据载入等

自动化框架断言与日志处理自动化中最重要的是什么?作为测试当然是断言,没有断言的自动化毫无用处,如何展示日志与结果是自动化测试的根本

PageObject框架设计模式PageObject框架设计模式,到底是做什么的?如何更好的快速管理控件,从此做起

九、接口与移动端自动化
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用

接口与移动端自动化

接口自动化方案RequestsPython Requests、Java HTTPclient接口框架,都是专业的接口调用、测试的解决方案,使用简单快速,结合工具的使用方式和功能,快速上手并对其操作,解决其中的疑难杂症

web+自动化框架整合自动化测试是相通的,如何将web与接口、甚至更多的测试类型和方向结合起来,组成完整的自动化框架

Appium环境搭建Appium环境相对复杂,针对Android系统进行完整的环境搭建演练,解决环境上的问题,并进行基本的自动化操作

Appium自动化实战与框架结合Appium整体使用与web自动化类似,引导使用典型功能,并针对一款APP进行实战操作

十、敏捷测试&TestOps构建
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心

敏捷测试&TestOps构建

构建敏捷测试运维架构体系敏捷测试是什么?为什么需要敏捷,行业都提到的devops又是什么?TestOps能做什么

持续集成Jenkins框架实战持续集成最常见的一套框架,介绍Jenkins操作、权限、系统管理等,常用构建与运行实例讲解

静态扫描测试Sonar一款自动化的代码扫描工具,便捷式快速扫描代码中的问题,做到提前发现,统一规范,自动化中的代码测试神器

十一、性能测试&安全测试
软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!

性能测试&安全测试

性能测试学习路线如何学习性能测试,性能测试到底该怎么学习,使用什么工具?工具并不代表性能,接口的基础对性能测试非常重要,而工具只是辅助,更多的是思路和策略。你不会并不是分析而是准备阶段

loadrunner脱离浏览器录制专题IE无法启动被测网站?打不开浏览器?程序无法在浏览器中被打开?这些都没关系,还是一样能录制,但录制是偷懒专用的,对于学习有一定的辅助作用,也会带入无法脱离的坑

性能测试工具操作实践loadrunner、jmeter,有了前面的基础使用,看懂脚本不是问题,带上关键的参数化、动态数据关联、事物、日志,大部分的脚本都可以搞定进行实践

系统监控方案实施工具自带监控?系统监控?JVM内部监控?数据库监控?各种监控的意义何在,如何在各种情况下精准监控数据

安全测试起源与工具介绍应该如何进行安全测试,安全测试都有哪些分类?都会用到什么样的工具,各自的作用又是什么,如web漏洞扫描,端口扫描,系统扫描等

web安全测试手工实战接口测试在安全中的作用,不会手动的安全测试,那就永远无法理解自动化以后产出的结果

安全扫描工具测试实践实际介绍以及使用APPscan、awvs等专业安全扫描工具

企业安全建设(SDLC)企业应该如何进行安全建设,制定更安全的软件生命周期。从哪些方面进行着手

【视频教程资源】

 

 最后允许我对你们说一段话:
如果你也在往自动化测试开发方向发展
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势
我的自动化测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了以上的《自动化测试工程师进阶路线》,也整理了不少【网盘资源】,需要的朋友可以扫描下方小卡片获取网盘链接。希望会给你带来帮助和方向。

 

Python测试岗实战进阶,技能对标大厂P6+,年薪轻松40W+!

自2018年被评选为编程语言以来,Python在各大行业榜上一直是名列前茅。随着该变成语言的广泛使用,基于Python的自动化测试框架也应运而生,且不断发展与丰富。

而软件测试行业发展到现在,有几个显著的变化:

1、薪资结构显著提升

以BAT为代表的互联网大厂对中高级测试岗位要求几乎全部转为测试开发,通常年薪30W+起,年薪50W+—100W+也很常见,甚至超越同级别研发人员。

2、职业门槛显著提高

之前对于测试岗位只要会写测试用例,能部署环境、执行测试用例,并进行相应的bug跟踪和项目管理就可以了,现在却截然不同。

各种编程语言、一大堆技术工具和相关项目经验成为招聘必备要求。

3、测试岗招人困难

很多测试经理反馈,测试岗位招人越来越难。

传统测试人员受技术栈限制、疫情影响承受着求职困难甚至裁员压力,急需技术能力迭代升级。在这里插入图片描述
因此,在互联网业务快速迭代和持续交付/测试要求下,测试开发工程师需要不断的充电学习,找一个优秀、无私的“教练”是成功的关键,否则自己很难突破进阶,起码在段时间内是绝对不可能的。

这边我也分享一个自动化测试进阶的大神群 644956177 给大家,有需要的可以在群内向大神了解学习相关知识。

而在自动化测试进阶道路上,Tytest与CI可以说是重中之重,完全掌握好该阶段的所有能力,基本可以实现薪资涨幅10%-20%左右。

在这里插入图片描述
想当初,我再这块的学习也花了大工夫,就是为了实现薪资翻倍的目的,今天,就来和大家分享一下当时我学习fixture的路径。

1、什么是fixture

✔ fixture是在测试函数运行前后,由pytest执行的外壳函数;

✔ 它的作用是将一些非核心测试逻辑从测试函数分离出来,以便于其他测试函数使用,同时保持这些边缘逻辑的一致性;

✔ fixture中的代码可以进行定制,满足多变的测试需求,包括:包括定义传入测试中的数据集,配置测试前系统的初始状态,为批量测试提供数据源等等…

总起来说,fixture是pytest用户将测试前后进行预备、清理工作的代码分离出核心测试逻辑的一种机制。

2、fixture定义

通过一个例子来看下fixture的定义:

import pytest
@pytest.fixture()
 def cema1 ():
     return'小dao'
def test_1 (cema1):
   print (cema1)
if_name  =='_main_'
pytest.main (['-s'])

3、 fixture函数存放的位置

✔ 如果你希望fixture函数的作用域仅限于某个测试文件,那么将它写在该测试文件中;

✔ 如果希望fixture被多个测试文件共享,可以在公共目录下创建一个conftest.py文件,将fixture放在其中。

#./conftest.py配置的fixture
  import pytest
  
@pytest.fixture ()
  def cema2():
  return '小dao'
  
#./test_ for pytest.py读取
  conftest.py配置的fixture
    import pytest
     
 def test_1(cema2):
print (cema2)

if__name__== '__main__':

pytest.main (['-s'])

4、fixture执行和销毁的逻辑

下面查看一下fixture中关于setup与teardown的执行和销毁的逻辑:在这里插入图片描述
在这里插入图片描述

运行日志:

================= test session starts =============

platform win32 – Python 3.7.4, pytest-5.4.1, py-1.8.1, pluggy-0.13.1

sensitiveurl: .*

rootdir: D:\\PyProject\\pytestforclass

plugins: base-url-1.4.1, forked-1.1.3, html-2.1.1, metadata-1.8.0, selenium-1.17.0, variables-1.9.0, xdist-1.31.0

collected 4 items

test_for_pytest.py class外的setup-module:test_for_pytest

class外的setup-function:test_1

class外的测试用例1

.class外的teardown-function:test_1

class外的setup-function:test_2

class外的测试用例2

.class外的teardown-function:test_2

class内的setup_class:TestDemo

class内的teardown_method:test_cema1

class内的setup

这是class内的测试函数1

.class内的teardown

class内的teardown_method:test_cema1

class内的teardown_method:test_cema2

class内的setup

这是class内的测试函数2

.class内的teardown

class内的teardown_method:test_cema2

class内的teardown_class:TestDemo

class外的teardown-module:test_for_pytest

=================4 passed in 0.05s =============

从执行结果看到,测试函数被夹在中间,pytest将每一个fixture的执行分成SETUP和TEARDOWN两部分。

5、fixture传递测试数据

fixture非常适合存放测试数据,可以返回任何数据,尤其是针对接口测试的时候,需要传入很多组不同的测试数据的的情况。

6、fixture的作用范围

fixture包含一个叫scope(作用范围)的可选参数,用于控制fixture执行和销毁逻辑的频率。@pytest.fixture()的scope参数有4个值:function、class、module、session,默认为:function。

示例:scope='function’

函数级别的的fixture每个测试函数只需要运行一次。配置代码在测试用例运行之前运行,销毁代码在测试用例运行之后运行。

#./conftest.py配置的fixture
    import pytest
    
@pytest.fixture(scope='function ')
     def cema2():
     return  '小dao'

import pytest

#./test pytest.py调用配置的fixture
  def test_1(cema2):
   print (cema2)
   if__name__=='__ main':

  pytest.main (['-s'])

当然,这只是自动化测试进阶路上,其中一个重要的知识点。不能说学会了这个点就可以进阶,前期也需要对基础知识深层次的学习与巩固,让你能够在工作中运用得更熟练,这样才能万无一失。

在这里还是要推荐下我自己建的Python自动化学习群:644956177 ,群里都是学Python自动化测试的,小编欢迎你加入,大家都是测试开发党,不定期分享干货,包括我自己整理的一份2021最新的Python自动化资料。

而在我的进阶之路上,群里真的帮助了我很多很多,大神们都会积极的解答你的每一个疑惑,并且也能给到很多学习技巧和学习方法,在进阶的道路上都是很有帮助的。

以上是关于“终于我从字节离职了...“一个年薪50W的测试工程师的自白...的主要内容,如果未能解决你的问题,请参考以下文章

从银行柜员到点工...一路从做到现在年薪50W,我的身上没有神话,但这条精准的职业规划一定也适合现在的你

测试工作2年,90后是怎么折腾出「年薪50w」的?

测试2年,年薪50W,这让开发情何以堪!

年薪50W测试大牛,分享测试开发基础知识

年薪50w阿里P8亲自下场,教你如何从测试进阶

UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答