新浪微博:罗斯汀zdlzx

“用定性的方式来评估测试”阅读纪要

上一篇 / 下一篇  2013-07-30 23:22:35 / 个人分类:测试技能

最近看了Michael BoltonSTAREast会议上一个演讲稿的PPThttp://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理解的社会科学有如下特点:

l 社会科学研究以在社会中的人为研究对象

l 社会科学既使用定量,也使用定性的研究方法

l 社会科学包容模糊性,认可不同上下文下将对应不同的结果

l 数值的多样性和解释的多样性都是很正常的

l 社会科学将研究中观察者本身的偏好当成一个现实生活中无法避免的事实接受下来,并且在一些设计得很好的研究中被明确地说明(而非无视或者隐藏)

l 部分的结果可能是有用的

 

Michael用了一个比较生活化的例子比较了在自然科学和社会科学的角度对于“房子”的不同定义。自然科学中,因为以物为中心,所以房子是“以房屋这种设计模式组织建筑材料。”社会科学中,因为以人为中心,所以房子是“人住的地方”。类似地,从自然科学角度,我们可以定义计算机程序是发给计算机的一组指令;也可以象Cem Kaner从社会科学角度定义“计算机程序是一种在不同时空下多个人与计算机之间的交流;这种交流包含了一些可以在计算机上运行的指令。”虽然这两个定义有类似之处,但Cem的定义更强调计算机程序的目的是为人提供价值。所以这个定义背后隐藏着这样一些含义:

l 计算机程序不仅仅是代码

l 软件产品不仅仅是对设备的一些指令

l 质量不仅仅是指代码没有错误

l 测试不仅仅是编写代码来判定程序代码返回的是正确的结果

l 质量是对某些人的价值

l 软件测试是对人、计算机程序、产品三者以及它们之间的关系的调查

 

中心问题2:定性研究和定量研究的关系,以及它们在软件测试领域的应用    

既然Michael支持Cem的观点:“软件测试是一门社会科学。而社会科学既使用定量,也使用定性的研究方法”,接下来的内容围绕定性研究和定量研究展开。

 

1.      定性研究的一些基本理念:

l 定性观察表明某样东西存在或者不存在

l 定性的方法是基于观察的;发现不同之处,然后分类;它是描述性的

l 定性的方法假定分类是准确的,(为了集中注意力观察)而严重忽略关联

 

2.      定性研究一般:

l 将人的价值放在首位

l 采用观察、讲故事、叙述的方式

l 着重于持续设计

l 对于文字评审持怀疑态度(在后面有一页中Michael提到书面的知识经常比脑子中的知识要滞后;并不是所有的文档都同等重要,所以有所侧重很重要;对于测试人员你的任务不仅仅是描述(场景),而是也要运用批判性思维(来提问和补充);你的认知框架是你通过学习构造的,而不是已经存在只待被发现的。)

l 定性分析的一些实用方法包括:概念映射(Concept mapping)(如脑图、图表、草图、甚至卡通画等方式),记笔记(memoing)(如编写和收集会议纪要、整理个人想法概要等),编码(coding)(将观察到的内容分类、对细节和隐含意义进行描述)*我理解这里的编码不是指用程序语言编码,而是更广义、更抽象的建模

l 关注观察和度量过程中的可信度和正确性

n Michael提到他对度量的理解。他说度量问题实际上是一个正确性和一个可靠性的问题。社会科学似乎比自然科学更看重这两点,也许这是因为好的定性研究更寻求一些惊人的发现和有争议的东西,所以正确性和可靠性尤为重要。

 

n Michael指出有两种正确性:内建的正确性和外在的正确性。内建的正确性从这些角度来看问题,如我们观察到的事物本身是否是某种事物的一个实例?从定量的角度,它是1还是0?而外在的正确性指如果我们看到了这个,是否可以将其泛化到那个?例如:一个运输工具(飞机、单车)有多大?内建的正确性包含它们本身的尺寸,而外在的正确性包含它们相对其它东西的大小。又如,一个测试用例应该有多大?如果从内建的正确性和外在的正确性两个角度来看这个大小,你会发现这个问题的答案并没有太多的意义。

 

n 关于可靠性,Michael比较了可靠性和可重复性的差异。他说虽然长久以来科学家们相信可重复性(而不是可靠性)和可证实性(而不是新的发现)是科学的重要特征,但作为测试人员我们的角色是发现新的信息,而这需要多样性和提出新的问题。

3.      定性和定量的方法分别适用哪种场景呢?

一般我们使用定性方法去理解某样东西;而使用定量方法去将我们的理解告知他人。Michael指出它认为那些关于定性和定量是矛盾的说法都是混淆视听的。任何一种定量的度量都是为了对某样东西进行定性的理解。定量的度量如果不和对某个东西的定性理解关联起来将没有太大的用处。

 

4.      对于软件测试的理解

Michael认为优秀的测试不仅仅是计算机科学的一个分支。它包括了计算机科学、数学、领域知识等。如果我们仅仅关注程序和功能的话,就会忽视测试的价值和与人相关的一些关系。在Michael看来优秀的测试更像人类学,因为它们都是交叉学科的、关注全系统(而非系统里某个模块的)、需要探究的、像讲故事一样的。。。

 

我特别喜欢Michael讲的“测试就是组织、编辑、讲述和证实三个故事。”

第一个故事是关于产品的状态的(对你的不同客户而言,它怎么失效的或者它什么情况下它可能失效。。。)

第二个故事是关于你是如何测试产品的(你如何配置、操作和观察的;你有什么目前为止还没有测试的;你有什么压根不打算测试的。。。)

第三个故事是关于你的测试是否足够好(你测试的风险和开销如何;测试中什么让测试变得更慢或者更难了;产品的可测试性如何;你还需要什么、建议什么。。。)

 

Michael认为测试应该关注持续学习。测试人员需要代表客户,通过不断的学习来帮助维护产品的价值。整个测试过程是一个从测试设计、执行、发现、探究、学习、报告这个循环去不断去探索价值和风险的过程。

 

    最后Michael指出既然测试的目标是揭示质量相关的信息(也就是定性的信息),我们加强在定性研究方面的能力将非常必要。


TAG:

引用 删除 wangxiaoli1227   /   2013-08-03 21:40:51
多谢分享
引用 删除 rangoo   /   2013-08-03 11:03:22
感谢作者分享经验,略能理解一二。
引用 删除 rangoo   /   2013-08-03 11:03:13
5
 

评分:0

我来说两句

日历

« 2024-04-24  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 1324729
  • 日志数: 88
  • 建立时间: 2010-08-18
  • 更新时间: 2016-02-25

RSS订阅

Open Toolbar