突然发现好像挺多人想投测开和测试的,很多人面试的时候也会被问到这几个职位的区别,然后有测试经历或者说有系统学习过测试的人蛮少的,楼主去年投这个岗位的时候也很迷茫,中间在牛客网请教过好几位大佬and前辈,这里做一个小小的总结(主要内容来自于和大佬们的谈话以及《How Google Test Software》这本书,如果有不准确的地方大家可以评论谈论),也希望和我当时一样迷茫的朋友们能有所收获。
首先明确一下简称吧,毕竟这几个名字太像了,中文容易搞混。软件开发工程师(SWE),测试开发工程师(SWT),测试工程师(TE)
1、SWE也需要做测试的工作,SWE需要编写测试驱动的设计、单元测试、参与构建各种大小规模的测试等(简单说开发其实需要对自己的代码负责,并不是很多人理解的代码写出来扔给SWT和TE去测)
2、SWT也是一个开发者角色,只是工作重心在可测试性和通用测试基础框架上。(SWT也要会写代码,代码要求并不比开发低,他们写代码的聚焦点是测试,PS:以字节为例,大部分的测开是技术序列,代码要求和开发一致,薪资也一致(当时宣讲会听的))
3、SWE和SWT不是敌人(不是一个生产BUG,一个挑刺的),更多是合作伙伴,SWT写代码的目的是可以让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引用推荐的那本书里的几个标准(节选)(这也是交流的几个大佬也反复的提到是否真的喜欢测试类的工作):
你可能是一个SWT,如果你有以下的特征:
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区别)
大家有时间想详细了解或者想从事这个行业的还是希望大家深入阅读一下《How Google Test Software》,同时借贴再次感谢曾经回答我问题的几位大佬和前辈!
同时附自己去年字节测试开发的面经,大家可以参考一下测试开发的面试难度和流程:
https://www.nowcoder.com/discuss/205655?source_id=profile_create&channel=666
突然发现好像挺多人想投测开和测试的,很多人面试的时候也会被问到这几个职位的区别,然后有测试经历或者说有系统学习过测试的人蛮少的,楼主去年投这个岗位的时候也很迷茫,中间在牛客网请教过好几位大佬and前辈,这里做一个小小的总结(主要内容来自于和大佬们的谈话以及《How Google Test Software》这本书,如果有不准确的地方大家可以评论谈论),也希望和我当时一样迷茫的朋友们能有所收获。首先明确一下简称吧,毕竟这几个名字太像了,中文容易搞混。软件开发工程师(SWE),测试开发工程师(SWT),测试
本文主要通过小例子,介绍下单元
测试
、集成
测试
、
测试
驱动
开发
等相关概念。单元
测试
是通过写代码来
测试
代码的一个小单位
测试
方式。在一个单元
测试
中,一次只能
测试
一个类。例如,如果你正在
测试
一个使用类File,而另一个
测试
类DummyFile是用来消除对物理文件系统的需要,单元
测试
的
测试
类逻辑应该被
测试
。为了使class实现从真实到虚/存根之间切换,接口代替真正的类使用。所以,你的类应使用IFile或IDatabase而不是直接使用File和Database。集成
测试
,也叫组装
测试
或联合
测试
。在单元
测试
的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成
测试
。例如:正在
测试
Cu
很多人都认为只有
开发
转向
测试
,
测试
转
开发
似乎遥不可及,其实不然,只要你有毅力,其实是可以的! 很多人都认为只有
开发
转向
测试
,
测试
转
开发
似乎遥不可及,其实不然,只要你有毅力,其实是可以的! 我大学刚毕业的时候,从事的
测试
工作,由于文凭不高,对于一些java,C#语言不是很感兴趣,只是对C这些底层比较感兴趣,但是底层的都是需要本科以上,而且是重点院校的,于是乎学
测试
去了,大三那边,买了一本软考的软件
测试
的书,花了半年的时间啃完,考过了中级的软考的测评工程师,就是找工作了,来到上海后,用了三个月找到了一份工作,由于没有毕业,从实习开始,做的是手机
测试
,刚开始新鲜感还是有的,大概做了半年,做着
.软件
测试
软件
测试
是在
测试
中识别软件产品和服务的准确性和质量的过程。显然,它的诞生是为了验证产品是否满足客户的特定先决条件和需求。
在一天的工作结束前,确定特定的较终目标并
测试
执行一个框架或应用程序,以指出其错误、或缺陷。
测试
的职责是找到bug并指出问题,并给Dev(
开发
人员)提供一个线索,以帮助他们根据需求纠正错误。
软件
测试
的目标
1.在给定的产品中尽可能多地发现错误(或bug)。
2.演示一个给定的软件产品与它的需求规格匹配。
3.使用较小的成本和努力来验证软件的质量。
4.生成高质量的
测试
开发
和
测试
的六道轮回2012年是移动互联网年,我学习了O-C的
开发
,
开发
了较多的功能和内容,对于
开发
的过程和
开发
后的质量,以及
开发
自测有了新的认识。此前一直站在
测试
的角度去思考
开发
如何做
测试
开发
和
测试
的六道轮回 2012年是移动互联网年,我学习了O-C的
开发
,
开发
了较多的功能和内容,对于
开发
的过程和
开发
后的质量,以及
开发
自测有了新的认识。此前一直站在
测试
的角度去思考
开发
如何做
测试
,如何自测,如何共同保证
测试
。当时觉得不是很有难度,应该可以这样做,应该可以做到什么程度。现在对这个问题有了一些新的看法,也顺便讨论我从从事
测试
行业以来,如何处理
开发
能力和
测试
能力的平衡,内心的所思所想,作为
第一,我投的是
测试开发
不是纯粹的
测试
岗位。
第二,
测试开发
不只是包括功能
测试
,这些,还有性能
测试
,安全
测试
更多方面。这些方面的
测试
需要有些专业的计算机基础知识,以及优秀的分析能力。结合我自身的优势和能力,我认为这个岗位的综合能力和我是非常匹配的。
第三,我了解过
测开
这个职位,我也很喜欢,去探索未知的事情,并对出现的各种结果进行分析来推测原因。我觉得这是一个很有意思的事情。
第四, 我认为
测开
这个岗位长期发展的职业前景
测试
用例的设计方法(由上到下递进):
1)等价类划分法:将无穷的
测试
输入变成有限的输入。如(有效、无效(负数、特殊字符、小数点…))
2)边界值法:从划分的等价类里面选取边界数据的方法
3)因果图法:考虑输入数据之间的组合关系(在产生了有效条件以后,进行组合)
4)用户故事法:
5)错误推
对于没有进入IT领域的同学而言,软件
测试
并不陌生,但如果听到
测试开发
,他们一定会感到十分困惑,这究竟是
测试
呢?还是
开发
呢?
按照字面意思理解,大家或许会觉得
测试开发
是指既能
开发
产品又能
测试
产品的“技术王者”,但其实并非如此,今天我们就来看看这两者到底有什么
区别
。什么是软件
测试
?
顾名思义,就是在规定的条件下对一个产品或程序进行操作,以发现程序错误,衡量软件质量,并对...
软件
测试
是按照一定的评判标准(需求)来进行活动的
2.软件
测试
和软件
开发
的
区别
?
软件
开发
:用程序
开发
的方式把用户的需求实现成一个软件(例如APP,web网站,小程序等)
角色:软件
开发
人员
软件
测试
:主要由
测试
人员进行
测试
,看是否满足用户需求
(1)软件
测试
和软件调试的
区别
?
软件调试发生在软件
开发
过程
目的不同:
软件
测试
是查看软件是否满足用户的需求;软件调试是
开发
人员检查程序是否实现了他想要程序实现的功能(本质
区别
)
角色不同:
按照字面意思理解,大家或许会觉得
测试开发
是指既能
开发
产品又能
测试
产品的“技术王者”,但其实并非如此,今天我们就来看看这两者到底有什么
区别
。 什么是软件
测试
?
顾名思义,就是在规定的条件下对一个产品或程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
测试
工程师主要工作内容是检查软件有没有Bug,是否具有稳定性,并写出相应的
测试
计划、
测试
规范、
测试
用例、
测试
数据、测...
测试
驱动
开发
(TDD)是一种软件
开发
的方法,其主要思想是先编写
测试
代码,再编写生产代码,然后重复这个过程。TDD的目的是通过
测试
来驱动软件的
开发
,以确保软件的正确性和可靠性。
TDD的特点包括:
1. 自动化
测试
:TDD需要使用
测试
框架来自动化
测试
,以确保迭代的代码能通过
测试
。
2. 先
测试
后编码:TDD的过程是先编写
测试
代码,再编写实际代码,以便直接验证代码是否满足需求。在
测试
失败时,即可识别出产生错误的代码。
3. 简洁和可测性:TDD强调简化代码和提高代码可测性,以便更好地实现代码重构和维护性。
4. 持续重构:TDD的过程是持续迭代的,每次迭代之后需要进行代码重构,以使代码更加简洁,可维护和高效。