本人来公司差不多三个多月了,从接触这门语言到现在也快半年了,但是,我从来都没写过测试代码,ruby on rails ,公司的主体项目,每当有 bug 需要修复,或者有了新的需求需要添加功能的时候,基本是未写过测试代码,都是功能本地跑一遍完事,剩下的就交给售后线上测试了…… 在此,希望大家就测试代码的必要性谈一谈
要写测试,当然也有例外的情况,前提是你已经非常熟练的掌握了怎么写测试。如果你还没有掌握怎么写测试,先写一段时间测试,熟悉后再下结论。 我认为测试驱动开发的效率是大于直接开发实现代码的。
刚进公司时,负责将代码从 Rails 3 升级到 Rails 4,但是他们之前只写了一小部分。于是我重新补写了所有 Model,Controller 的测试(以前其实我也不写测试,之前的公司太“敏捷” ) 但写了之后,我有下面几个感觉
我司就是这么堆的技术债。
我司的测试很便宜,每两周完成一个 Sprint 以后,就扔给他们做人工测试。
当然还是遇到过一些小问题的。
测试用例太多,时间太长。
我们常规测试用例大概百多个,每个测试要跑几十分钟甚至有些要跑几小时。
每次 Sprint 完成以后,五六个 QA 要测两星期才能测完,反馈结果,然后开发来修复,然后回去再重新测试两星期。
升级平台几乎不可能。
我们 Ruby 1.8.7 Rails 1.2.3,一点点微小的升级就会让整个系统爆炸,哪怕我只是升到 Ruby 1.9.3 Rails 2.3。
就算是测试也不一定能测出来所有的问题。
我们做虚拟机控制面板的。
有一次客户遇到个 Bug,我们的面板在调整完内存大小以后把人家的硬盘档删了。
百分百复现的 Bug,QA 漏了,因为 QA 测试用例里没有这一项。
当然现在我们已经不需要 QA 做测试了。
如果你要问为什么,当然是因为技术债太多还不完公司要倒闭了。
Test Driven Design. 当你发现你很难给一个功能添加测试的时候,很可能你没有好的 OO Design。另外可靠的测试也是很重要,所以"Write a test for your test"
#23 楼 @Catherine 也有可能是 1.2.5。
vender/rails/railties里的Changelog里是这么写的,
*1.2.5* (October 12th, 2007)
* Correct RAILS_GEM_VERSION regexp. Use =version gem requirement instead of ~>version so you don't get surprised by a beta gem in production. This change means upgrading to 1.2.5 will require a boot.rb upgrade. [Jeremy Kemper]
* Move custom inflections example so available before route generation. #6829 [dcmanges, Nate, piotrb]
*1.2.4* (October 4th, 2007)
...
...
转手太多已经不知道啥时候更新的了。