测试开发工程师,通常是指具备开发能力的测试人员。
近年来,随着DevOps和敏捷过程越来越广泛地被采用,软件测试、特别是自动化测试得到了迅速的发展。DevOps希望建立一个快速、频繁、可靠的一体化交付过程;敏捷则要求对交付件质量进行持续、及时、全面的反馈。软件测试作为研发过程中的重要环节,其能否达到快速响应、有效度量,实现过程自动化、系统一体化的目标,对整个组织的研发效率和产品质量将产生深远的影响。
这几年,Scrum和XP(极限编程)等敏捷开发过程愈发流行,Shift-Left Testing(测试左移)和TDD(测试驱动开发)得到了越来越多的重视。抛开通常以开发人员为主导的UTDD(单元测试驱动开发)这里不做赘述,ATDD(验收测试驱动开发)需要测试人员在需求分析和系统设计方面有着更多的参与和见解,这样才能够设计出高可用的用例场景,以驱动需求进一步明确、设计更加周全,从而推进相关干系人做到对需求统一理解,做好同行评审,并保障后续开发工作的顺利进行。
随着企业软件系统越来越复杂,很多公司选择了微服务的架构和前后端分离的技术,带来了更多的自动化、性能、接口和安全性等方面的测试需要。加上DevOps、持续集成和部署相关平台的应用,容器和虚拟机云服务的引入,这些测试有关的平台、工具和环境的开发、维护,无不需要更多的技能。我们预见,自动化测试作为质量度量活动中的重要一环,未来将具备以下几个趋势,这将带来自动化测试人员从简单的工具使用者到平台开发者的一个重大转变。
过程一体化
- 使用统一的平台完成测试设计、脚本开发和调试、执行调度、统计分析、报告展示等活动;
- 同其他DevOps、CI/CD工具实现无缝对接,作为整个研发系统的一个有机组成部分而发挥效用。
- 将测试脚本、测试数据,AI测试的语音、说法和图片等资产进行集中化管理,在组织层面实现共享;
- 将测试设备硬件接入云端,实现集中管理、远程访问;采用虚拟化技术构建不同类型、版本的操作系统和浏览器,并做到按需启动和销毁,在组织层面实现共享。
测试服务化
- 提供方便的测试管理页面或接口,含测试人员外的任何人、在任何时候,可方便地发起指定范围和环境上的一次测试;
- 测试完成后,及时生成、分发测试结果和分析报告,完成度量和评估,为后续工作安排和决策提供依据。
著名咨询公司凯捷与Micro Focus在2020年末联合发布了全球质量报告2020-21(具体可参考软件质量报道公众号文章《2020-21软件测试中的重要趋势及应对措施》)。来自32个国家、10个行业的1750名QA/测试经理、首席信息官和其他IT高管参与了有关软件测试发展趋势的调查,总结出测试领域的主要趋势,内容包括:QA团队正逐步转型为质量协调者;自动化测试比重不断上升;测试环境和数据管理不断完善;AI技术在测试中的作用持续上升。这些趋势为软件测试从业者指明了方向,也提出了更高的技能要求。
这是测试工程师最好的时代,因为以手工测试为主的重复劳动已成为过去,测试从业者的能力和待遇不再亚于开发人员;这是测试工程师最坏的时代,很多大厂已经将劳动密集性的重复测试工作外包给了第三方,转而只雇佣相对少量具备更强专业能力的高端人才。
为适应软件测试的发展趋势,帮助大家提高测试方面的综合技能,我们即将推出测试开发有关的专题。内容包括以下3个方面,欢迎大家一起探讨和多提宝贵建议。
- 测试人员开发技能:编程语言、计算机系统、网络和数据库等;
- 软件测试高级技术:自动化、性能、接口测试工具使用和开发;
- 软件研发工具链: DevOps、CI/CD持续集成和部署等工具链。
最后,我们翻译一份来自微软,这个市值重回世界第一的软件公司的一份用人需求,供正在朝着测试开发方向努力的朋友参考。
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#)。