测试和开发那个有前途「这几个特征决定你到底适合测试还是测试开发」
突然发现好像挺多人想投测开和测试的,很多人面试的时候也会被问到这几个职位的区别,然后有测试经历或者说有系统学习过测试的人蛮少的,楼主去年投这个岗位的时候也很迷茫,中间在牛客网请教过好几位大佬and前辈,这里做一个小小的总结,主要内容来自于和大佬们的谈话以及《How Google Test Software》这本书,(如果有不准确的地方大家可以评论谈论),也希望和我当时一样迷茫的朋友们能有所收获。
首先明确一下简称吧,毕竟这几个名字太像了,中文容易搞混。软件开发工程师(SWE),测
前言
突然发现好像挺多人想投测开和测试的,很多人面试的时候也会被问到这几个职位的区别,然后有测试经历或者说有系统学习过测试的人蛮少的,楼主去年投这个岗位的时候也很迷茫,中间在牛客网请教过好几位大佬and前辈,这里做一个小小的总结,主要内容来自于和大佬们的谈话以及《How Google Test Software》这本书,(如果有不准确的地方大家可以评论谈论),也希望和我当时一样迷茫的朋友们能有所收获。
首先明确一下简称吧,毕竟这几个名字太像了,中文容易搞混。软件开发工程师(SWE),测试开发工程师(SWT),测试工程师(TE)。
区别
1、SWE也需要做测试的工作,SWE需要编写测试驱动的设计、单元测试、参与构建各种大小规模的测试等(简单说开发其实需要对自己的代码负责,并不是很多人理解的代码写出来扔给SWT和TE去测)
2、SWT也是一个开发者角色,只是工作重心在可测试性和通用测试基础框架上。(SWT也要会写代码,代码要求并不比开发低,他们写代码的聚焦点是测试,PS:以字节为例,大部分的测开是技术序列,代码要求和开发一致,薪资也一致(当时宣讲会听的))。
3、SWE和SWT不是敌人(不是一个生产BUG,一个挑刺的),更多是合作伙伴,SET写代码的目的是可以让SWE测试自己的功能。
4、TE把用户放在第一位来思考,组织整体质量的实践,分析解释测试运行结果,驱动测试执行,构建端到端的自动化测试。(SWT和TE工作有很多交织,SWT更多是要构建测试框架,编写测试工具。TE更多是脚本,测试用例,以及点点点........,以字节为例,TE对代码的要求会相对较低,但是也需要写代码(宣讲会听的))。
5、国内很多大厂的测开其实做的是测试的活,也要很多测开干的就是开发的活,这些都取决于你的组,不是一概而论的。
6、SWT和TE对于知识广度的要求会更高,SWE你也许只需要在一个角度仔细钻研就可以了,SWT和TE则需要你是“万能博士”,正如推荐的那本书的作者所说,招一个好的SWT和TE往往比SWE还难。
7、SWT的天花板也许相对SWE会低(毕竟国内的事实是SWT和TE做主程的很少),但是SWT越来越受重视是不争的事实,同时SWT的平均待遇不低。
特征
最后选择SWT还是TE引用推荐的那本书里的几个标准(节选)(这也是交流的几个大佬也反复的提到是否真的喜欢测试类的工作)。
你可能是一个SET,如果你有以下的特征:
a.你编程时,会内疚的想到还有很多单元测试用例没有完成。随后,你又会考虑各种生成测试代码和验证的方法,而不是手工 编写每个单元测试用例。
b.看到编译器警告时会焦虑不安。
c.当被要求测试一个产品时,你会打开源码,开始思考需要模拟的东西。
d.你心目中领导力是:建立一个伟大的底层单元测试框架,供所有人来使用,或者在测试服务器上每天数百万次的运行。
e.当被问到产品是否可以上线时,你可能会说:所有的测试都通过了。
你可能是一个TE,如果你有以下的特征:
a.你能在已有的代码段中快速找到错误,迅速理解软件失效的模式,但是并不关心从头编写代码或者做修改。
b.你更愿意到一些开源网站上去阅读别人的源码。
c.在现实世界里你很愿意和其他人交流。
d.你心中的领导力是:扶助其他工程师的创意,用更高数量级规模的应用场景来挑战他们的创意。
e.当被问到产品是否可以上线时,你可能会说:我觉得可以了。
总结
综上(大概率是这样的,大家别钻牛角尖,没有优劣之说):
代码能力要求:SWE=SWT>TE
知识广度要求:SWT,TE>SWE
沟通能力要求:TE>SWT>SWE
知识深度要求:SWE>SWT>TE
薪资待遇:SWE=SWT>TE(纯粹意义的开发,测开和测试,当然国内很多公司自己都搞不清这几个Title区别)。
怎么判断自己适不适合做软件测试?
各行都有人选择,行外人想进去,而行内人想出来。这是人性的普遍心理。今天南邵计算机学习就为大家解读什么样的人适合做软件测试,让那些痛苦的人读读这些鸡汤,心里或许会宽慰一些。
1、工作积极主动
工作态度如何,是评价一个测试人员最主要的方面,一个高水平的测试人员(指纯技术能力)如果没有一个好的工作态度,在测试团队中有时候不但不能对测试工作起到推动作用,有时候还起到阻碍作用,而一个愿意工作的测试人员,哪怕他的技术水平不高,人也不聪明,但对自己的工作认真负责,你告诉他的事情,他都可以认真去做,这个测试人员也会对测试工作起到很大的促进作用。这也是为什么很多企业愿意让刚参加工作的人员做测试工作的一个主要原因。另外,测试人员对工作是否主动也会很影响一个测试人员的发展,举一个例子,我的一个测试人员在自己工作空闲的时候会自己去学习QTP,提高自己的技术水平,这样在下一个测试的时候,他可以熟练的使用这个测试工具去进行自动化测试,不但提高了工作效率降低了工作强度而且为自己创造了更好的发展机会(后来被提升为测试组长)。所以说有效的利用工作时间,主动学习对一个人发展是很重要的。另外一个例子也差不多,我的一个测试人员,在自己的测试任务异常终止的时候,而其他测试组任务很忙的情况下,主动要求参加其他组的测试工作,先不说他的技术水平如何,这种主动要求工作的态度就让他从其他人中脱映而出,引起了我的重视,自然对他的工作会格外注意,而我们的每一次的交流都会让他学到很多新东西。
2、认真,细心,不怕麻烦
不能不说的是,测试工作是一个烦琐的工作,如果你不是认真、细心,不怕麻烦的人,建议你最好不要进入这个行业,否则,最后难受的肯定是你自己。
有那么一句话:细节决定成败,这句话格外适用于测试人员。测试人员的在做测试需求的时候,开发人员人员的写的系统需求报告中的每一个需求点都会在测试需求中成为几个测试需求点(你要验证正常情况,异常情况),有时候给人的感觉就象在玩排列组合的游戏,但这个游戏排列组合的情况信桥裂实在太多了,如果你不够耐心,不够细心是很容易遗漏测试需求点的,而这些遗漏的地方往往是问题点(开发人员也容易忘记考虑这些地方,从而产生问题),另外测试工作输入的数据是一个很烦琐的事情举一个例子来说,一个日期合法性测试,很容易总结消戚三、四百个测试数据,你想全部测试工作会是一个什么数量。而更可怕的是,测试不是一次性的工作,经常需要做回归测试,所有烦琐的工作必须不断的重复,而在重复的时候测试人员往往会因为怕麻烦,减少测试用例数,造成测试的不全面。所以说认真、细心、不怕麻烦是一个好的测试必备的素质要求。
3、学习能力强,善于总结
92年我参加工作的时候想找一本软件工程的书那叫一个困难,97年刚接触测试的时候,测试方面的书也几乎没有,这些都对我的水平的提高产生了很大的妨碍,但也并不能成为我滑闭们提高自己水平的借口,97年我们做的测试主要是功能测试,开始也是大猩猩测试,后来一方面从专业书籍里搜寻测试的资料,一方面总结我们自己的经验,1年以后我们基本形成了自己的测试流程和方法,我们有自己的测试计划的编写方法,测试用例编写的规范,测试总结的方法,新来的测试人员可以这些文件很快的提高自己的水平,后来的测试工具学习我们也是采用这种方法,在QTP的学习过程中,我的一个部下,学习了3个月,就基本掌握了QTP的使用,而且还总结了使用QTP常遇到的问题发表到了论坛上,很多了都认为他是一个技术大拿,其实他只是一个工作了8个月,学习了3个月的新手。不断的学习新技术,不断总结在实际工作遇到的问题,解决的方法,并把他们整理归纳,是一个测试人员提高自己的技术水平的最好的方法。还有两点需要说明的是:1、随着测试工作日益专业化,原来的低水平测试人员越来越不能满足测试的需要,测试工具的使用,测试理论的更新,新技术的应用都要求测试人员要不断提高自己的水平;2、好的测试人员不但要理解测试技术,对被测试系统以及开发环境和工具以及系统架构都要很了解才能制定合理的测试方案,也就是说测试负责人不要要了解测试技术,还要了解主流的开发技术、架构和工具(虽然不用成为专家),这一切都要测试人员不断的学习和总结。
面试题:为什么做软件测试,不做开发?
软件测试是为软件产品的质量把关的,目前软件测试的工业化时代还没有来临,自动化软件测试工具还没有能统一起来的模式,大部分还是靠弯慎人工测试,所以软件测试有很大的发展空间和前景。软件测试并不比软件开发轻松,也不比软件开发简单,选择软件测试并不是觉得它更容易,而是自己本身对这个行业更有兴趣,做测试也会更投入,所以选择测试而不是开发。这只是一方面,还可以加一些其他的因素,比如软件测试贯穿于整个软件开发的生命周并芦期埋蔽敬,本人喜欢对个阶段的测试用例进行分析和设计,感觉不开发更有趣。突出出你是真的喜欢测试就可以了,没有什么标准的答案,他就是在考察你的态度问题。希望对你有帮助。
对于任何行业,从业者的水平分布都是成金字塔形的。测试很有前途也很有挑战,祝你成功!
文章评论