有一种打工人的羡慕,叫做“大厂”。
真是年少不知大厂香,错把青春插稻秧。
但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂的“命”。他们就是大厂的“外包员工”。
想当年我也是外包中的一员,在腾讯做过2年的外包,也经历过很多人经历过的外包的苦,所谓的外包,就是企业为减少负担,把一些非核心业务承包给外包公司来完成,这些工作往往是阶段性、辅助性,没有什么技术含量的工作,而且由于不是与大厂签订劳动合同,与正式职工相比,这些外包人员更像是大厂没有编制的“临时工”。
最近收到不少朋友私信,说马上面临就业,在找工作的过程中,有不少软件测试的外包公司给我打电话让去面试,究竟要不要去?这篇文章给大家说说我这2年的外包经验,希望对于正在找工作的你有所帮助。
外包公司的特点有哪些?
首先,特点就是人员流动性特别大,接着上面例子,因为可能干了三四个月,该项目做完了,这10个人估计都得走,然后这10个人又会被外包公司派去其他的甲方公司面试,面试成功才有工资拿,没面试成功只有底薪2200。
如果一个外包人员面试甲方公司,一直都没有面试通过,那他就是只能一直拿底薪,大约每天70块钱的收入,所以,有些就觉得没劲,干脆辞职。
还有一个就是:你如果要入职外包公司的话,一般要经过两面,一面外包,过了外包的面试,才有第二轮甲方公司的面试,这些外包的人事都会提前通知你,去哪个甲方公司面试,然后第二面你又要去甲方面试,如果这个甲方公司面试通过了,就会给你发offer,让你入职签合同,如果第一个甲方公司面试没通过,那就去第二个甲方公司,依次类推,直到你面试的甲方公司通过才可以入职签合同。
关于签合同和福利待遇
薪酬福利
一般而言外包员工的薪酬福利是远低于正式员工的
正式员工:薪资之外还有五险一金和公司福利等;而外包的价格顶多是岗位的正常薪资。
职业发展
外包员工很快会遇到瓶颈,因为只有非核心岗位会外包,这类岗位缺乏长期发展的空间。
正式员工,有成绩或者呆的年限够长都回有相应的回报。
工作稳定性
外包是灵活用工的一种,意味着公司一旦需要裁员,首先考虑的是外包员工。
正式员工,会相对稳定,裁员,会获得法律的相应补偿。
合同签订
外包员工的合同,是和第三方外包公司签订。
正式员工的合同,是直接和公司签订。
工作范围
外包公司,一般是一对多,同时服务多家企业。
正式员工,一般是一对一,只服务于所在公司。
外包公司可不可以进呢?
一般情况下,我不建议大家选择去外包公司,因为从各个方面综合比较,外包公司都是不利于我们发展的。但是外包公司的存在又是大多数,我们应该怎么办呢?我的建议是,根据自身情况做“符合事实的选择”,如果我们找了很久的工作都没有拿到一份满意的offer,无论是心理还是身体上都承受不住这种煎熬,那么我们可以暂且先在外包公司进行工作,从而积累工作经验,等到时机继续寻找符合自己的满意公司。
但是在外包公司工作一定不要超过两年,要提前去策划自己如何跳出这个环境,从而找到更加有发展潜力的平台进行学习和发展。这些都是需要自己去运营的。在整个过程中,“学习”是主要改变的方式,通过巩固和学习技术与知识,我们可以增加自身的竞争力,毕竟我们还是做的技术行业,还是要用自身的技术能力来说话。
我的外包测试收获
在外包公司也不一定全无收获,我在外包公司这几年也收获不少,感慨良多!
技术方面
1.熟悉了大厂的流程,掌握各种工具
2.掌握了新的技术栈,如mysql都是在外包的这两年学习的
3.代码习惯更好了,
4.编程思想上的提升
5.问题定位速度的提升。
工作能力方面
1.更有耐心了,同事之间的交流也是很有礼貌
2.更能抗压了,有时候测试压力挺大的,只能多加班,有时候一个月工作日都在加班,最少每个月有15天的加班
3.更有效率了,简单的东西有时候很快就可以完成
生活方面
体重增加,因为伙食好了,现在早晚餐都包了,另外运动少了,基本没什么运动。
外包转正
其实很多外包一开始进去,都是怀着转正的目标去努力的,也有成功的,但是还是挺少的。我们组17个人就我一个外包,算是比较有希望的了,我各季度评分也是经常A与S,但是由于一些原因我觉得他们还是不会考虑我转正的问题。
对比于社招,学历不占优势,只是普通本科,现在卷的很厉害,组中后台校招基本是重点院校研究生,社招是中大+华为这样的经验,前端的话也基本都是重点本科。刚进去的时候一个实习的产品是清华研究生,后面看到他入职了。所以即使你转正了,你和这样一群人竞争,压力也会很大,除非你真的很努力,很优秀。
没有技术优势,没有做过十分突出的成绩,你没有KPI,没有OKR,根本无法评判你做的好不好
工作强度真的挺强的,想找个稍微轻松一些的
以后都不想做外包了
我之所以做了外包,是因为那时候刚来深圳,又没有找到合适的工作,就想先做一年看看,没想到这一做就是两年多,时间真的过的很快,不管是有意义的过还是颓废的过,都一样的快。但是,以后都不想做外包了...
所以还是要在闲暇时间提升自己的技术水平了,能通过学习掌握更多的测试技能,进入更好的平台,获取更好的工作。但事与愿违,在深圳、北京、上海软件人才遍地的城市,你凭借着不高的学历和软件测试外包的工作经验,很难找到更心仪的工作。
我总结完此次经历,认为有以下三个关键点帮我达成面霸的称号。
1.调节好心态:心态是制胜的前提
2.做好充分的准备:成为面霸的关键
3.做好时间规划:成功的保证。
第一点:心态
第一个讲调节好心理状态是因为这个是决定你成败的非常关键的前提,因为一旦你进入了换工作的阶段,你的心理就进入了“我是傻X和我很牛X”的薛定谔的猫的叠加态中。你会不停的重新评估自己,但是刚开始的状况一般都很不乐观,很可能会给你的心态带来致命的打击,比如我没有准备充分直接面试导致六连挂,让我陷入了很长时间的抑郁状态中。如果没有做好调整,之后的面试准备都没办法顺利进行,甚至你在面试时表现出来的不自信都会导致你被pass,形成恶性循环。
第二点:经验及面试题分享
常见问题
软件测试的目的是什么?
1.为了发现程序中的缺陷,保证软件质量。 2.满足用户需要
软件测试的一般流程是怎么样的?
1.项目立项后,参加需求评审
2.根据需求文档制定测试用例,然后进行用例评审
3.项目提测后,执行用例,问题记录cp4,及时有效的跟进问题的解决情况
4.测试环境测试通过后,产品进行验收测试
常见的测试类型有哪些?分别说明一下?
1.黑盒测试,即常说的功能测试
2.白盒测试,即单元测试,通常由开发来完成,对程序类和方法的测试
3.兼容性测试,主要是浏览器的兼容测试
4.集成测试,即各个模块的测试
5.系统测试,各模块测试完成后,对整个系统的完整性测试
6.回归测试
7.验收测试
测试用例设计常用的方法有哪些?详细说明一下?
最常用的3种 等价类划分、边界值、场景法
1.等价类划分 分为有效等价类和无效等价类,将测试的范围划分成几个互不相交的子集,从每个子集选出若干个有代表性的值作为测试用例
2.边界值:选取正好等于、刚刚大于、刚刚小于边界的
3.场景法:划分不同的场景,然后逐一进行验证
解释下单元测试,集成测试,系统测试以及验收测试?
1.单元测试,通常由开发来完成,对程序类和方法的测试
2.集成测试,即各个模块的测试
3.系统测试,各模块测试完成后,对整个系统的完整性测试
4.验收测试,测试环境测试通过后,由产品或者用户进行验收测试,看看产品的实现,是不是满足了他们当初设计的需求
探索性测试是什么?应该怎么做?
在需求文档不完善或者压根没有需求文档的情况下,根据经验进行摸索尝试性进行的测试,是测试过程中形成的基本的思维性测试
什么是冒烟测试,如何有效的开展冒烟测试?
1.软件最基本的功能测试,通常由开发完成,只有冒烟点都通过的产品,交由测试,才会比较有意义 2.冒烟测试贯穿于测试的各个阶段,比如集成测试,系统测试等
一条高质量的缺陷记录(Bug)应该具有哪些内容?
1.记录bug产生的前提条件
2.产生bug的详细操作步骤
3.截图,直观的展示问题,有效帮助开发快速定位问题
缺陷的生命周期是怎样的?
1新建–提交–分配–修复–验证–验证通过关闭–验证不通过reopen
Alpha测试与Beta测试的区别?
1.Alpha测试:把用户请到开发方的场所来测试,用户在模拟实际操作环境下进行的测试,由开发记录下用户反馈的问题
2.beta测试:当开发和测试根本完成时所做的测试,很多不同的用户,在不同的环境下操作,然后用户把产生的问题,定期发给开发者,进行修复(开发不在现场)
3.通常现有alpha测试,后有bata测试
你认为做好软件测试应该具备哪些素质?
1.较好的技术能力
2.对业务逻辑的理解
3.良好的沟通能力
4.解决和分析事情的能力
作为测试人员,在与开发人员沟通过程中,如何有效的提高沟通效率和效果?
1.耐心的跟开发沟通,跟他阐述不过的重要性 说服他解决问题
2.充分尊重对方,哪怕再低级的bug都不要小看他
3.宽以待人,设身处地为他人着想 即使开发因为压力或者其他原因不肯合作 也要心平气和的跟他沟通 讨论bug的优先级
4.平时多跟开发沟通 无论是工作还是生活上的问题,但是测试一定要有自己的原则 对测试的产品质量负责
5.自己先定位问题 帮助开发缩小排查范围
你觉得软件测试工程师在一个团队中,都需要做什么?有什么价值?
1.在产品需求会上 可以站在用户的角度 提一些贴合用户需求的建议
2.测试阶段,根据自己对项目的了解和专业的测试技能 尽可能在项目上线前测出更多问题 保证产品质量
3.对测试过程中出现的问题 合理有效的进行风险评估。
4.对质量严格把关 测试不通过的 一定不能发布生产
你对软件测试最大的兴趣是什么?
1.行业前景比较好,而且近些年 越来越多企业更注重测试
2.测试时间越久 面临的困难和挑战也越多,解决问题的同时 也提高了自身的能力
3.自己的性格比较外向开朗 很容易跟产品和开发沟通 做起事情可以事半功倍
你对自己的职业规划是什么?
先做高级测试 有机会的话,想往管理方向发展,目前在携程做测试组长,也为以后管理做储备
在你以往的工作中,发现的影响大或印象深刻的Bug是什么?为什么?
印象深刻的bug:近期的一个项目,x发单n是发qmq消息,调用发单服务自动发单,测试过程中,我给开发提议加个手动发单–作为发单失败或者未发单的补偿,开发力争 生产不会出现发单失败的情况,但后来还是被我说服,在上线前,加个手动发单的功能。 上线第二天,公司qmq框架出现问题,产生消息消费的延迟,导致一段时间内的订单不能自动发单,这时候大家手动发单,解决部分订单,事情过后,开发更加肯定了 我当时的提的bug修复是正确的
在你以往的经历中,解决过的最困难的问题是什么?
环境问题,是所有测试人员都面临的一个难题;解决的那么多问题中,测试环境无法使用,无法快速的介入测试,仍然是比较突出的。曾经把一个长久未使用的环境,根据经验和clog定位,各个服务之间的调用,一步步完成调通
在你以往的工作或学习中,你最大的收获是什么?学到了什么?
1.业务的积累
2.通过各种自动化,如UI自动化,job自动化,api自动化,不仅提升了自己编码能力,也在每周的常规发布中,起到举足轻重的作用
3.长期的测试过程中,提升了自己解决问题的能力
在没有任何文档的情况下,你如何开展测试?
1.尽量的去获取其他的文档吧,比如开发的一 些设计文档—概要设计、功能设计、详细设计
2.尝试从网上找类似的项目文档,如果幸运,可以从公司的资料库找到类似的文档
3.按照开发的接口或者设计文档,按照功能模块划分,大致写一些用例,然后进行摸索测试,在测试过程中逐渐完善自己的用例
测试用例设计问题
测试用例是什么?如何设计有效的测试用例?
为了测试某个产品,编制的一组测试输入、执行条件以及预期结果 设计有效的测试用例:
1.明确需求,清晰的知道需求要实现哪些功能
2.根据需求文档,拆分出功能点和测试测试要点
3.详细的梳理业务需求,设计不同的业务场景,尽可能多的覆盖,尤其重要的逻辑,颗粒度要精细
4.具体逻辑的设计方法,遵循边界分析法,出问题最多的就在边界值,然后用等价类划分方法补充一些测试用例
5.UI测试,界面元素测试+样式+操作控件设计+浏览器兼容性相关的用例
6.时间充足的情况下,设计接口的测试用例,从而保证接口数据的用等价类划分方法补充一些测试用例完整性和正确性–目前携程提倡测试先行的概念,接口要在项目提测前,完成api自动化测试
输入三个整数,判断是否构成有效的三角形,针对这个设计测试用例
首先要设计满足三角形的条件,输入的三个数必须大于0,且同时满足任意两边之和大于第三边。假设三条边是A/B/C,则要满足的条件为A>0,B>0,C>0,A+B>C,A+C>B,B+C>A。以此为例来进行设计即可 有效等价类:A>0,B>0,C>0
针对文件上传功能,设计下测试用例
针对网上购物中订单提交的过程,设计测试用例
测试管理问题
你认为测试经理的工作职责和内容是什么?
1.负责建立和维护一个有效的测试流程;
2.负责测试团队的日常管理工作;
3.负责制定和安排测试计划、测试工作;
4.带领测试团队进行程序测试工作、按照制定的测试计划执行,并监督和控制测试工作的进程;
5.负责测试用例的质量,开发高效的测试用例;
6.负责与其他部门的人员沟通协作,例如与开发人员和项目管理人员进行沟通,共同推动项目的顺利进行;
7.负责测试团队的培训,培养团队队员的能力。
8.如果你作为测试Leader,你应该怎么建立公司的测试体系并实施它?
9.说明你作为测试团队的负责人,如何提高测试团队的技术能力?
10.列举你以往项目测试中遇到的风险以及你如何处理的?
11.如果当时间不充裕时,该如何安排测试?
12.列举你曾经做过的测试(你认为有技术含量的或者提高了测试管理能力的),并说下你从中如何受益?
13.在开发和测试存在不合作甚至对立的情况下,你如何平衡和协调工作?
自动化测试问题
1.你认为适合做自动化测试的标准是什么?
2.你认为什么类型的测试不适合做自动化测试?
3.UI自动化测试的优点和缺点分别是什么?
4.在一个项目中目前还没有进行自动化,如果我想开展自动化测试,我应该怎么做(一般步骤)?
5.你认为该如何选择最适合的自动化测试工具?
6.什么是自动化测试框架?一个好的自动化测试框架应该具备什么元素?
7.说一下你写过的测试框架的代码目录结构是怎么样的?
8.自动化测试框架的类型有哪些?
9.说一下你在实施自动化测试过程中好的代码实践?
10.自动化测试是否仅仅可以是实施在UI层?为什么?
11.你是否熟悉Selenium工具?说一下它是什么?
12.你是否还熟悉其它的自动化测试工具?各自简单的介绍一下?
性能测试问题
1.什么是性能测试?为什么要进行性能测试?
2.性能测试的类型有哪些?
3.列举下用户会面对的性能问题和性能瓶颈?
4.列举下性能测试中常涉及的性能计数?
5.性能测试中并发用户点击量是什么?如何实现?
6.性能测试进入和结束的标准是什么?
7.说一下在选择性能测试工具之前需要考虑哪些东西?
8.在性能测试中,如何识别性能瓶颈?
9.在对应用程序进行性能测试期间一般会执行哪些活动?
10.性能测试中吞吐量是什么?
11.解释下什么是耐力测试和尖峰测试?
尾声
无论什么技术,热不热门,学习都是不可间断的,乘着年轻磨砺技术才是王道,不然在程序员这个后浪一波比一波汹涌的职业里混,你想吃青春饭都吃不了几年。不过,想提升是一回事,如何有效提升就是另一回事了。我工作近十年,也带过不少实习生、应届生,很多年轻人真的很努力在学,加班加点工作卖力,但也就是差点火候,还是方法不对。
上面所有面试题及答案,以及一份配套的学习资源,你可以在公众号:豆子熊,免费获取
还有一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。