一个新手程序员为老代码写测试程序的心得

浏览:
字体:
发布时间:2013-12-09 23:24:05
来源:

  

/

  我坚持去健身房锻炼身体,练习举重,我喜欢这种让自己变得更强壮、更健康的感觉。大约两个月前,我的膝盖开始感觉抽痛,但我仍然坚强去锻炼。

  我一心想让自己更强壮,完全忽视了腿上的健康问题,仍然强迫自己继续举重。你可以想象出,膝盖上的痛没有好转,每一次精疲力尽的锻炼后我都需要更长时间的恢复。

  作为一个在 Rackspace 公司的初级程序员(在Airbrake 开发组),我经常会有一种相似的感觉,它催促我不停的大量产出代码,以为这样能让产品更强壮。当正如我的膝盖每次在下蹲时都要忍受痛苦一样,未经测试的老的功能特征在大量出现的新功能的重压下开始变形,开始断裂。

  最终我的理疗师说服我应该重点做康复锻炼,恢复前不要再去举重。他说,当膝盖上的问题好了之后,肌肉变得更结实有力后,我的进步会更快,也更不容易弄伤自己,让自己痛苦。

  铭记了这些忠告,我看到了它和工作之间的联系。我强迫自己去给老代码、老功能写测试代码,这样使得我的开发进度更快,对代码更有信心,不再担心开发新代码时会破坏老代码的功能。

  下面是我在这个转变过程中学到的关键几点:

  开发工具很重要

  我使用 RSpec, Capybara, FactoryGirl 和 Selenium 来测试我的 Rails 应用。在写测试代码之前,你要先研究一下这些工具。否则,调试这些测试代码浪费你大量的时间。

  一些简单的任务,例如在测试前和测试后清除数据库,它们对保证你能正确的、快速的、可重复的测试起着重要作用。对于这些任务,你可以使用这个 database_cleaner gem。

  如果你是团队中第一个来写测试代码的人,这个时候测试工具的选择尤其重要,它会影响团队其他成员对测试的接受。整个团队都要提交测试程序,所以你要让这个过程尽可能的简单,——采用强大、灵活的工具。

  现有的代码只是告诉你现在做成了什么样,但不是告诉你代码实际应该是这样。

  当开始测试别人的代码时,我发现有个习惯,首先假设这些代码是正确的,符合要求的,所以这些代码中能够通过测试用例。有时这样是没问题的,但有时这些代码之所以通过测试只是因为测试代码是按照它们写的。

  你忍不住会图省事,会假设所有的这些代码是最新的,符合要求的,然后写的测试来证实这些假设。这就导致了一种反向的测试驱动开发模式:代码成了测试的依据和标准。

  安全的做法是探求代码最初的意愿,资深的程序员更喜欢写出很明晰的代码,你能通过代码看出它试图实现的功能。

  完全测试是不可能的,不要这样要求自己

  为整个项目写测试程序,你可能需要将它当作一种全职工作来对待。当然,我们都希望 100%(+)的测试覆盖率,就像我们都希望洗涤盆里没有脏盘子。然而,另外一种方法是当你需要盘子时清洗所需的盘子。我们用这种策略为新代码写测试程序,老代码中我们开发的过程中遇到时再写测试程序。

  我建议新程序员应该去为老程序写测试,这样它能强迫你学习老代码库,让你获得更深的肌肉记忆力。但一定要遵循上面的这些原则。

  英文原文:What I Learned as a Junior Developer Writing Tests for Legacy Code

>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();