别着急,咱们要追本溯源。在回答这个问题之前,先想想看:测试如何保证产品质量?
对于测试,存在两种极端认识:一种是“测试无用论”,认为开发人员就可以搞定所有测试工作,不需要专业测试人员;第二种是认为“待测产品的所有问题都应该被测试人员发现”。
对持有这两种观点的人,笔者并不能苟同。我们可以把测试人员比作医生,拿医生治病来举例。第一种人否定测试人员的价值,好比此人只是小病小疼,自己吃点药就搞定了,不需要看医生;又或者这人接触过的大多是庸医,根本没有提供过有效的帮助,以致于他对医生失去信心。第二种人把产品质量的全部责任都压在测试人员头上,好比他以为医生是万能的,能发现他身上所有的问题。
正因为没有放之四海之内皆准的测试,测试人员本身也面临不少误解,那么对于“自动化测试如何保证产品质量”这种问题就更要留个心眼。笔者非常认同 Cem Kaner 教授的观点,“软件测试是一种技术调查,目的是向相关干系人提供产品相关质量的实验信息”( http://testingeducation.org/wordpress/ ) 。测试人员不是“质量卫士”,测试既不会提高质量,也不会降低质量。尽管有不少公司会把测试人员称为 QA ( Quality assurance ),直译就是“质量保证”。但质量是构建出来的,不是测试人员测出来的。因此,测试人员不能保证产品质量,质量保证应当来源于整个产品团队。
既然通过测试不能保证质量,靠自动化测试更无法保证。
综上所述,关于自动化测试保证产品质量的说法,本身就是个伪命题。
那么,应该如何看待自动化测试与质量的关系?
Cem Kaner 的观点给了我们不少启发,笔者认为测试是一项服务性的工作,测试人员在经过一系列信息收集、技术调查后,应当对产品提供质量反馈。而合理有效的自动化测试,则能够快速获得反馈,从而帮助产品快速迭代。这正是自动化测试的价值所在。
NOTE:上文摘自《Selenium 自动化测试之道》跳转门