软件测试的本质——浅谈纯软件测试方法
序
大概有半年多的时间没有写文章了,现就职于一家软件公司,仍旧从事软件测试工作。对软件测试又有了些新的感悟,这篇文章酝酿了大概有三个月了吧,今天写出来奉献给大家,如有迥异,请联系探讨
今年年初,每天吃完晚饭,就打开电视机,看一部电视剧《李小龙传奇》,这部电视剧讲述了李小龙一生的传奇故事。李小龙少年师从叶问大师习武咏春拳。后来由于得罪了一个黑帮老大,被迫定居到美国。在美国期间,李小龙汇集了各路武林高手,并向他们学习。最后他在结合武术、柔道、摔跤、拳击、泰拳…的精华,并且结合武术的本质“攻”和“防”创建了自己的拳术截拳道, 达到了武术的最高境界,成为一代宗师。
武术的本质是“攻”和“防”,那么软件测试的本质是啥呢?还是两个字“测”和“试”。所谓“测”,就是对于软件文档或软件产品进行检测,找出其缺陷,就是我们通常所说的bug,供开发人员修改的工作;所谓“试”,就是根据用户所使用的软件环境(包括操作系统,数据库系统,应用软件系统…)、硬件网络环境(包括CPU,内存,硬盘空间,网卡,网络带宽…)和其他特殊情况(包括高并发,高容量…)的环境下,尝试软件是否可以正常运行的工作。
为了解决日益令软件开发者头疼的软件危机现象,出现了软件工程学科,建立了许多软件工程模型,根据这些软件工程模型建立了各种软件测试模型,如V模型、X模型、H模型。但是这些模型的建立,是否能够改变软件危机的现象呢?我的答案是否定的,实践证明如果单纯的用了上述各种测试模型以后,仍然会存在着很多漏洞,达不到公认的软件产品质量要求。这样的软件产品是不可能交付的。因此,业界流行一种说法:“一个软件产品能否交付,主要看软件支持工程师能否说服用户,接受带有缺陷的产品,这就要看软件支持工程师的嘴皮子功夫了。”显然这是很不严谨的。
众所周知,软件测试是保证产品质量的一个重要环节,因此要把软件测试做好,我认为,就应该抓住软件测试的本质:“测”和“试”,抛弃各种模型中的“套路”,不要把时间花在书写过多的软件测试文档,书写过多的软件测试代码…,而是集中精力把时间花在“测”和“试”上,整个“测”和“试”的过程要贯穿软件生命周期的各个阶段。这个过程从软件需求阶段就开始,一直贯穿概要设计、详细设计和代码,直到最后软件形成以后再一版接着一版的测试,一般来说,这样做软件的质量就应该能够得到保证。如果软件质量还不够理想,那问题就不是测试过程本身,而是出在测试工程师水平上面。
在这里我需要阐明我不是反对书写软件测试文档和软件测试代码,必要的书写软件测试文档和软件测试代码是必须的。比如没有软件测试计划,那整个软件测试管理就要失控;比如不书写软件测试代码,那么许多软件测试,特别是性能测试就无法进行,所以这样的文档是必须书写的。我的观点是不要过度的书写软件测试文档和软件测试代码。举个例子来说明:比如一个人书写一个功能测试用例起码需要花费10分钟的时间,那么书写1000个功能测试用例就要花费10000分钟(约166小时),把这1000个功能测试用例转化成功能测试代码就要花费415小时(按照书写一个功能测试代码需要2。5倍的功能测试用例的时间来计算),加上书写功能测试用例花费的166个小时,总共就需要花费581小时。按照每人每天工作8小时来计算,也就是需要73个工作日,再按照每月22个工作日来计算,则需要书写3个多月的时间。事实上一个项目中一个测试设计工程师需要书写的测试用例一般都有上千甚至上万个,这样估计下来,如果把时间都花在书写功能测试用例和书写功能测试脚本的时间上,大家可以算一下这样下来大概需要花费几个月或者几年的时间了,这个项目也就过了交工期限了,哪还有时间搞测试啊。
抓住软件测试的实质,“测”和“试”。把主要时间精力花在“测”和“试”二字上,我们的软件测试质量才可得到保证,在这里我把这种测试方法叫做“纯软件测试方法”,我想这也正是软件测试本来的意义。
作者顾翔,邮箱:xianggu625@126.com
版权声明:原创作品,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。http://www.51testing.com