什么是测试开发工程师(SET)?

经常有人问到:什么是“ 软件测试开发工程师 (Software Engineers in Test, 缩写为SET)” 借用Google的规范来说其实就是——在测试中的软件工程师;其工作性质上首先是测试,然后才是开发。

那么这里会让大家产生一个矛盾的感觉: 既然SET需要开发的技能,那岂不是既能做开发又能做测试, 直接做开发的岗位不行吗?

我个人的观点是:通常情况下是不行的。因为一名优秀的开发工程师所具备的能力, 不仅仅是熟悉编程语言本身,还需熟悉整个开发阶段的框架和环境,如:代码管理、表结构设计、常用算法和第三方库、常用工具链、环境的持续集成部署等等,而SET岗位里的“开发”环节的维度是不同的,SET是间接接触目标软件【基于在目标软件的测试环节之上的流程改进,或者说测试技术的改进,从简单的已有工具自动化升级到定制工具的自动化, 甚至是从0开发一个专项测试工具;最终目的是提升测试效率,保证软件质量】

按软件开发流程表示关系:什么是测试开发工程师(SET)?

用目标图来表述或者更清晰:

什么是测试开发工程师(SET)?

另外,有的软件测试工程师们经常会疑问:测试工程师生涯里, 应该不会用到编程吧?

------答:当前阶段可能用不到编程, 可是后续一旦接触到自动化测试方面,还是必须利用编程手段高效的解决问题。

我们来看看软件测试工程师(Software Testing Engineer, 缩写为TE)们大致的工作流程有6个:
  • 需求分析
  • 功能用例编写
  • 功能用例评审
  • 黑盒测试
  • 问题跟踪
  • 测试报告
而测试开发工程师们大致的工作流程有7个:
  • 需求分析(需要把2份需求融合起来做分析:第一是产品需求分析, 第二是项目经理或测试工程师给出的需求)
  • 测开用例设计(分析功能用例和自研需求,对专项测试、自动化场景做分析,形成测开用例)
  • 测开用例评审
  • 自研工具的编码和测开用例覆盖(一般会邀请测试工程师共同验证)
  • 用自研工具做黑、白盒测试(单元测试 注入测试 接口mock测试等等)、自动化、性能测试、安全测试
  • 问题跟踪
  • 自研工具改进及持续集成
测试开发工程师在用自研工具去测试目标软件时 ,同时也是在校验自研工具的有效性

打个比方:

  1. 本来是用手抓饭,有些烫
  2. 研发一个隔热手套
  3. 升级成功:戴上手套去抓饭
  4. 手套好不好用?能不能隔热? 得抓一下饭试试才知道,好用则用,不好用则改进~