软件测试思想浅谈

今天来聊一下测试思想 ,探讨一下测试员的思维方式。期望通过本文为刚入行的测试新手纠正一些错误的“常识”。

老话说“不怕走弯路,就怕走错路”。如果一个测试员花费三年、五年甚至更多的时间走了弯路的时候,跟走了一条错路也没有什么区别了吧?思想指导行动,作为刚入行的测试新手来说,多看一些测试工具、测试技巧固然能快速见效提升实力,但从长期来看,多看一些测试思想却可以让自己少走弯路,少一些遗憾。

软件测试思想浅谈

言归正传。软件测试作为一门科学发展到今天也有三四十年了,但在外行人看来(包括很多项目经理/程序员,甚至包括很多测试从业者),我们测试人员找bug,靠的是细心认真、靠发散性思维、靠对系统的“不了解”......这不得不说是一种悲哀......透过这个现象也体现出了两个问题: 到底什么才是测试最重要的品质?优秀的测试员和平庸的测试员区别在哪里?

我得承认,前面提到的几点外行人对测试的印象,都是有一定道理的,甚至有些是需要我们去培养的品质。但这并非最重要的。

回想自己最初做测试的时候,最初的阶段也是处于野蛮生长的状态,懵懵懂懂干着,踩了很多坑,走了很多弯路。也正因为如此,我深知做测试时,前方有一盏明灯是多么重要。

1、什么对测试人员最重要

我一直觉得,测试员最重要的财富,就是自己受过训练的大脑,也就是思维方式,跟开发相比我们测试员的思维方式确实是不同的。

同样的,测试做的好的和做的不那么好的人相比,他们的差别也在于他们如何思考:比如如何进行测试设计,如何解释所观察到的现象,以及如何分析和描述这些现象并且让人认可...... 

2、测试运用的是认识论

也许看到这,会有人说:这是什么鬼?我没学习过认识论也做得很好,别装X,好好说人话不行吗?——请相信我,认识论是帮助测试员更好测试的一个哲学分支。 

认识论研究如何认识所了解的东西:研究证据和推理。这是科学实践的基础。研究认识论的目标是了解怎么样才能改进我们的思维,按照测试员的方式思考意味着实践认识论 。遇到以下类似问题的时候需要用到认识论:

  • 怎么知道软件足够好?
  • 如果软件并不是足够好,怎么样才能知道?
  • 怎么知道已经完成了足够好的测试?

另外,直接与软件测试有关的认识论问题包括:

  • 如何收集和评估证据?
  • 如何进行有效的推论?
  • 如何使用不同逻辑形式?
  • 拥有合理的信念意味着什么?
  • 形式和非形式推理之间的差别是?
  • 非形式推理的常见谬误?
  • 自然语言的含义与模糊性?
  • 如何做好决策?

的确,从来没有研究这些问题的人,也能把测试做得很好。但是想要做的比很好更好,就得研究这些问题。研究认识论可以帮助测试员设计有效的测试策略。更好的意识到自己工作中的错误,理解自己的测试能够证明什么,不能证明什么,并写出无懈可击的测试报告。

苏格拉底早在2400年前就提倡并描述了对信念的批判性观察,直到今天哲学家、心理学家都还在继续研究认识论。作为测试人员,很有必要好好利用这份遗产。

3、大胆假设小心求证

依靠“直觉”做测试是很多测试员(包括资深的)的测试手段,但需要注意的是,“直觉”很有用,但只在开始的时候有用,而不是其他时候。不可把由直觉做出的判断作为测试报告或者质量评估的依据。除非大家都有这种直觉,否则不会相信或者采纳你的建议。直觉适合用作指南,而不能用作合理性证明。当你凭借直觉找到测试方向时,就需要用严谨的测试行为进行验证。总之,用直觉开始工作时不错的,但用直觉做为工作的结束又是非常糟糕的。

当然有“这是问题,因为它显然是问题”的想法时,可以换一种方式进行沟通:“这是问题,因为我看到产品的行为与需求1、2和3冲突,而我们的客户很看重这些需求。”

4、黑盒测试

黑盒测试意味着软件内部知识在测试中不起重要作用。需要花更多的时间在了解用户,了解他们的期望和需要,了解技术,了解软件运行环境的配置,了解与这个软件进行交互的其他软件,了解软件必须管理的数据,了解开发过程,了解竞品,等等。我们需要尽可能的收集这些信息,目的是为了更好的进行测试方案和计划的制定。比如说近期软件进行了一次改动,如果说我们只去了解这次改动的内容,而不了解改动的原因(项目背景),那我们怎么能保证这次开发出来东西是用户想要的?永远对项目经理/开发说的“我们已经跟客户做过需求确认”这句话保持质疑。从我个人经验来看,很多“隐式需求”都隐藏在这些问题中。

作为测试人员,有必要让自己的工作更专业,否则就会更像是一个游客,而不是测试员。

给大家推荐几本书:

《批判性思维的工具:心理学的元思想》

《思考与决策》

《研究的技巧》



留言