从质量的角度上讲,软件工程师只对产品的特性和这些特性的质量负责。他们负责容错设计,故障恢复,测试驱动开发,单元测试,以及和软件测试开发工程师一起为产品特性编写测试脚本。
  测试开发工程师是提供测试特性的开发工程师。一个框架,可以通过模拟新开发的代码与桩(stub)、虚拟对象(mocks)、仿冒(fake)的依赖关系将新开发的代码进行隔离,并且确定提交顺序以管理代码的合入。换句话说,测试开发工程师编写可供让软件开发工程师进行特性测试的代码。实际上大多数测试是由软件开发工程师执行的。测试开发工程师是确保特性的可测试项,而软件工程师则更多参与测试用例的编写。
  在Google用户集中测试是测试工程师的主要工作。假设软件工程师和测试开发工程师已经将执行模块和特性级别的测试进行得非常充分了,下一步的工作是了解这个可执行的代码和数据聚合的产品是如何在一起工作以满足用户的需要的。测试工程师扮演着二次检查这些经过勤奋的开发工程师开发出的作品的角色。任何明显的缺陷都是早期开发工程师测试不充分或粗心大意的表现。当这种缺陷非常罕见时,测试工程师可以把主要工作转为确保软件可以在用户的场景下正常运行,确保软件是高性能的和安全的,是符合国际化标准的等等。测试工程师执行很多测试,协调众多测试工程师测试工作,联系测试工程师、外包测试工程师、代码聚合测试工程师、内部测试人员(dog fooders)、beta版用户和早期用户(early adopters)。他们会不断沟通包括包括基本设计、特性的复杂性以及失败的避免方法在内的可能产生的风险。一旦测试工程师介入,他们的任务会变得无休止。