最近感兴趣,想研究下互联网是如何测试的。虽然我是测试开发,但是我对人力和自动化一直存有疑义。最近互联网自动化测试一片风生水起啊,想客观的审视测试这个职业,而不是片面的强调测试的重要性。于是就找了一本到现在都木有人翻译的书《how google tests software》,来尝试翻译给自己看。
前言(一)Foreword by Alberto Savoia
前面介绍了一段如何被James Whittaker忽悠来写这本书的前言的(俺就忽略了)。
这个世界是否真的还需要软件测试的书籍?因为已经有很多的书籍来讲述旧的测试方法和抛出疑问和过时的建议,但是这本书不是这类书籍。这也是为什么我希望如果是我写的该多好。世界上的确需要这种实践类的测试书籍。
互联网已经显著改变了大多数软件的设计、开发和发布模式。很多曾经广为流传的测试书籍里所谓的测试最佳实践,其实可能是低效的;在当今的环境下,某些情况下,甚至是更糟。在我们的行业里,事物更新如此之快,以至于许多好些年前写的测试书籍已经过时而传达错误的观念。这些书籍应该被回收,而不是继续传播下去。但是,“how google tests software”这本书给你的是及时的、可适用的方法,它讲述了世界上最成功、最快速发展的互联网公司怎么处理二十一世纪在测试领域棉铃的独特挑战。James Whittaker和他的合作者发现了谷歌在测试一些最复杂和流行的软件方面的一些非常本质的东西。而我自己是经历了这整个过度阶段的。
我是在2001以程序总监(engineering director)身份加入谷歌的。那时候,我们有大概200个开发者和3个测试人员。我的开发者已经负责测试他们自己的代码,但是测试驱动开发和自动化测试工具,例如JUnit才刚面世,因此我们的测试主要是ad-hoc和依赖开发个人写代码时勤奋时写上的。但是那也是好的。我们有一个好的开始,我们不得不快速的行动,否则我们无法竞争过我们强大的对手。
尽管如此,随着公司的发展,我们的产品开始对我们的用户变得更加重要,在测试领域就需要增加更多的投入。但是我们只有3个测试人员,因而我们让开发者更多的参与测试。随着一些谷歌的同事,我引入、教授和推动单元测试。我们鼓励开发人员自己做测试,并使用JUnit等工具来自动化。但是采用是很缓慢的,并且不是每个人都能接受开发人员要测试自己的代码的观点。为了保持这一势头,每周,公司周五下午,我会给写了测试用例的开发人员奖励,来让开发人员注意需要测试。
然后,不幸的是,这种并没有完全奏效。程序猿发现为了做充分测试,他们不得不为每行代码多写两三行的测试代码,并且当被测代码变化后,还需要维护原来的测试代码,也很容易引入bug。因而发现仅仅是单元测试是不够,我们还需要集成测试、系统测试、UI测试等等。当它需要测试时,我们就持续学习,不断成长,并且我们需要快速的做测试,要非常快。
为什么如此紧急?OK,我不相信大量的测试会让一个糟糕的想法或者是一个有问题的产品变得成功。我觉得错误的测试方法会扼杀产品的增长,并且会对竞争对手打开大门。谷歌当时正在那种情况下。测试变成是持续成功的一个障碍,并且正确的测试策略会跟上我们快速增长的用户和产品,而且也没有放缓公司员工参与各种创新、解决方案和工具的尝试。当然不是每种方法都有效,但是在这个过程中,我们学会了各种有价值的课程和实践,适用于希望和谷歌一样快速的公司。我们学会了怎样在不影响开发进度的情况下重视质量。这本书所描写的,就是在谷歌这样工作背后的思考和原因。如果你想理解谷歌在二十一世纪互联网、移动、客户端领域面临的测试的挑战,你就来对地方了。James找到了谷歌测试的本质。
最后本书需要注意的一点:James他来到谷歌,融入这里,也参与过大型重要的工程,比如Chrome,CHome os。不过,不像他以前的一些书,这本书很多的材料不是他自己的。他更多是把谷歌测试的方案报告给大家。
完结