很长的时间以来,测试人员总是被看做是“质量保证”人员,但作为一个超过10年的一线测试老兵来说,从心而论,测试人员或团队却不能保证高质量的软件产品。为了说明这个观点,我举几个例子。大家可能都知道,软件产品的最初版本(Version 1),通常来说都是由很多质量问题(Bug),这是一个非常普遍的现象,小公司的软件产品是这样,大公司的软件产品也是这样的。难道是Version 1软件产品没有测试人员么?还是测试人员的水品不行?显然都不是。另外一个现象就是,很多成熟的软件产品也会出现很多质量问题,例如很多大型软件基本上每个月都与补丁以及安全漏洞。那么到底是什么原因呢?其背后的根本原因是测试人员无法保证软件产品的质量。有了测试团队,并非一定能够解决质量问题,并非一定能够保证软件质量。有了好的测试团队,也未能够百分百保证软件的质量。再举一个类比的例子,现在所有的房屋建设都有监管机构,但是豆腐工程仍然是层出不穷,显然监管机构不能绝对保证质量。
2)测试人员的价值在哪里?
既然测试人员不能保证质量,那么测试人员的价值在哪里呢?我也曾经多次问过自己,最后我总结出测试人员的价值在于为产品开发提供有价值的质量反馈。这里面的”有价值“,应该体现为深入的,系统的和犀利的见解(Insights),另外这些见解应该和软件质量息息相关,这些都是质量保证的一个重要环节。而质量保证本身是由整个项目组共同努力的目标或结果,而绝非测试人员能够独自保证的。对于日常的测试活动,例如功能测试,性能测试和安全性测试等等,这些活动的目标都是为质量提供有价值的反馈:反馈包括不同的层次和类型,例如产品缺陷(Bug),设计优化建议,用户体验反馈等等;从大类来说可以分为产品属性,用户体验和流程优化三个方面。
测试人员提供的价值和医生为病人提供的价值很相似:医生为患者提供了关于健康的有价值的反馈,但是不能保证病人一定能被治愈。医生会做很多检查工作,就像软件质量的度量指数;医生开的方子就像测试人员提供的质量反馈一样。
另外,测试人员往往产品的专家,同时也是非常了解客户,所以测试人员的见解往往非常有价值,而且是独特的。
3)测试人员的职责
讨论清楚了测试人员的价值后,再谈谈测试人员的职责就比较容易了。总的来说,质量保证的任务是一定的,无非来说有些有开发人员来做,有些是测试人员来做,有些是项目经理来做,没有统一明确的分工,每个团队都有自己的特点。这种分工通常没有一个确定的模式。影响这种分工的包括人员的特长和开发测试比例等因素。举例来说,据谷歌测试总监介绍,谷歌公司的开发测试比例为10:1,微软的测试总监也“微软测试之道”中提到微软的开发测试人员通常为1:1 到2:1之间。据我所知,很多的软件公司也基本上也2:1-3:1之间。因此,测试人员的职责在各个公司各不相同。比如说,在10:1的公司,我相信测试人员是不可能有时间为项目写具体功能测试用例或性能测试用例等,那么这种测试人员可能会在更高层次上提供质量反馈,比如说质量保证流程,需求审查等等。因此,无论哪种公司,测试人员的价值都应该是一致,就是有价值的质量反馈。这
种价值应该得到团队的认可和确实帮助了产品质量的保证。
4)测试人员的发展
测试人员发展和开发人员发展类似,分为管理路线和工程师路线,管理路线包括测试主管,测试经理,测试总监等;工程师路线包括工程师,高级测试工程师,测试架构师等等。但是从公司的需求来说,绝大部分公司对于测试总监和测试架构师的需求都不是很多,其主要原因是大部分软件产品的复杂性,高级测试经理带领团队就足以实现提供质量反馈的价值。对于测试架构师的需求也是一样,只有当系统足够复杂,才有业务的需求,举例来说在微软Windows和搜索都有自己的测试架构师。