职场四年,关于我的测试旅程...

发布时间:2023-05-22 09:27:31

介绍自己的考试过程,邮电大学通信硕士,毕业4年,去年考试开发成功转型,周末总结考试经验。

1.平凡的大学生活

在我的大学里,我属于那种没有什么突出的学生,一步一步地诚实地工作。我的导师比较放养我们的学生。只要我们完成了导师给我们的任务,毕业就不是什么大问题。因此,学术产出一般(学术产出获得学校二等奖学金)、专利+EI+DSP会议。

研究结束时,我在4月至5月开始准备学校招聘。当时,由于编程能力不突出,我决定投资于编码能力要求较低的技术支持和软件测试相关职位。暑假期间,我开始在实验室复习计算机网络、数据结构、C语言、操作系统、通信等知识,并准备在8月份开始校园招聘。在同一个实验室里,一些学生去报名参加编程补习班,然后学校招聘去了一家大公司。

2.误从事测试岗位

校园招聘开始了,必须优先考虑大工厂,如华为、ZTE、腾讯、百度、阿里等投简历(但当时没有希望,他们几公斤很清楚,所以只是昂贵的参与,但对ZTE华为相当自信,主要是专业对口,准备充分)。果然,阿里的简历没有通过,腾讯百度的笔试也没有通过,到目前为止,bat已经全军覆没。当然,我也不惊讶。接下来是华为面试,投资了技术支持岗位。第一轮面试隐约问了很多通信专业知识。这个答案没有大问题,但也没有亮点。我以为我可以进入第二轮面试,但我没有给机会。说实话,面试结束后我很失落。毕竟准备了这么久,没想到二轮都没进。接下来中兴考试岗位面试差不多,进了两轮,但是三轮没过,所以当时大家追的“大厂”都错过了我。因此也开始准备各种“小众厂”。毕竟面试多了,经验充足,下定决心只投软件测试。最后,我在杭州获得了一家金融科技软件公司和成都一家通信芯片公司的软件测试职位。杭州offer的待遇比成都好,也是自己喜欢的互联网行业,加上当时杭州有高学历人才补贴,所以去了杭州。

3.初入职场

毕业后,我来到公司,被分配到公司的创新业务部门。测试组有6个人,我是唯一的新人。在工作内容网络测试的开始,也就是说,学习Jmeter编写各种测试用例(提高测试覆盖率,以满足小组kpi的要求 )。我是一个工作了几年的同事。我还记得当我参加第一个项目时,当我测量一个bug时,我有点兴奋。

 

职场四年,关于我的测试旅程..._自动化测试

然而,在工作了不到两个月后,我开始厌倦这种工作内容。重复度太高了。我觉得我是一个机器人 ,除了对业务越来越熟悉,看不到太多的成长,完全是浪费时间。

是的,这是第一次遇到瓶颈!!!!

4.克服第一个瓶颈:培养自动思维

虽然当时是考试,但我当时的认知是发展还是要学的,所以我通常下班后自学spring mvc,Java web编程、redis等当时似乎没用的东西来充实自己,经常学到凌晨,周末在家学习一天。(现在想想,当时也走了很多弯路,学东西都是靠百度谷歌,没有系统的学习。虽然也掌握了一些开发技巧,但并不牢固。)

对于测试中遇到的瓶颈,我会和同组的老同事沟通,问他们是否遇到过类似的瓶颈,如何克服瓶颈期。一位同事的回答似乎一下子把我吵醒了,他说了两个字“偷懒”。然后我很好奇这是什么意思,怎么偷懒。然后我们谈了Python,可以用Python写测试脚本,比如制作数据,结合selenium做ui自动化。这是我第一次听到Python。通过他给我看的他写的批量数据脚本,我立刻生成了数百个数据。当时我觉得这个东西一定很有用,很有用。

然后下班后自学Python编程,开始尝试写简单的脚本,比如用pymysql操作数据库,用selenium做ui自动化。虽然当时老板不鼓励小组内的UI自动化,但他还是带着好奇心和学习心态自学,并根据项目开发了case。但结果出乎意料,需求变化频繁,不适合UI自动化。使用selenium编写自动化和维护自动化用例的成本过高,因此手动测试重复性高的根本问题没有得到解决。

然而,通过学习Python和UI自动化,我们提高了认知能力。事实证明,许多工作可以通过Python代码解决。这就是自动思维(虽然我也学过Java,但诚实地说,它不适合编写批量测试脚本) 。以后的工作形成了一种思维,遇到了高重复性的内容(重复性)>3)第一时间思考能否通过自动化解决。

5.克服第二个瓶颈:进入字节跳动

转眼间,我工作了将近一年半。虽然我在年中表现不错,并获得了部门的测试奖,但我觉得很难在团队中提高,因为我熟悉当时可以接触到的相关知识和运维知识。此外,当时项目中的测试发言权较低,部门老板不太重视,测试很难实施一些质量改进工作,所以我觉得我可以看到一个更大的平台。(因为我们的团队测试经常出差到甲方的父亲,比如一个人做环境测试,部署产品,解决问题,简直把自己逼成了“全能王”)。

开始准备面试:在网上找到各种测试面试经验和面试问题。我还为几家最喜欢的大工厂找到了面经。

然后投资xx银行,OPPO、字节跳动。是的,都在上海,经常在上海出差的我慢慢爱上了这座城市,与其在这里出差,不如在这里工作。

xx银行第一次面试,周六从杭州坐高铁现场面试,一次三面,老板对我满意,告诉我他们的团队规划,团队实力(有很多大工厂背景),但薪水,考虑到上海价格,扣除费用等于从杭州到上海,所以我放弃了报价。

然后是OPPO,字节跳动。这两家公司几乎同时面试。最后,他们先拿到了字节跳动的offer,OPPO终于放弃了,向他们的人力资源部解释了原因。

6.克服第三个瓶颈:转型测开

来到字节跳动,老板也很好,他也给了团队管理、自动化测试、参加测试会议、外部学习和交流等很多帮助和成长机会。字节期间最大的增长是承担团队自动化测试,促进我们团队从手动测试向自动化测试的转变。

来字节一年,加薪过一次。不得不说,字节对付出多、产出高的员工真的很大方,真的不缺钱,加薪也挺豪气的。

 

【干货】如何推动业务测试团队转型自动化测试?

 

虽然上海很好,但上海的购房压力太大了。结合他们的实际情况,他们仍然决定去成都发展。虽然他们不愿意放弃字节,当时的团队和非常好的老板,但他们仍然必须考虑未来的生活质量和他们能承受的压力。

然后我开始寻找公司内部转岗的机会。看到成都有xx团队测试机会,我和老板沟通了意向。我很高兴他也遵循我的意愿,同意我转岗。

第一次测试转型尝试——内部转岗XX团队,虽然是内部转岗,但面试难度丝毫没有降低。因为前期在头条看到的转岗率有多高的帖子,这次转岗没有针对XX团队专注于技术(偏向移动终端,而我的工作内容是web中间平台和工具开发,字节几乎没有接触到移动终端),最终结果也不好。假如做好了充分的准备,转岗的概率还是挺高的。

第二次测试-阿里巴巴测试,第一次失败,总结了很多经验,也为以后进入阿里奠定了基础。如多线程、高并发性、leetcode、spring MVC等。,这些都是测试和开放岗位的必要问题。一方面,他们提出了更多的技术问题,另一方面,他们结合项目穿插了一些技术问题,如如何利用xx技术解决高并发问题

 

在成都,我很满意我最终得到了一份工作。除了薪水,更重要的是测试和开发的机会。毕竟,阿里巴巴在行业质量保证方面的基础设施建设相当完善,可以接触到更成熟的测试技术和项目挑战。

7.开始灌鸡汤
  1. 瓶颈很常见。感谢瓶颈,瓶颈就是机会。在发展的过程中,每个人都会遇到各种各样的瓶颈。有瓶颈是一件好事,这意味着你渴望成长,只要你和周围有更多 “高阶 “同事多沟通,多听建议,他们能给你很多帮助。
  2. 选择很重要,努力更重要 如果你不努力谈论选择,那就是空谈!!!选择一个平台很重要,遇到一个好老板更重要,但前提是你应该为选择做好准备 真的很感激“基础” Z 哥哥,伯乐,我的职业生涯。
  3. 持续学习决定你能走多远 - 养成持续学习的习惯。教育只能代表过去,而工作中更重要的是不断学习。持续学习的能力决定了一个人能走多远。它主要体现在:归纳分析能力、思维创造力、时间管理能力、自律能力等方面。养成这些习惯对一个人的成长至关重要,克服成长过程中的瓶颈 “杀手锏”。
  4. 多写博客,多记录工作流程。Writing is Thinking。写就是想。有时候你觉得自己很懂一件事,但是和别人分享的时候表达的不好。其实根本原因是你没有想象的那么懂一门技术。试着写下来。
  5. “三思而行”。在大公司里,有很多牛人。你的想法/问别人的问题决定了别人对你的看法。建议你遇到每一个问题 都先说服自己,多问问自己这是不是 what、为什么会这样? why,怎么解决 How。
8.阿里测试开发旅程

 

对测试岗位的理解:测试开发仍属于“测试”,测试工程师注重“被动”质量保证,即通过传统的测试手段保证业务质量,但随着公司业务场景的复杂性和研发周期的缩短,传统的质量保证手段不能满足新研发模式下的产品质量要求,如何保证高质量,这就需要测试提高人类效率(在同一时间做更多工作)和将“被动发现”转化为“主动攻击”的能力来提前发现问题。如何做到这一点,必须借助技术手段, 这反映了测试开发中的“开发”能力。如何做到这一点,必须借助技术手段, 这反映了测试开发中的“开发”能力。但测开的最终目标仍然是质量保证,所以我认为测开仍然是一个测试。

当然,知乎上也有类似问题的帖子:“什么是测试开发?为什么现在这么多公司招聘测试开发?”

 

1.阿里测开类型

你可以在招聘网站上看到,阿里巴巴开放的质量职位基本上是测试开发职位,具体的工作内容取决于你的面试团队(面试过程会告诉你一般的工作内容)。据我所知,阿里巴巴的测试和开发可以分为两类:

  • 一是纯技术型,专注于开发质量工具和各种“神器”。他们为业务团队服务,旨在解决业务测试中遇到的各种问题(如测试有效性,请参阅南门老板的文章《阿里研究员:软件测试中的18个问题》)。
  • 一个是业务测试+技术专项,基本7/3分,偶尔业务量重的时候10/0分(当然团队内测试人员的技术水平有高有低,技术相对较好的学生可能业务量稍微轻一点),因为业务测试是发现各种测试问题的先决条件,往往需要技术手段才能解决业务测试问题,所以技术专项来了。专题一般来自团队内部测试人员遇到的测试问题。

职场四年,关于我的测试旅程..._自动化测试_02

2.我在阿里的工作内容

我在阿里的团队是一个负责业务测试的团队,研发/测试比约为4:1.测试团队的每个成员分别负责一项业务测试和一项特殊工作,如提高效率的工具/机器人、检查、测试覆盖率等。

  • 业务测试是功能测试,只不过是一点点。当然,根据不同的技术结构,阿里巴巴更注重左右移动的测试。左移动,如参与code review、异常测试等;右移,比如注意线上监控和紧急情况。(安全性和性能测试都是由专门的团队完成的,你只需要提交工单)
  • 界面测试用例的开发一般从提前测试开始,界面测试用例采用团队的界面测试框架开发。除了增量测试用例外,库存测试用例也应得到维护。
  • 写文档,事实上,这与功能测试类别是一致的,为什么我要单独拿出来呢?因为我进入文档统计数据显示,我每天至少输出一个文档,但我没有注意到。
  • 提供外部支持。兄弟域联调整&提供造数等工具的支持
  • 协调&沟通。我不得不说,在阿里做项目的沟通成本相对较高,因为你的兄弟区可能分布在“世界各地”,甚至在国外。如果您是主要的测试,那么您应该负责整个链接的质量保证和协调&沟通各领域测试学生的测试进度和项目风险;上线时要密切关注在线监控和报警。
  • 专项测试是我上面提到的,主题来自测试过程中遇到的问题。例如,如何证明你的测试是有效的?如何尽快监控在线报告的问题?

三、重复造轮问题

也许你会问,你们都在做专门的测试平台吗?轮子是重复的吗?

首先,我告诉你结论,它确实是在重复轮子,我认为这是不可避免的。

自从我加入公司以来,我已经联系了多达三个接口自动化测试框架。这么多框架的起源也是有原因的。例如,旧框架的升级成本很高,导致旧业务的自动化测试用例没有完全转移到新的测试框架中,然后维护多个测试框架;此外,我们经常涉及跨域测试(补充),不同领域有自己的测试框架,因此您也应该掌握它们。但我对重复轮子的态度是中立的,并不反对,我们应该从多方面来看待它。

  1. 从阿里自身的业务结构来看,阿里的产品业务非常复杂,技术实现结构是一种微服务。不同的测试团队负责不同的业务模块(也称为领域,如资本、金融、支付等),每个领域都是合作和独立的关系。
  1. 从全链接的角度来看,各域相互合作,缺一不可。任何域的问题最终都会影响用户体验。
  2. 从团队的角度来看,各个领域都是独立的,因为各个领域的老板(通常是8)是不同的,不同的老板可能有不同的团队管理策略;其次,团队之间也有一定的“竞争”关系(哈哈,这也可能是人们经常谈论的“内部卷”)。
  3. 不同领域之间的质量要求可能会有所不同。例如,在资本领域,对资本损失的容忍度为0。因此,业务质量保证的测试策略和方法可能略有不同。
  1. 当然,从侧面看,阿里的质量基础设施建设已经相对完善,在中国已经是顶级水平,毕竟,经过20多年的发展。
  2. 从测试(尤其是小P)本身来看,我认为技术输出比业务输出更重要。因为做好业务测试是一项基本工作,所以没有人拥有它。技术输出对于衡量团队成员之间的绩效非常重要(不可否认的是,一些轮子确实生来就是绩效)。
  3. 客观地说,就像国家提出的“大众创新、大众创新”的口号一样,提供竞争氛围并非不可能。黑猫和白猫抓老鼠是一只好猫。正是许多轮子的存在衬托出最终“赢家”的价值。

当然,重复造轮的缺点是人力资源的浪费,这是公司雇佣成本的损失。我相信国内大型工厂也会有类似的问题。

9.测试工程师如何转型测试?

 

1摆好心态&开放眼界

我始终认为 掌握技术最重要,title不重要。测试工程师和测开只是title不同,工作内容没有明确的边际,这完全取决于你对测试的看法!有些公司的测试工程师可能会做一些公司测试的工作,而有些公司可能会做一些公司测试工程师的工作。就像我在字节的时候,title是测试工程师,工作内容是业务测试+接口测试平台开发的7/3分。而且在阿里也差不多(甚至阿里的业务更重)。对我来说,两家公司的工作内容没有区别,只是title不一样。

对于想要测试测试工程师建议:调整心态,不要“测试”,提高技术能力是关键,养成持续学习的习惯,接触更多的知识,拓展视野,在业务测试过程中养成“懒惰”的习惯,多思考自动化手段减少手动测试工作。

 

2夯实&运用技术

 

1.通过编程能力

至少精通一门语言。最好用这种语言开发工具或平台。首先,通常需要手写代码来测量和打开,这是门槛。第二,有开发经验可以证明你对语言开发的熟练程度。

至少掌握一个开发框架。例如,spring boot、flask、Django、VueJS等。

 

2.熟悉基本算法,建议结合LeetCode练习学习。

1 快速排序算法

2 堆排序算法

3 归并排序

4 二分搜索算法

5 BFPRT(线性搜索算法)

6 DFS(深度优先搜索)

7 BFS(广度优先搜索)

8 Dijkstra算法

9 动态规划算法

10 简单贝叶斯分类算法

 

3.有专长(亮点)

正如上面提到的,没有人有我。在每个人都掌握相同“技能”的前提下,你可以做得更深入或有独特的想法,这是你的亮点。例如,擅长性能测试、高效工具开发、平台建设等。当然,这因人而异,这取决于每个人的兴趣点。

 

4.多利用技术手段解决业务问题

我认为这是最重要的。即使掌握了上述能力,但缺乏运用技术解决实际问题的能力,仍然是纸上谈兵。正如第二节所说,测试和开发工作职责需要解决复杂问题的能力。我在面试中问的最多的问题是 为什么要这样做?你这样做解决了什么问题?以后我会附上面试经验分享,包括所有面试题目。如何提高解决问题的能力,第一步是善于发现问题,这就要求我们在工作中保持怀疑。

 

3 “创新”意识

 

不可否认的是,创新属于少数人的专利。但并不是大多数人都不能创新。我认为这对普通人来说就足够了,因为我们可以第二次“创新”,我们可以将前辈的第二次创新应用到我们的业务中,解决某些问题。

如何保持开放的心态,建议您参加更多的测试沙龙和论坛,行业更专业的测试论坛 例如,在每年两届MTSC会议上,问题的质量相当高。基本上,BAT问题占全国的一半。可以说,BAT问题的结果是国内测试行业的发展基准和方向(尽管BAT问题可能是其他人玩的)。

另外,关注各大厂质量相关技术微信官方账号,多看看他们发的文章,提升眼界。

10.分享我的阿里测开面试题

技术题

  1. 了解多线程吗?了解Python的GIL锁吗?
  2. 谈谈过程和线程
  3. 进程间通信的方式有哪些?
  4. 乐观锁和悲观锁是什么?
  5. AOP
  6. IOC是什么?
  7. 与map相关的list
  8. 解释一下工厂模式?
  9. 内存泄漏
  10. 能做性能测试吗?容量测试/稳定性测试?
  11. Python2和3的区别?
  12. 解释DNS?
  13. 哪个验证顺序是用户名、密码和验证码?
  14. Linux根据过程检查端口/端口
  15. 常用的Linux指令?
  16. 排序算法

围绕工具开发

  1. 如何开发工具?
  2. 为什么要开发这个工具?
  3. 公司内部没有类似的平台吗?
  4. 什么是效率工具?举几个例子?
  5. 自研界面自动化框架的介绍?
  1. 由哪些模块组成?
  2. 与其它框架相比,有哪些优点?缺点是什么?
  3. 如何实现框架的代码生成模块?
  4. 用你的框架测量接口需要做哪些步骤?
  5. 如何做界面断言?
  6. 接口测试的好处?
  7. testng和junit的优缺点
  1. 如何开发和提高数据工具的效率。

大数据测试

  1. 如何测试数据的准确性?

算法测试

  1. 算法测试做什么工作?
  2. 如何进行算法评估?
  3. 不同的算法类型有不同的评价标准
  4. 介绍最近的算法测试案例?
  5. 如何选择测试集?如何选择测试集的特点?
  6. 说一些填空题小空识别算法的badcase?
  7. 算法质量如何保证?

 

编程题

  1. 词频统计
  2. 奇偶数交替打印线程
  3. 最长回文子串

项目经历

  1. 介绍负责任的项目?
  2. 如何保证旧系统(僵尸代码)的质量?
  3. 项目遇到的最大风险点?
  4. 如何保证项目质量?
  5. 如何处理紧急需求?
  6. 项目迭代模式?
  7. 谈谈最近项目推广成功的案例?
  8. 谈谈自己的人力分配?

持续集成

  1. 了解CI吗?解释CI
  2. 如何衡量测试用例的质量?
  3. 谈谈你对测试的理解?还是对质量的理解?

团队管理

  1. 团队管理有困难吗?
  2. 你期望什么样的测试团队?
  3. 团队的测试开发比是多少?
  4. 全职/外包比例如何衡量?
  5. 如何保证外包的忠诚度?
  6. 你能给团队带来什么?

HR问题

  1. 为何跳槽?
  2. 为何选择阿里?
  3. 前几家公司收获
  4. 有什么问题要问?
  5. 如何克服工作中最大的挑战(最大的挫折)?
  6. 最大的优缺点?分别说一个?
  7. 未来职业3-5年发展规划?

 

附:测试小白到高级测试技术栈

 

职场四年,关于我的测试旅程..._自动化测试_03

 

上一篇 关系型与非关系型数据库的区别
下一篇 过滤器与拦截器

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题