老实说,质量保证听起来既不像是一个工作岗位的名称,也不像是一种职业的名称,很抽象。你很难用别的中文词汇去准确地替代这个名称,你甚至可能知道QA但不知道质量保证到底是个什么鬼。这真的是个外来词,我们在理解质量保证工作的意义之前,必须承认中国人的传统思维和欧美人的思维间存在的差异。
举个简单的例子,我们在中国任何一个地方都可以吃到宫保鸡丁这道菜,但是我们会发现不同地方的宫保鸡丁不管是味道还是配料可能都存在差异。而我们在中国的很多地方也都可以吃到麦当劳,有趣的是不同地方麦当劳的炸鸡味道却是一样的,我本人尝试过中国和中东国家巴林的麦当劳炸鸡,确实口味无异。
为什么会这样呢?仔细想想,你会发现我们中国的家常菜谱通常是粗略的、大概的、不具体的,比如说加食盐少许、酱油一勺、醋一匙等等,而欧美人的菜谱往往非常具体和精确,比如加盐5g,糖5g,水10ml,腌渍1小时,炸8分钟等等。虽然不同的过程要求并不妨碍世界各族人民都能烹饪出可口的食物,但我们仍然会发现,遵循类似的过程能制作出差不多口味的食物,比如说让人一看一尝就知道是宫保鸡丁,好不好吃也许就要看运气了;而精确的过程能让不同的厨师做出味道完全一样的食物,并且能够保证该口味是公认的好吃,质量是可以得到保证的。
一个软件产品生产出来之后,我们往往通过软件测试对该产品的质量给予一个客观的评价,那是不是说我们的产品生产团队、管理层、客户等各种利益干系人都要要等到完工之后才能拿到这个评价呢?那个时候发现产品达不到客户要求,或者说根本是货不对版,不管是花费了很多精力投入到产品中的团队成员、还是消耗了成本的管理层、还是花了钱的客户,大家都不会满意!假如在产品生产的过程中,团队遵循了符合各方期望的最佳实践,满足了各个环节的要求,并且整个过程是可视化的,无论是最终产品的质量,还是各干系人的信心和满意度都将大大提高。
问题来了,软件产品生产过程如何控制呢