这个问题很多人问过,也有很多人回答过,我非常赞同来自Michael Bolton的以下观点和建议(不过有一点补充,参见:做一个海盗派Tester),欢迎讨论。

批判性思维

    对于一个测试人员,最重要的技能之一就是批判性思维。

    批判性思维是对思考自身的思考,目的是不再被愚弄。批判性思维是一种训练,检查事物,并且质疑我们对它的理解:哪些部分可能是不完整的;哪些部分可能是错的;哪些部分可能不能分享给其他人;哪些部分可能是暂时的,会随着时间发生改变。

    优秀的测试人员批判性地思考他们正在测试的产品。开发人员和管理者更倾向于用正面、乐观的眼光来看待产品。测试的关键目标之一是识别风险,指出乐观和自信是没有依据的。为了做的更好,测试人员必须学会质疑产品,以及关于产品,人们声称或者所相信的观点。可以传授这种技能,更可以学会这种技能。学习批判性思维需要研究、培训、辅导、支持,最重要的是练习。

【建议】开始研究并培训批判性思维。从以下参考开始:

·   Kahneman, Daniel. Thinking, Fast and Slow. Penguin, 2011 (中译本为《思考,快与慢》,吐血推荐)

·   Levy, David A. Tools of Critical Thinking: Metathoughts for Psychology. 2nd ed. Waveland Pr Inc, 2009

·   Baron, Jonathan. Thinking and Deciding. 4th ed. Cambridge University Press, 2007.

Test Framing

    Test Framing是一种技能,来创建一条用于组织和描述测试的逻辑。Framing帮助测试人员巩固目标和测试之间的连接,至上而下地解释测试结果。Framing与缺陷辩护的技能相关(参见:http://www.developsense.com/blog/2010/09/test-framing/)。优秀的Test Framing也可以帮助组织成本和价值的选择;何时停止或加强某些活动;应当实现的自动化程度。

【建议】阅读,讨论并且开发关于Test Framing中的想法。

系统思维

    Gerald M. Weinberg将一般性系统思维(GTS)称为“简化的科学”,一种采用高度整体的方式,思考系统组成,及其关联和影响的方法。GTS是一种通用的科学技能,同时也是一种测试技能。GTS的技能是核心的测试技能,包括但不限于:Framing,建模,因子分解,观察,以及聚合。一般性系统思维的详细描述超出了本报告的范围。

【建议】研究和培训一般性系统思维。参见:

·   Weinberg, Gerald M. An Introduction to General Systems Thinking. Dorset House, 2001

·   Weinberg, Gerald M., and Daniela Weinberg. General Principles of Systems Design. Dorset House, 1988

·    Meadows, Donella H. Thinking in Systems: A Primer. Chelsea Green Publishing, 2008. (中译本为《系统之美—决策者的系统思考》,严重推荐)

科学思维

    科学思维位于系统思维和批判性思维的交点。科学技能包括:

·   提出正确的问题

·   观察发生的事件

·   正视复杂性

·   描述你的理解

·   批判性思考:识别和管理偏见

·   设计假设和试验

·   尽管已经“知道”,保持思考

·   分析其他人的思考

·   将“事实”视为不过是“现在我们认为我们知道的事物”

    但是,非常重要的是,我们需要认识到科学也是一种人类活动,受限于人类的错误认知和社会复杂性。

    软件测试的少数特征要求科学的、仪器化的、量化的工作,类似于物理学。其他方面则需要社会学方法和定性分析。

【建议】阅读和讨论Kaner的《Software Testing as a Social Science》,以及其他关于科学的论述。参见:

·   Simon, Herbert A. The Sciences of the Artificial - 3rd Edition. The MIT Press, 1996

·   Popper, Karl. Conjectures and Refutations: The Growth of Scientific Knowledge. 2nd ed. Routledge, 2002

·   Klahr, David. Exploring Science: The Cognition and Development of Discovery Processes. A Bradford Book, 2002

·   http://www.cbc.ca/ideas/episodes/2009/01/02/how-to-think-about-science-part-1---24-listen/

聚焦风险

    测试是通过配置、操作、观察和评估产品来学习和理解产品。优秀的测试不是关注测试用例的通过或失败,而是另一个问题:这里有问题吗?虽然发现问题普遍被认为是测试的目标,但是,测试人员应当聚焦于风险。

    当存在这种可能,a)某人,b)承受损失、伤害或者烦恼,来自于,c)产品中的某个弱点,d)被某些威胁触发。所有四个因子都是风险故事的基本要素。对于测试人员而言,能够搜索风险,能够描述他们感知到的风险,这是非常重要的技能。

【建议】创建风险的分类表(有组织的列表)。从测试人员的经验、缺陷报告、技术支持人员,以及网上问题、开发人员、客户学会论坛、刊物、风险摘要(参见:http://catless.ncl.ac.uk/Risks)、竞争产品,等等来收集风险方面的意见。对于每一个项目,维护一张关键风险列表,基于它们来测试,并且报告风险覆盖。在询问中,保证测试人员聚焦于问题“是否有(潜在)的问题?”,而不是“这个测试通过/失败了?”

 

posted on 2013-02-21 23:34  Paul.Z  阅读(1759)  评论(1编辑  收藏  举报