现代软件开发人员和我们的前辈没什么相似之处。我们已经抛弃他们的夹克和领带,而是选择卫衣和T恤。我们已经放弃他们的办公室和隔间,而是选择黑客宿舍和咖啡馆。他们使用软盘和步行进行文件交换。而我们用Github。他们打印和存储,而我们分享和发布。他们曾为有分销渠道的大企业工作。这个世界就是我们的分销渠道。在这里,所有的这些变化,我们的软件测试在哪里呢?
让我们来看看,90年代曾是软件测试的黄金时代。作为一个行业,我们曾努力地想把一切都弄明白。全局或局部的数据?文件和变量命名约定。时间限制与内存利用率。类库,过程或内嵌代码?用或重用?以及他们所有的鼻祖:我们如何修复在现场出现的缺陷,当时报告缺陷的唯一途径是通过电话或电子邮件,并且更新软件的唯一途径是邮寄了一套新的软盘?我们曾处于一旦编写了不当的代码,在交付之后,花费很大代价来修复其缺陷,是非常,非常痛苦的。
我们投入这么多时间和精力测试就不足为奇。我们别无选择,只能仔细检查开发人员的工作,并尽量保证遗漏尽可能少的缺陷到发布的产品中。就像我说的,这是软件测试人员的一个黄金时代。做对的几率很小,昂贵返工的几率很大。测试人员曾是一道保险,没有一家公司能承担得起衰退。
但随后世界已悄然发生变化。首先是网站,软件更新变得微不足道,刷新一下网页而已。所有的那些软盘都已被遗忘。然后是移动应用,它们可以收集自己的用户数据,创建自己的故障报告,并提示用户在必要时更新它们。与此同时,产品中缺陷的风险被大大降低。所谓的瀑布式软件开发模型,被创造更好开箱即用代码的敏捷方法而取代。围绕如何编写代码和编写代码实践知识的群体智慧日趋成熟。编码的艺术已渐行渐远。
质量还是同样重要,当然,但获得质量则需要一个不同于过去的关注点。招聘一堆测试人员将确保你需要那些测试人员。测试人员只是精神上的寄托。一个自我实现的预言。你招聘得越多,你将需要更多。测试现在不再是实际的角色,因为它是已融入到开发人员的每日活动中。你可以继续采用90年代时所采用的测试方式,但为什么你要继续呢?
质量源于代码而非测试。
在生命周期的末端,现在最终用户可以在一定程度上参与测试,这在过去是不能发生的。毕竟,谁才能更好地判断缺陷:是老老实实试图使用该软件来完成工作(或更愉快工作)的最终用户?还是拥有先入为主(不可避免的偏见)的假定该软件能完成工作的测试人员?当最终用户是如此靠近时,为什么一定要让测试人员作为开发人员和最终用户之间的中介?当开发人员和最终用户之间没有中介时,你能想象这对质量的影响吗?
质量,因而测试不是独立于软件开发过程之外,除非你的软件是准备进入核电厂、医疗设备或航空等领域,(目前来说)在这些领域产品部署上线后的召回是非常困难的。对于这个星球上的绝大多数的应用程序开发,软件测试是在开发进行中的一项活动 ,并在软件发布后持续发生的活动。现代测试是一项活动,并不需要一个单独的角色来执行。现在是时候把质量进到21世纪,测试就是软件开发过程的一个组成部分,你会常常忘记你正在做些什么,因为它已经变得无比熟悉和自然。嘿,这不是很棒?......完成测试不再大费周章?
这已不再是你父亲的应用程序开发过程,而是你的呐。挑战吧。
-----
如有任何翻译不当或者疏漏,敬请指出。
原文作者:James Whittaker
原文链接:http://blogs.msdn.com/b/jw_on_tech/archive/2014/04/11/stop-testing-like-its-1999.aspx
原文地址:http://blog.csdn.net/ocean1ee/article/details/24626147