随着敏捷开发的迅速推广与普及,敏捷软件开发是否还需要测试工程师的问题被越来越多的人提及,业界对此也持有两种截然不同的观点。
本人觉得:随着敏捷开发的进一步推广,从未来趋势的来看,测试人员的作用与地位正在被边缘化,甚至在将来测试人员可能会像恐龙一样从地球上消失。
(先别喷,看完下文再说哈^_^)
我们先来看测试人员与开发人员比例问题。
微软公司的测试人员与开发人员比例一般为1:1,谷歌公司的测试人员与开发人员比例则为1:10。
为什么两家公司的差异如此巨大呢。最主要的原因是两家公司对测试人员与开发人员工作范围的定义不同。在微软,单元测试由测试人员做(SDET),相当于SDET再写一套代码来测试开发人员写的产品代码,其工作量不比开发人员低。而Google的单元测试和功能测试一般都是由开发人员自己来完成,测试人员主要提供自动化测试工具的支持,主要进行性能测试、负载测试、安全性测试等,而这些都是自动化工具来完成的,自然需要较少的测试人员。
再来看软件测试的发展历程
软件测试的先驱Bill Hetzel博士(代表论著《The Complete Guide to Software Testing》)给软件测试一个这样的定义:“评价一个程序和系统的特性或能力,并确定它是否达到预期的结果。软件测试就是以此为目的的任何行为。”他的核心观点是:测试方法是试图验证软件的功能是按照预先的设计执行的,以正向思维,针对软件系统的所有功能点,逐个验证其正确性。软件测试业界把这种方法看作是的软件测试的第一类方法(测试是验证软件是可以工作的)。
后来这一方法受到Glenford J. Myers(代表论著《The Art of Software Testing》)的质疑和挑战。Myers认为测试不应该着眼于验证软件是工作的,相反应该首先认定软件是有错误的,然后用逆向思维去发现尽可能多的错误。他还从人的心理学的角度论证,如果将 “验证软件是工作的”作为测试的目的,非常不利于测试人员发现软件的错误。于是他于1979年提出了他对软件测试的定义:“测试是为发现错误而执行的一个程序或者系统的过程。”的定义。Myers认为,一个成功的测试必须是发现Bug的测试,不然就没有价值,还给出了与测试相关的三个重要观点,那就是:
测试是为了证明程序有错,而不是证明程序无错误;
一个好的测试用例是在于它能发现至今未发现的错误;
一个成功的测试是发现了至今未发现的错误的测试;
这就是软件测试的第二类方法(测试是验证软件是有错误的)。
Myers提出的“测试的目的是证伪”这一概念,推翻了过去“为表明软件正确而进行测试”的错误认识,为软件测试的发展指出了方向,软件测试的理论、方法在之后得到了长足的发展。
......
转自:http://www.51testing.com/html/61/n-875961.html