测试工程师是谷歌工程生产力(EngProd)的一部分。我们为用户代言,提供全面的测试解决方案,并在创造成功和可靠的产品和平台方面发挥关键作用。在Google,测试工程师不是点点点,我们是技术工程师,我们的重点是推进产品的卓越性和工程生产力。
简而言之,在谷歌做测试工程师是COOL(Constant learner持续学习,Out-of-the-box thinkinger打破常规,Orchestrator沟通协作,Leading-edge user超级用户)。
持续学习
持续学习是谷歌测试工程师的动力。我们全面了解软件栈的所有部分是如何相互连接的,以及存在或需要什么样的覆盖范围来测试栈之间的连接。这些产品知识使我们成为测试专家。我们从开发过程的一开始就与软件工程师紧密合作,在功能实现之前讨论设计的可测试性。 我们开发测试策略、方法和测试计划;我们编写脚本、设计系统、构建工具和测试基础设施。我们审查设计文档,深入研究Google的大量代码库,分析堆栈,并确定生产问题的根本原因。我们不仅建立了深厚的技术专长,并通过识别代码库中的薄弱点来进行风险管理,我们还找到了创造性的方法来了解软件并发现潜在的问题。我们的工作方式也给了我们灵活性和独立性,让我们可以探索和学习新的技术,如机器学习概念和云计算,并建立新的测试解决方案或改进现有的解决方案。
打破常规
我们通过提供优化的解决方案来解决工程上的低效、测试上的差距和流程上的差距,倡导工程上的卓越。我们不断地思考如何让机器来完成工作,以提高测试能力和生产力。在Google,每分钟都有成百上千行代码被检查。为了保持速度、质量和代码健康,我们设计了创造性的方法来测试和调试测试失败--比如执行差异测试,从日志中构建动态测试用例,设计启发式算法来识别测试失败的罪魁祸首,构建解决方案来减少测试运行时间,以及实现 stub, fake、mock对象和服务器来帮助开发人员编写稳定的单元和集成测试。除了设计创造性的测试和调试测试失败的方法,我们还专注于通过定义和测量生产力指标和产品健康指标,如质量、稳定性和性能,来提高工程卓越和产品卓越。例如,搜索、广告、地图、YouTube、云计算、自动驾驶汽车和谷歌应用的测试,这些用传统的测试实践是无法扩展的。
参考资料
沟通协作
是谷歌测试工程师的一项重要职责。作为协调者,我们可以与跨职能团队合作,包括产品经理、技术项目经理和软件工程师,以定义关键用户旅程(CUJs critical user journeys),确定测试策略,并确保在正确的配置/环境中运行正确的测试。凭借我们强大的沟通和协作能力,我们与跨职能团队合作,并在传播新工具、技术和最佳测试实践方面扮演传播者的角色。 我们也有机会举办Hackathons(黑客马拉松)和Fixits,接待实习生,推动大学生招聘活动,与开源社区一起参与开源产品的测试,倾听反馈,并将反馈转化为产品改进。
超级用户
做测试工程师的乐趣! 我们可以参与产品开发,参与产品设计、文档和原型的评审,早期玩转功能和产品,并提供明智的反馈。最重要的是,作为早期采用者,我们可以穿戴可穿戴设备,乘坐自动驾驶汽车,通过AR/VR置身于自己的世界中,与谷歌助手一起参与做家务,并拥有多台笔记本电脑、手机和智能显示设备!