瞎扯淡 不写测试代码

banana · 2016年10月16日 · 最后由 pynix 回复于 2016年10月21日 · 3890 次阅读

本人来公司差不多三个多月了,从接触这门语言到现在也快半年了,但是,我从来都没写过测试代码,ruby on rails ,公司的主体项目,每当有 bug 需要修复,或者有了新的需求需要添加功能的时候,基本是未写过测试代码,都是功能本地跑一遍完事,剩下的就交给售后线上测试了…… 在此,希望大家就测试代码的必要性谈一谈

我们公司不仅没有写测试,还没有售后线上测试,直接给用户测试 😅

一个产品想持续发展,如果不写测试代码,那就等着看悲剧发生吧

我一般 CRUD 不写测试代码,只写测试代码测试复杂逻辑和用来重现用户报告的 Bug 然后并修复它

只写集成测试,好过没有,😄

技术债务迟早会还的。

如果只是非常简单的 CRUD,没有复杂的业务逻辑在里面,我一般不写测试,但是如果参杂一些业务进去,那就会写了。

我可以谈谈测试的不必要性么......

#8 楼 @fsword 这个可以有,记得某大神说过,测试都是给新手准备的,他就不写,不过我还是默默写着测试

#10 楼 一语道破了天机么 😂

测试还是有必要的,毕竟以后版本升级,没测试过一遍,怎么敢轻易升

就看技术债和产品消亡(产品线更替比较快),哪个来得更快。

#9 楼 @small_fish__ 我也写测试,不过我会尽量避免写 ROI 不高的测试

需要频繁测试,并且手动测试成本大于自动的时候写。我觉得测试的优势就是 快速,可重复,精确,低成本

我觉得测试的最大意义,就是让你对写出的代码充满自信!

要写测试,当然也有例外的情况,前提是你已经非常熟练的掌握了怎么写测试。如果你还没有掌握怎么写测试,先写一段时间测试,熟悉后再下结论。 我认为测试驱动开发的效率是大于直接开发实现代码的。

刚进公司时,负责将代码从 Rails 3 升级到 Rails 4,但是他们之前只写了一小部分。于是我重新补写了所有 Model,Controller 的测试(以前其实我也不写测试,之前的公司太 “敏捷”😂 ) 但写了之后,我有下面几个感觉

  1. 不是所有的地方都需要写测试(不知道对不对)
  2. 写测试的好处是,自己会更加全面的去考虑 “接口” 的设计
  3. 在修改接口时,可以通过测试来保证接口的正确性
  4. 实际上大大加快了开发效率,因为你写的代码总是要测试的,不管是用什么,测试总比人肉快

#8 楼 @fsword 这个方法最好,就像谈不要在野地里游泳一样,告诉它水里虫子入脑,最快 7 天会死。。。。于是。。。

如果新的测试没有测到点子上,那么写的再多也是白搭。

我们也不写测试代码,我们的解决方案是。。。另外写了一个测试脚本,专门用来测试。。。。然后人工补上未测试的部分😂

我司就是这么堆的技术债。

我司的测试很便宜,每两周完成一个 Sprint 以后,就扔给他们做人工测试。

当然还是遇到过一些小问题的。

  1. 测试用例太多,时间太长。

    我们常规测试用例大概百多个,每个测试要跑几十分钟甚至有些要跑几小时。

    每次 Sprint 完成以后,五六个 QA 要测两星期才能测完,反馈结果,然后开发来修复,然后回去再重新测试两星期。

  2. 升级平台几乎不可能。

    我们 Ruby 1.8.7 Rails 1.2.3,一点点微小的升级就会让整个系统爆炸,哪怕我只是升到 Ruby 1.9.3 Rails 2.3。

  3. 就算是测试也不一定能测出来所有的问题。

    我们做虚拟机控制面板的。

    有一次客户遇到个 Bug,我们的面板在调整完内存大小以后把人家的硬盘档删了。

    百分百复现的 Bug,QA 漏了,因为 QA 测试用例里没有这一项。

当然现在我们已经不需要 QA 做测试了。

如果你要问为什么,当然是因为技术债太多还不完公司要倒闭了。

#22 楼 @msg7086 rails1.2.3 .....? 不会吧......

其实需要测试的代码最需要的不是测试

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)
...
...

转手太多已经不知道啥时候更新的了。

#22 楼 @msg7086 从 1 开始的 rails 生活。。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号