最近看了Michael Bolton在STAREast会议上一个演讲稿的PPT(http://www.developsense.com/presentations/2012-04-STAREast-EvaluatingTestingTheQualitativeWay.pdf),名为“用定性的方式来评估测试”。材料篇幅较长,内容比较抽象。我在看了3遍仍不得要领的时候,在微博上需求帮助,得到了@朱少民和@柴阿峰两位的点拨,后来又看了2遍,感觉略懂了点,决定将自己目前的理解略微整理一下。
中心问题1:自然科学与社会科学关注问题的角度不同,因此对定性分析或者定量分析的需要程度不同
文档首先从引用开尔文勋爵的一段话开始。开尔文说:“我经常说当你可以度量你所说的内容,并且用数字表达出来时,(我认为)你对你所说的有所了解;如果你不能用数字表达,则说明你在这方面的知识是不足的。无论你说的和什么相关,“不能量化地表述”也许是认知的开始,但(我认为)目前你的思维还没有达到科学的高度。”我理解这段话背后想要表达的价值观是“量化才是硬道理”。
为什么开尔文勋爵会这么说,也许要八卦一下他的背景。根据维基百科的描述,开尔文勋爵是一位英国的数学物理学家,也是热力学之父。既然他是一位数学物理学家,也就是一个用数学方法来研究物理学的人,所以我们容易理解他为什么偏好定量分析。
Michael接着引用开尔文的另外一段话“在物理世界中,学习任何一门学科的首要步骤是找到数字计算的原理和实用的方法来度量与之相关的某些特质。”在这句话中,前提是“物理世界”,所以Michael亮出自己的观点:“虽然在物理世界以数字和量化为重心,如果不能用数字表达则说明你理解不够。(如开尔文爵士的观点)但如果你在社会科学领域(而非自然科学领域),当你所面对的事情以人为中心,那么纯用数字表达反而说明你理解不够了。”
接下来,Michael推出一位软件测试领域重量级人物Cem Kaner的观点“软件测试是一门社会科学”(http://www.kaner.com/pdfs/KanerSocialScienceSTEP.pdf)。Cem理解的社会科学有如下特点:
社会科学研究以在社会中的人为研究对象
社会科学既使用定量,也使用定性的研究方法
社会科学包容模糊性,认可不同上下文下将对应不同的结果
数值的多样性和解释的多样性都是很正常的
社会科学将研究中观察者本身的偏好当成一个现实生活中无法避免的事实接受下来,并且在一些设计得很好的研究中被明确地说明(而非无视或者隐藏)
部分的结果可能是有用的
Michael用了一个比较生活化的例子比较了在自然科学和社会科学的角度对于“房子”的不同定义。自然科学中,因为以物为中心,所以房子是“以房屋这种设计模式组织建筑材料。”社会科学中,因为以人为中心,所以房子是“人住的地方”。类似地,从自然科学角度,我们可以定义计算机程序是发给计算机的一组指令;也可以象Cem Kaner从社会科学角度定义“计算机程序是一种在不同时空下多个人与计算机之间的交流;这种交流包含了一些可以在计算机上运行的指令。”虽然这两个定义有类似之处,但Cem的定义更强调计算机程序的目的是为人提供价值。所以这个定义背后隐藏着这样一些含义:
计算机程序不仅仅是代码
软件产品不仅仅是对设备的一些指令
质量不仅仅是指代码没有错误
测试不仅仅是编写代码来判定程序代码返回的是正确的结果
质量是对某些人的价值
软件测试是对人、计算机程序、产品三者以及它们之间的关系的调查
中心问题2:定性研究和定量研究的关系,以及它们在软件测试领域的应用
既然Michael支持Cem的观点:“软件测试是一门社会科学。而社会科学既使用定量,也使用定性的研究方法”,接下来的内容围绕定性研究和定量研究展开。