|
在CSDN看到朱少民的一篇blog:勿忘质量之本(相信作者是把标题写了错别字)。略有感,说说我对QA这件事情的想法。
在北京理工大学做招聘宣讲的时候,有同学问ThoughtWorks的QA做什么。我们似乎很习惯于把QA和测试等同起来,就是坐在门边那个负责抓出所有bug的人。朱少民的blog里说“测试就是为了发现缺陷”,当然这毫无疑问是对的。但作为QA这个角色,我认为他/她的职责分两半:第一是发现缺陷;第二是确保缺陷被修复,并且修复过的缺陷永不再重现。前者是测试工作,后者是流程工作。作为QA(质量保障或者叫质量分析)的负责人,流程工作至少与测试工作具有同样的重要地位。
(那天晚上和江焱风一起吃饭,说到质量管理体系的话题。其实ISO9000就很明白了:质量来自过程和管理,而不是来自检验。)
所以,尽可能地把测试自动化,这实际上是在积累质量管理体系。这事情分为三个环节:(1)发现缺陷;(2)用自动化的测试案例描述缺陷,以测试案例通过为依据验收缺陷修复;(3)频繁运行所有测试案例,确保已经被修复的缺陷永不再进入代码库。而朱少民所说的“为追求测试自动化而忘记发现缺陷之根本”的问题,实际上是一个不存在的伪问题,因为这两件事情分别位于环节(1)和环节(2),彼此正交。朱少民还说“70%缺陷【的发现】还是需要人的智慧和思考”。不是的,100%都得靠人的智慧和思考。你不想发现的缺陷,它是不会被发现的——当然了用户会发现然后暴跳如雷地来找你,那就是另一回事情了。
总结:QA的工作分为测试、流程制定和流程监督三部分。质量不是靠守门守出来的,而是靠贯穿整个软件生命周期的管理管出来的。敏捷项目为什么容易获得更好的质量?因为它把质量管理落实到每个小时的每件具体事情上,而不是写在纸上。 |
|