字节跳动已上岸测试工程师的

发表于:2020-11-17 09:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:我太想要个offer    来源:牛客网

  国际惯例,讲一下楼主的基本情况,教育部直属211本科毕业,非科班,专业偏硬件,秋招考研总分差点,饮恨考场。技术栈的话就会C/C++,matlab(毕设用的),linux系统,mysql数据库语句,项目就是一个在学校和同学做的课设(和科班比差太多),无实习,在国内外疫情这么严重的情况下还要进入互联网公司,综合考量之后决定从一名测试人员做起,从2月20日至今拿到了奇安信(软件测试工程师),字节(游戏测试工程师,base北京),三七玩估计也是能过得(游戏测试工程师),剩下的还没面试或者面试中的就不继续进行了,已经签字节跳动了(开森) 。
  这个时候发面经已经有点晚了,所以现在打算让这篇面经主要面向即将秋招的童鞋,当然现在还在春招的童鞋也可以看哈,我和大家一起聊聊关于测试的二三事。
  一、什么是测试工程师?
  以软件开发为例,宏观上说测试工程师就是软件质量的把关者,在一个软件开发流程中测试人员要与开发人员一起对软件的研发进行负责,软件进行质量把关,开发进行功能实现,相辅相成。
  测试又分为传统的测试工程师和测试开发工程师,测试开发工程师(以下简称测开)就要在上述的基础上最少在掌握一门脚本语言,两门及以上更好,脚本语言包括但不局限于Python,golang,shell等等因为测试开发工程师其实是造轮子的,换言之就是开发测试用的各种工具;测试工程师对代码要求较测开低一些,但不是一窍不通(我面试的时候都会遇到代码问题),不懂代码层次的问题的话其实就不好进行测试分析这个后面再解释为什么。
  二、测试工程师的工作是什么?
  测试工程师简单点说就是找bug,然后反馈给开发人员,不要小看这个工作。
  首先很明显的bug开发人员有时候自己就能找到,测试人员要有比开发人员更加全面的想法才能找到深层次的问题点,
  其次,要端正一个态度就是测试人员不是一个电脑小白,相反国外顶级的测试开发工程师同时也是顶级的开发工程师甚至更厉害,所以作为一个测试工程师一定要有继续学习的精神和心态,然后明白测试工程师要会写测试用例,这很重要,文本写的好坏会直接影响到后期的维护成本。
  ----------------------------分割线--------------------------------
  这段时间问自动化测试的童鞋比较多,那我就来聊聊我对自动化测试的理解(个人愚见)。
  首先说一下自动化测试是什么?自动化测试从职能上讲就是去在一定的框架下去开发一些自动化测试脚本来实现QA所做不到的事情,拿fgo来举栗子比较合适,众所周知fgo核心玩法之一就是抽卡,这个抽卡是有概率的(欧皇请自动左滑),而QA是不可能去抽几十万次甚至上百万次来验证概率问题,这时候就要自动化脚本来模拟抽卡去抽,看看概率算法是否有问题,本来自动化测试其实在某种意义上是一种灰盒测试,但是现在很多公司会把自动化测试归到测开里面去,所以现在自动化就偏白盒一些。
  第二个要说的就是语言,现在自动化测试流行的语言就是Python,shell,golang,(据说要是cpp厉害的也可以),不是很死板,但主流一定是脚本语言。
  就先讲这么多吧,也算是一个小总结。欢迎各位大佬对我提出意见或者交流经验,鞠躬。
  -------------------------------分割线--------------------------------
  游戏QA的话要求会更高,因为传统软件测试要看的方面游戏要测试,而传统软件不作为重点的地方游戏也要测试,所以游戏测试工程师相对来说是工作量会大一些。具体的测试流程的话可以自行百度或者Google,里面讲的比我要好很多。
  三、聊聊测试方法吧
  测试有一种分类方式可以简单的分成黑盒测试白盒测试,举个栗子,黑盒测试常见的测试方法有等价类划分方法、边界值分析方法、错误推测方法、因果图方法、判定表驱动分析方法、正交实验设计方法、功能图分析方法、场景设计方法等等,具体的话要看你所要测试的具体内容而定。
  白盒测试,先讲一下,白盒测试其实应该是测试开发工程师,要懂代码,要看的懂代码层次的逻辑和架构,然后去寻找代码层次出现的bug问题,方法具体有:
  语句覆盖,主要特点:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。
  判定覆盖,主要特点:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。
  条件覆盖,主要特点:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。
  判定/条件覆盖,主要点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。
  组合覆盖,主要特点:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。
  路径覆盖,主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。
  从方法上不难看出如果测试人员不懂代码会给工作带来一定的压力,也正好的解释了第一章里最后问题,具体的也希望大家去进行一下自学。
  当然我只是去罗列一下一些测试方法,百度也可得,我只是做了一下整理,真正变成自己的还需要去实践,当你自己去亲身测一段代码或者去测一测软件的某个功能,你就会去融会贯通。
  四、说了这么多再聊聊面经吧(这里我只讲一下字节和奇安信的)
  字节跳动游戏测试工程师
  一面(45min)、二面(30min)综合讲
  1、自我介绍,项目介绍,然后让测一下项目里的内容;
  2、讲一讲自己的游戏史,因为我的简历里写了我有丰富的游戏史;
  3、从自己说的游戏中面试官挑了几个点进行测试;
  4、聊了聊fps游戏的中测试内容和外挂问题(ps:因为我谈了我对外挂很感兴趣);
  5、聊了聊为什么要当测试以及游戏测试和测试人员的不同;
  6、讲了讲测试用例应该有什么,要注意什么;
  7、讲了讲一个单链表中查找第K个节点能用的方法,时间复杂度是多少;
  8、智力题:两个桶来取水的问题,重点看实现过程;
  9、聊了聊对测试职能的理解;
  10、反问环节;
  ps两面的面试官都超级温柔,有问题会耐心解答,体验极佳
  三面的话(35min)
  比上述内容多了一些内容,就是聊了聊moba和fps具体的一些测试,然后出了道足球赛的赛制问题;再就多了和我聊了聊自己的性格和特点之类的。
  反问环节和面试官聊了蛮多的关于游戏方面的知识,面试官逻辑超强,讲的很棒,自己受益颇多。
  hr面(15min)
  就很正常的问了一些个人性格,经历等等,跟牛客网上大佬们的面经大同小异,不在赘述。
  奇安信测试工程师
  一面(30min)
  1、自我介绍,项目介绍;
  2、重点讲一下项目;
  3、对项目里的每一项功能进行测试,不断锤炼,不断反问(20min)
  4、反问;
  二面(30min)
  1、自我介绍,项目介绍;
  2、再测一遍自己的项目(没错,就是再来一遍);
  3、设计场景进行测试;
  4、问了问自己平时有没有学一些别的技术比如网页开发之类的,然后我又说外挂。。。。(10min)
  5、反问;
  HR面(20min)
  就很正常的问了一些个人性格,经历等等,跟牛客网上大佬们的面经大同小异,不在赘述。
  五、最后再写点碎碎念
  个人对于工作和考研的态度就是:完全看个人发展,开发和测试对经验看中一些,算法等对学术要求高一点,具体还是看个人,不过有一点要声明,找工作趁早。
  招聘期间多注意公司的JD然后自行匹配,努力让自己更加贴合JD会增加简历通过概率,JD其实也是帮助我们自己看看自己还有那些知识要注意,要利用好。
  大三或者研二条件允许的情况下一定找实习,这会让你先看看行业内容,进而判断自己是不是适合这份工作。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号