View on GitHub

软件开发与教练

blog

测试是消除恐惧的最好办法

曾经有幸聆听过跆拳国家队卢教练的一次讲座,讲述了如何从零开始组建队伍,建队的第一天就确立了四到五年内夺冠的目标,又如何三年内问鼎世界冠军的历程。其中有一句话让我印象深刻:“训练是消除恐惧的最好办法”。

在软件开发这个看起来理性的行业,很少能听到人们谈及恐惧。但事实上,停滞不前的计划、矛盾重重的协作、累积的技术债务……,很多都源于对未知的恐惧。因此,当我听到这句话时,不禁自问:在软件开发中,消除恐惧最好的办法是什么呢?

当然是测试——自动化测试。在测试驱动开发中,测试为我们注入坚定的信心,帮助我们不断探索未知需求,改进设计方案,以迭代方式完成软件开发。

测试不只是考试

很多人由于对测试的误解难以掌握TDD。说起测试时,人们往往把它看作某种考试,用来证明软件是否达到了某个分数线。然而,这只是测试在TDD中的一个方面,作为设计工具,测试的价值远不止于此。 如果以“训练——测试”的类比来看。竞技运动中有各种不同的训练。

练习

消除恐惧的最好办法

初学运动项目的爱好者往往会急于投入对抗性练习,这确实会带来直接的体验和快感。但如果想在这个领域长期的取得进步,那就不能指望这种“菜鸡互啄”式的对抗,而是要进行系统的训练。 训练的价值在于有有目标地提升技能水平,并将这些技能内化为肌肉记忆。这样才能在瞬息万变的赛场上应对自如。 冠军级运动员步入赛场时,支撑他的信心不是来自几天前赢了某场练习赛,而是多年来的汗水和不懈的训练。

同样的,初次接触自动化测试的开发人员已开始都会更容易被验收测试、端到端测试所吸引。然而要构建专业的系统,需要不断提高系统排错和可扩展能力,并通过各层级的自动化测试将其固化在软件中。这样才能从容应对变换的业务需求和技术变革。 专业开发者自信地发布系统,进行设计变更,他的信心来自于千锤百炼、随着每次代码变更进行的测试和重构。