「测试开发工程师」和「软件测试工程师」有什么区别?

发展趋势:TE-> SDET->SET进化,测试工程师和软件开发工程师的岗位在融合,开发技能变成测试工程师的标配技能之一。

一.「测试开发工程师」和「软件测试工程师」职业定义

什么是软件测试工程师

软件测试工程师(Software Testing Engineer)指理解产品的功能要求,并对其进行测试,检查软件有没有错误(Bug),测试软件是否具有稳定性(Robustness),写出相应的测试规范和测试用例的专门工作人员。简而言之,软件测试工程师在一家软件企业中担当的是“质量管理”角色,及时发现软件问题并及时督促更正,确保产品的正常运作。

什么是测试开发工程师

软件测试开发工程师(英语:Software Design Engineer in Test),该词来源于微软。 SDET在敏捷软件流程中起着越来越关键的作用,既要快速了解各项知识,又要对业务能够快速上手。 SDET是为了解决在推行敏捷过程中,软件测试效率无法突破,并且在快速迭代中测试无法面面俱到,而产生的一种保证开发与测试过程之间无缝转换的一种角色。

二.SET和SDET是什么?

软件“测试工程师”和“ QA”角色已经存在了数十年,2000年大规模的测试自动化变得必要。 根据Wikipedia的说法,微软在2005年创造了“软件开发测试工程师”(SDET)的头衔,而其他公司(例如Amazon和Apple)很快采用了它。Google为相同类型的角色创造了“测试中的软件工程师Software Engineer in Test”(SET)的称呼。

三.软件测试工程师和测试开发工程师的区别

测试开发工程师就是测试中的软件开发工程师或测试中的软件设计工程师,目前许多组织都要求测试开发工程师这类专业人员能够参与应用程序开发以及所开发软件的测试。测试人员可以不参与软件开发的手工测试人员或质量分析人员。测试开发工程师通常参与开发高质量,健壮和高性能的代码,这对于自动化测试用例或设计可用作测试工具的测试框架很有用。测试开发工程师还审查了软件产品的设计和过程。测试开发工程师随着DevOps,敏捷和持续测试的增长,它的职责正在增加。

测试开发工程师具有熟练的开发和测试技能;另一方面,测试人员参与到准备和执行测试用例的工作中,无论是手工还是自动化。

测试人员是具有有限的编程技能,他们非常关注黑盒或功能测试,而测试开发工程师是具有良好编程技能,可以完成白盒测试以及测试自动化方面的开发人员的工作。

测试开发工程师在软件开发方面非常精通,他们可以参与测试自动化工具的开发。测试人员不需要开发测试自动化工具,他们可以使用这些测试自动化工具来自动化软件应用程序或项目所需的测试用例。

通常在组织中,开发测试自动化框架的测试人员或质量分析人员承担测试开发工程师的角色,并且可以参与软件应用程序或其他测试自动化框架的设计评审。

测试开发工程师的职责比测试工程师承担的角色更多,如性能测试、安全测试、测试数据的自动生成、测试环境设置、开发测试自动化工具等。

与手工测试人员不同,测试开发工程师需要具备领域知识,这样他们就可以参与设计测试用例。测试人员的所有职责都由测试开发工程师承担。

有些组织,如微软,不区分测试人员的不同角色,并期望他们手工执行测试,以及在需要时编写测试自动化脚本或代码。组织现在强调测试人员至少要学习一种编程语言,他们可以使用这种语言在测试自动化工具上工作。此外,自动化测试工具如Selenium、FitNesse、SAHI等具有灵活性,可以使用各种编程语言(如Python、Pearl、JAVA等)

结论:测试开发工程师不仅仅是一名测试工程师,它是开发人员和测试人员的混合体,他们接触过项目管理,交互并理解最终用户软件需求,了解产品或领域知识,参与产品或软件设计,知道如何编码和构建测试自动化工具。

小故事:陆奇和SDET

微软作为软件时代发迹的软件公司,对于软件开发有一套严格而切实有效的开发流程和管理模式方式。它在组织架构上是典型的开发,测试,和项目经理三权分立的架构。这三个组织的最高领导人,在很多的组织里,一直到VP以上才汇报给一个人。举例来说,在微软的在线服务部门,陆奇才是第一个让必应的开发,测试,和项目经理的最高负责人汇报到一起的人。

微软之所以采取这个架构,在1995年的时候是可以理解的。那个时候互联网并不发达,软件开始主要靠软盘后来靠光盘发售。如果有严重的bug,修复起来的成本非常的高。所以在当时,稳定的开发和严格的测试,以及明确的用户需求都是一个软件公司成功必不可少的。

但是到了互联网时代互联网公司不是这样的。Facebook创始人马克扎卡伯格提倡的是快速开发快速发布,有bug上线以后再修。测试在新兴的互联网企业里面的比重大幅度的下降

因为互联网公司的软件都是自己部署的,所以可以很方便的修改和重新部署,不需要测试的那么仔细。与此同时,现在互联网已经非常发达了,即使传统软件公司要修一个严重的bug并让所有买了软件的人更新,也不再是一件那么高成本的事情。所以微软养着的庞大的测试队伍,不但消耗微软大量的资源,而且不产生实际的效益。

如果对软件测试、接口、自动化、性能测试、LR脚本开发、面试经验交流。感兴趣可以1079636098,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

陆奇领导的在线服务部门。其改革的主要目的是为了大幅度减少这些并不产生实际效益的测试部门。陆奇效仿其他互联网公司,在Bing开发组织中推行所谓的Combined Engineering。具体来说是把开发人员和测试人员混编,大家都干同样的事情。这个Combined Engineering开始只是一两个小组试点。并到宣传这种做法的好处,开发效率高,开发人员对自己的代码负责等等。大约一年多以后整个必应都被Combine掉了,测试作为一个独立的组织在微软的在线服务部门不存在了。专门的测试人员还留了一点,大部分的和开发人员合并,并且汇报给同一个领导。合并以后测试人员以开发人员的标准做绩效考核的。结果就是测试人员的绩效考核通常都比较低,而那些垫底的就被开除了。微软的陆奇通过这个Combined Engineering,解决了很多微软高层一直不能解决的问题:裁减测试人员。这个Combined Engineering后来就大幅度向微软各个部门推广了。

有人喜欢创造世界,他们做了开发者;有的人喜欢开发者,他们做了测试员。什么是软件测试?软件测试就是一场本该在用户面前发生的灾难提前在自己面前发生了,这会让他们生出一种救世主的感觉,拯救了用户,也就拯救者这个软件,避免了他们被卸载的命运。

微信搜一搜【程序员一凡】关注这个文绉绉的程序员,关注后回复【面试】有我准备的一线大厂面试资料和简历模板,希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。如果有幸我们江湖再见!

你可能感兴趣的:(「测试开发工程师」和「软件测试工程师」有什么区别?)