读者提问:
测试开发工程师到底是测试,还是开发 ?
鱼鱼回答:
既是测试,也是开发。
首先,测试开发是测试工程师,他们是服务于业务测试同学的,目标是解决业务测试工程师的具体问题。这就要求他们必须具备测试思维。
其次,测试开发也是开发工程师,他们会针对业务测试同学的具体诉求设计研发对应的小工具,或者研发定制化的一套测试平台。这就要求他们同时具备编程能力。
测试开发工程师,通常是指具备开发能力的测试人员。
近年来,随着DevOps和敏捷过程越来越广泛地被采用,软件测试、特别是自动化测试得到了迅速的发展。DevOps希望建立一个快速、频繁、可靠的一体化交付过程;敏捷则要求对交付件质量进行持续、及时、全面的反馈。软件测试作为研发过程中的重要环节,其能否达到快速响应、有效度量,实现过程自动化、系统一体化的目标,对整个组织的研发效率和产品质量将产生深远的影响。
这几年,Scrum和XP(极限编程)等敏捷开发过程愈发流行,Shift-Left Testing(测试左移)和TDD(测试驱动开发)得到了越来越多的重视。抛开通常以开发人员为主导的UTDD(单元测试驱动开发)这里不做赘述,ATDD(验收测试驱动开发)需要测试人员在需求分析和系统设计方面有着更多的参与和见解,这样才能够设计出高可用的用例场景,以驱动需求进一步明确、设计更加周全,从而推进相关干系人做到对需求统一理解,做好同行评审,并保障后续开发工作的顺利进行。
随着企业软件系统越来越复杂,很多公司选择了微服务的架构和前后端分离的技术,带来了更多的自动化、性能、接口和安全性等方面的测试需要。加上DevOps、持续集成和部署相关平台的应用,容器和虚拟机云服务的引入,这些测试有关的平台、工具和环境的开发、维护,无不需要更多的技能。我们预见,自动化测试作为质量度量活动中的重要一环,未来将具备以下几个趋势,这将带来自动化测试人员从简单的工具使用者到平台开发者的一个重大转变。
过程一体化
资产集中化
测试服务化
著名咨询公司凯捷与Micro Focus在2020年末联合发布了全球质量报告2020-21。来自32个国家、10个行业的1750名QA/测试经理、首席信息官和其他IT高管参与了有关软件测试发展趋势的调查,总结出测试领域的主要趋势,内容包括:QA团队正逐步转型为质量协调者;自动化测试比重不断上升;测试环境和数据管理不断完善;AI技术在测试中的作用持续上升。这些趋势为软件测试从业者指明了方向,也提出了更高的技能要求。
这是测试工程师最好的时代,因为以手工测试为主的重复劳动已成为过去,测试从业者的能力和待遇不再亚于开发人员;这是测试工程师最坏的时代,很多大厂已经将劳动密集性的重复测试工作外包给了第三方,转而只雇佣相对少量具备更强专业能力的高端人才。
为适应软件测试的发展趋势,帮助大家提高测试方面的综合技能,我们即将推出测试开发有关的专题。内容包括以下3个方面,欢迎大家一起探讨和多提宝贵建议。
最后,我们翻译一份来自微软,这个市值重回世界第一的软件公司的一份用人需求,供正在朝着测试开发方向努力的朋友参考。
Responsibilities 职责:
Design, develop and implement automated tools and test infrastructure for validating Exchange features and interfaces; 设计、开发和实现自动化测试工具和平台,用于验证Exchange邮件服务的功能特性和接口。
Participate in ongoing product specification and code reviews; 参与产品需求规约和代码的评审;
Translate customer requirements and product goals into appropriate tests; 根据客户需求和产品目标,设计充分、有效的测试用例;
Overall 60-80% of your time will be developing code in C++ (moving toward C#). 工作中6到8成的时间,将使用C++语言进行开发编程(未来有可能切换到C#)。
我相信,有很多测试人员会不断问自己,自己到底要不要坚持做测试,测试的职业发展到底怎么样?如果你还在迷茫,在到处找各种大牛问类似的问题,我希望这篇文章,你看完能够结束你的这个烦恼,给你更多的指明方向,当然也有更多的压力。
所以,现在开始聊聊,如何提高技术能力这个话题。大致的意思就是,从软件测试入门,学习各种技术,然后到达一个比较好的职位和薪资水平。这是一个很长的,很痛苦的过程。有很多人,没开始就放弃,有很多人,开始了一点,就死在沙滩上,不想改变自己。有的人前进了一大步,初步达到了他想要的结果和目标。下面,我给出一个学习成长路线,也许不适合你,但是希望对你有帮助。
上面只是描述了一种测试职业道路发展规划,偏重代码技术方面。测试领域有,服务器端测试,客户端测试,安全测试,性能测试,接口测试,自动化测试,渗透测试,测试开发。所以,如果你达到了测试开发的水平,其他方面测试,对你来说也不会太难。
软件测试理论知识,这个必备,当然,有些基本概念我都不清楚,所以,有时间,我也得去学习,复习下软件测试理论。这部分包括,软件测试基础理论和方法。例如软件生命周期,测试用例编写方法,软件测试原则。软件测试管理相关技术,软件各个阶段评审,软件测试计划编写,软件测试过程管理,软件验收,软件测试整个过程一些文档规范等等。
语言基础,这部分,你可以选择Java或者Python入门。或者其他编程语言,这部分,在我博客都有入门教程。看你适合Python还是Java,我个人推荐先Python入门,然后再去学习Java。初学诶,认真学习一个月足够,第二门语言,一个礼拜就可以入门。基本上很多思想和语法是相通的。
手工转自动,这是一个痛苦过程,有些人天天看语言基础,不知道如何练习,天天入不了门。这里推荐,在你学习了一个语言之后,你一定要找一个事情去练习,熟悉这个语言的基本使用。推荐,结合Selenium学习Web自动化测试。通过脚本编写,有助于你提高语言基础知识的理解和运用。在练习自动化脚本过程中,你得到快乐,会帮你提升学习兴趣。
自动化脚本开发,这个是在手工转自动过程之后,你需要大量的练习,如果Selenium自动化脚本开发,你起码要完成100个自动化测试用例,你需要对seleinum达到熟练使用的地步。快速写出自动化测试用例。
了解和接触框架,这里提到框架,是只自动化测试框架,不是指开发用到的框架。继续深入研究Selenium和一些自动化测试框架的知识。例如,什么是框架,框架解决什么问题,框架组成组件有哪些。这部分包括,单元测试框架,Java中Junit或者testNG,Python中unittest.
设计简单测试框架,这个在我博客也有,例如Python+Selenium从零开始到设计自动化测试框架。先学会设计一个POM设计思想的框架。
常见设计框架设计,前面我们有了POM设计框架的思想,接下来我们要学习数据驱动框架,关键字驱动关键,混合测试框架,还有行为测试驱动框架。
Linux和数据库,不用说,自动化测试到一定深度,也需要用代码连接数据库去进行测试,linux和shell脚本,基本上测试环境也会接触到。如果要做自动化部署和运维,常见的linux和shell脚本是有必要学习的。这部分,请看linux和shell脚本入门系列。
版本控制和持续集成,有些人在公司接触了版本控制软件,例如SVN和git,随意选择一个你公司在使用的版本管理软件,去学习它,要学会基本的操作,工作中常见的,用得到的需要掌握。持续集成,这个一个很火的话题,看到持续集成就要想起Jenkins,需要安装和简单配置Jenkins,如何在上面挂一个job等等,这部分,接下来我会写系列文章。
Web前端,放在这里,是为后面的web开发学习做准备的,前面的自动化测试,我们接触了一点点前端的知识,这部分已经有了javascript入门教程写,接下来会写HTML和XHTML和XML和CSS等入门教程。
写一些小程序,假如你是选择Python,你可以试试爬虫。Java其实也是可以写爬虫。
完全掌握一门编程语言,这个可以放在和写一些小程序一起去学习和实践。如果你选Python,你可以学习Django框架进行开发一个web或者一个博客。如果是Java,你需要学会web开发入门,尝试去了解Java三大web框架,优先学习SSH框架。后面的阶段,我就不介绍了,我也不会,也是我的一个学习目标。
虽然市场上,很多测试开发工程师,没有这里提到的各种水平,但是他们有一个特点,开发,代码基础特别扎实,甚至有些做过一两年开发。我强烈建议你按着这个学习路线进行学习,坚持学习,尽量到达测试开发的目标,如果达不到,你也会接近这个目标,你到时候的能力也会让大部分羡慕,相信自己,努力学习,坚持下去,不轻易放弃。
2023全栈高级测试开发测开平台之企业级项目开发实战篇