● 正视复杂性

  ● 描述你的理解

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

  ● 设计假设和试验

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

  ● 分析其他人的思考

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

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

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

  【建议】阅读和讨论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)、竞争产品,等等来收集风险方面的意见。对于每一个项目,维护一张关键风险列表,基于它们来测试,并且报告风险覆盖。在询问中,保证测试人员聚焦于问题“是否有(潜在)的问题?”,而不是“这个测试通过/失败了?”