困惑一、测试人员或测试团队是否能保证软件的质量
  测试小兵:
  做了一段时间的软件测试工作,一直被一些问题困扰着。比如以保证软件质量存在的测试人员或是大型、独立的测试团队是否可以真正保证软件质量?很多时候感觉测试人员很弱势,开发人员可以无视你,业务人员常以命令的口吻让你做与自己职责无关的事情。我们按照测试流程日复一日的找BUG、提交BUG、做回归测试,终于项目上线了。我们觉得测试做的很全面,但是项目在生产上又总是出问题,需要测试组处理故障。有些时候,开发小组开发出的东西质量很高,测试组没有发现什么严重的BUG,且项目在生产上也未出过问题。是否是以发现、修复BUG数量来考察软件质量,异或是以开发组成员的素质来做考量。我们测试人员是否能够保证软件的质量呢?如何保证?若非保证质量,我们又是在干什么呢?
  测试老兵:
  很长时间以来,测试人员总是被当做质量保证人员,但作为一个超过10年的一线测试老兵来说,从心而论,测试人员或团队却不能保证高质量的软件产品。举个例子,软件产品的初版本,通常都是有很多质量问题的,这是一个非常普遍的现象,小公司的软件产品是这样,大公司的软件产品也是这样的。难道是这个版本的软件产品没有测试人员么?还是测试人员的水品不行?显然都不是。另外一个现象是,很多成熟的软件产品也会出现很多质量问题,例如很多大型软件基本上每个月都有补丁以及安全漏洞。那么到底是什么原因呢?其背后的根本原因是测试人员无法保证软件产品的质量。有了测试团队,并非一定能够解决质量问题,并非一定能够保证软件质量。有了好的测试团队,也未必能够百分百保证软件的质量。比如,现在所有的楼房建设都有质量监理,但是楼房质量问题仍然层出不穷,显然监管机构不能保证质量。所以,单凭测试人员也是无法保证软件产品质量的。测试人员从事测试活动是对软件产品的质量做出系统、全面、有效的反馈,开发人员依据这些反馈信息,进一步完善软件产品,进而提升软件的整体质量。
  困惑二、测试人员的价值在哪里?
  测试小兵:
  如果测试人员不能保证软件的质量,那么测试人员到底在干什么?价值如何体现呢?
  测试老兵:
  既然测试人员不能保证质量,那么测试人员的价值又在哪里呢?我也曾多次问过自己,后我总结出测试人员的价值在于为产品或项目的开发提供有价值的质量反馈。这里面的有价值,应该体现为深入的,系统的和犀利的见解(Insights),另外这些见解应该和软件质量息息相关,这些都是质量保证的一个重要环节。而质量保证本身是由整个项目组共同努力的目标或结果,而绝非测试人员能够独自保证的。对于日常的测试活动,例如功能测试、性能测试、易用性和安全性测试等,这些活动的目标都是为软件质量提供有价值的反馈:其包括不同的层次和类型,例如产品缺陷,设计优化建议,用户体验反馈等。从大类来说可以分为产品属性,用户体验和流程优化三个方面。
  测试人员提供的价值和医生为病人提供的价值很相似:医生为患者提供了关于健康的有价值的反馈(医嘱、处方),但是不能保证病人一定能被治愈。医生做了很多检查工作(望、闻、问、切),像软件质量的度量指数(质量的六大特性);医生开的处方像测试人员提供的质量反馈(提交BUG)一样,病人根据医嘱、处方改变不良的生活规律、状态,重返健康,开发人员依据测试人员提出的BUG列表对软件产品的质量做进一步提升。 另外,的测试人员往往是产品的专家,同时也是非常了解客户需求或是精通业务的,所以测试人员若能够站在这个高度对软件产品提出建议,那一定是非常有价值的。