为了提升质量或保证质量,需要有方方面面的考虑,是那些产品的管理者们真正有权利决定使用什么开发方法和流程、雇佣什么样的人员、采用什么样的质量目标、如何度量、花多大成本等等来确保产品的质量,而不是测试人员。
作为测试人员,不要努力去影响别人做什么、怎么做,而是要聚焦于提供实时的、准确的有关产品的信息(问题和风险),以有助于别人做出更恰当的提升质量的决策。
测试是一种服务,为项目其他角色提供服务。当然,每一个角色都是为其他角色提供服务的。开发人员为测试人员提供”软件可测试“的服务,使得软件更容易测试;测试人员帮助开发人员测试他们的代码,使用专业的测试技能和测试思维。
测试人员、包括QA,都不应该将某种方法强加于开发人员,那是质量警察干的事。一是因为测试人员和QA都没有优势告诉开发如何开发质量更好的产品;二是因为当你强加某种东西给别人的时候,你获得的往往是假的数据。
测试活动本身不能带来产品质量的变化。测试就是一个信息提供方,精确反映出产品需求的实现和在哪种情况可能给客户带来的风险就是测试的职责,当做一个质量播报员,就像最近的牛奶风波一样,我们只要把牛奶中成分的真实情况反映出来,剩下的就由用户或制造者来做决定吧。
质量是设计出来的,但设计者是人,也有考虑不足的,需要通过测试发现,发现后设计者进行改进,测试的职责是发现问题。设计和实现是有差距的,没有缺 陷的设计只是一个终极目标,只是一种理想,因此测试必须进行一种权衡,判断哪些缺陷是必须改进的,哪些是现在可以忽略的,这种决定不是仅由测试说了算的。我不知道哪个团队的测试人员可以做这个决策?除非你比开发人员还懂业务、你比项目经理还了解风险、你比客户还了解需求?
产品“零缺陷”只能是一个理想,即使排除时间和投入成本也是不可能达到的。但我们要把产品可能存在的潜在风险和失效条件找出来,发布与否这样的决定就不是测试说了算了,要看客户能否容忍这样的风险和失效,由决策者做成最终决定。
当然,测试这把尺子,只能提供有关产品质量的“相对”的信息,不是“绝对”的信息。实际上,“XX产品的质量就是什么样子的“这个论断没有人能给得出。如果你能准确无误地说出”XX产品的质量现在就是这样“, 很快就会发现一个反例的出现将打破你原来对它的认识–当然,你根本无法准确无误地说出质量的样子,那是一个无穷的集合,就像测试是一个永远测不完的活一 样。因此,测试提供的信息只是相对准确的,不是绝对准确的,这个局限性也正是测试所面临的挑战。