1.3 谷歌的软件测试
谷歌的软件研发特征是:典型的互联网企业,产品完全是自运营,以周或者更短的周期发布版本。有创新型、实验性质的新业务,也有平台性质的搜索引擎。需求的提出并非客户主导。
开发测试比是20∶1。这个数据从很多渠道都可以看到,曾有产品研发经理用这个数据“鞭策”测试经理,说测试应该提升能力。但是测试最应该提升的是能力吗?不是,是定位。
测试职位的名称:SDET(软件开发工程师,测试方向)。在谷歌,这些人的主要职责不是功能测试设计、执行以及自动化实现,而是以下几点:
1)帮助开发更快更好的测试。谷歌有一个“吃自己的狗粮”的文化,自己开发的功能自己测试。专职的测试工程师主要是根据软件的功能和测试内容,设计测试方法,并提供测试工具,典型的例子是谷歌地图的测试工具。测试工程师还负责探索和引入新型的测试思路,帮助更有效地发现缺陷,典型的例子是探索式测试的引入。
2)帮助产品更好地采集使用信息和用户反馈。采集使用信息是对用户操作过程的数据进行性能和易用性分析,目的是帮助分析业务达成目标的瓶颈是什么,比如分析用户放弃操作的比例和原因。更好地采集用户反馈,典型案例是谷歌地图的用户问题报告功能,用户发现地图错误时,用几个非常简单的步骤就可以进行缺陷报告。为什么谷歌的测试会有这个职责?我认为主要因为产品是自运营的,这使得研发需要主动发现产品缺陷,同时产品的发展、新需求的发现需要从产品应用中得到启发。
3)安全性、可靠性、性能等专项测试。这些测试内容非常专业,在谷歌也是由一个集中的专项测试团队进行测试的。
谷歌应该说是一个非常成熟的互联网公司,互联网的业务特征决定了这个组织对一般功能性缺陷不敏感,但是对商业目标是否达成十分敏感,自运营决定了产品的缺陷非常容易更正,文化决定了测试工程师不做功能测试(其实,除了狗粮文化,还有一个组织机制也许更关键,谷歌的研发团队在做完一个产品后,会自由重组,信誉不好的开发者很快就会被组织淘汰)。