软件测试精要-测试直播网络延时测试软件
本章节为51Testing软件网独家连载
8.1测试是科学也是艺术
测试到底是科学还是艺术?国内有的网友认为,测试只是科学,不是艺术;而有的网友认为测试是艺术,不是科学。
(1)支持测试只是科学的观点
转载一段来自一位培训经理WilliamRollison的:曾在商业软件领域被认为是一种事后的亡羊补牢。初级的产品经理甚至开发人员认为软件测试是任何人都可以从事的工作。一些关于软件测试的书籍甚至冠以“艺术”、“手艺”之类的名字。这导致软件行业的某些读者误认为质量测试不是软件工程的一个学科。相反,通过缺陷鉴别、错误预防和合理风险分析的实测报告,有效的测试不仅是一门工程的学科,而且是提升软件质量和可靠性的关键部分。
(2)支持测试只是艺术的观点
对于一个大规模的计算机程序,测试需要比设计程序更多的创造力。这个观点一直存在争议。GlenfordJ.Myers在《软件测试的艺术》一书中支持了这个理论,他指出“测试是极度富有想象力和高智力的有挑战性的工作”。实际上,很多既设计又开发软件的人承认他们通过创造力的软件测试获得了更多艺术上的满足感。
笔者在从事软件测试的前3年,从未想过测试是科学还是艺术,在笔者心中测试只是一个公司不可或缺的研发工作。但当几年前,第一次从一位有着15年美国测试经验的测试总监的培训中听到“测试是门艺术”的时候,心里受到了非常大的冲击,第一次听说软件测试是艺术,而之前身边从未有测试同行讨论过测试是科学还是艺术,更无法想象测试居然是门艺术。带着极度的好奇和兴奋,听完了这位美国测试专家的培训后,终于明白了测试是艺术的原因。从此,对测试工作的价值和意义有了重新的认识,应该说对软件测试这种工作有了更高的兴趣和热情。
其实美国专家这句“测试是门艺术”的意思,并未将测试中具有的科学元素排除掉。软件测试过程中需要的数学基础和逻辑能力都是从事任何科学工作所必备的技术素质。计算机软件与科学假设类似,两者都固有易错性,软件测试过程的基本框架类似于科学假设的试验和错误实践。测试工程师通过严格的测试(主要用于证明缺陷存在)反驳无缺陷软件的假设,这种“造假”的过程和数据驱动的方法(如归纳和推理)形成鲜明的对照,数据驱动通过事实的重复来证明正确性。这些方式都是通过确认来支持论断的,通过使用特殊数据验证功能正常来证实不确定的无差错。这种方式仅能证明软件功能在某种情况下功能正常,它并不能证明软件无差错。而所有的这些思维方式也正是科学工作的思维方式。同时作者还有一种观点:诸如测试的规范、测试的流程、技术这些知识,可以通过书籍达到自学提高的目的,而这也是大多数科学性质学科所具有的特点——任何人都可以轻易地通过大量相关书籍来和掌握大量的技能和知识。
可是测试中最核心的宝钻——测试设计方法,则基本没有一本书可以真正的教会你。虽然有的软件测试书中谈到一些所谓的测试理论如“等价类”等,但如果你真有3~5年软件测试经验,你会发现书上这些理论只会束缚你的思维,用处不大。事实上很少有公司会严格按照书中所谓的“等价类”等这些理论来设计测试方法。那么测试方法的设计靠什么呢?答案:测试经验和创造性思考。测试经验必须靠勤奋才能积累,而创造性的能力是不可能通过书本学到,或是听两次培训就具备了。下面还有一个很有力的证据来证明测试具有艺术的气质——管用的测试书好买吗?
无论是中国还是美国,如果你想自学任何开发的技能,基本上任何一类开发的书都可以买到很多,并顺利完成自学成为高手。但当你想学习测试,想了解测试,想买测试书时,才发现可以帮助你自学成才的书几乎买不到。因此,很少会有人没有在正规公司做过测试前,对测试能有所真正的了解。那么为什么测试的书这么难买?我们是否可以这样来理解:能买到很多书的领域,通常人们都可以通过自学进入这个领域;而书很少的领域则注定很难自学成才,而必须依靠大量实践经验的积累和自己点点滴滴的思考积累才能有所收获。例如软件测试精要,音乐的作曲创作、作词创作是很难通过大量书籍让你自学成才、成名。测试方法和测试思维的精华就如同毕加索的作品、达芬奇的作品是无法看书能学到的,所以软件测试的工作性质基本和艺术创作是一个道理,其真谛只能意会,很难言传。
测试的流程和规范、自动化是测试科学的一面,它们能满足测试基本的需求。但如果想得到尽善尽美的产品质量,想不断地提高测试水平,达到高水平的测试效果,就需要通过挖掘测试艺术的潜质来实现,所以测试天生就具有艺术的细胞和基因。
因此,软件测试不仅仅具有科学工程的基因,也具有艺术的基因。现在一些国内公司在选拔和培养测试技术骨干时,都会强调测试骨干具有非常好的发散性思维,而发散性思维就是任何艺术活动必备的基本素质。所以,不管人们怎么看待软件测试的性质,如何定位软件测试人员的地位,任何从事软件测试的人都应该清楚地看到自己所从事的这份职业对人综合素质的要求,既需要我们有一个严谨的科学工程头脑,又需要我们有一个艺术创造的思维习惯。如果测试人员能理解软件测试是一门既具有科学性又有艺术性的工作,就不会再抱怨工作的无聊、无趣和没意义了。
本文选自《51Testing软件测试作品系列》之四的《软件测试精要》。
本站经电子工业出版社和作者的授权,近期将进行部分章节的连载软件测试精要,敬请期待!
版权声明:51Testing软件测试网获电子工业出版社和作者授权独家连载本章节。