新手问题 测试到底是什么?

suxiaohun · 2016年01月28日 · 最后由 5swords 回复于 2016年01月29日 · 3647 次阅读

这个点了,老是觉着有点不舒服,起因是因为今天去面试,被人问了写过测试吗?我回答从来没有写过测试。 然后面试官的神情让我感觉很不舒服,觉得好像什么都不会似的,一直别扭到现在。 我从接触 ruby 一直没用过测试,以前是自己写的功能,然后点点功能看能否正常运作,不正常就 debug 看哪里有问题,正常就发版了,后来也是 自己先过一遍,再交给测试人员去测试功能。

我只知道项目中有自带的 Test::Unit 的东西,但是从来没用过,今天也搜了一些帖子,还是不太明白。 所以想问问,写测试的意义是什么,写测试到底有无必要,如果有必要,那我应该从哪方面入手,看帖子说还有个 Rspec 的框架,也是用的非常多。

感激不尽。

减少 bug。现在还有 minitest,可以选用。

#1 楼 @chenge 你好,那写测试是自己用的还是说别人也可以用?

确保你升级各种三方库或框架的时候,能有有保障

#3 楼 @huacnlee 哦,那如果想成为一个‘好’程序员 是不是必须学会写测试?(今天感觉特尴尬)

测试的主要作用和必要体现在哪? https://ruby-china.org/topics/28355

#5 楼 @rei #6 楼 @juanito 哈,我看到了,回复很全面,等我详细看看,多谢多谢,还有诸位。

当你发现你的生产环境中有一坨代码像屎一样(可能是当时脑袋被门夹了),然后你要重构这部分代码,如何轻松的验证重构后的代码没有问题呢? 重构的代码不敢上,这个时候你就会意识到要是一开始写了测试该多好

我看了@rei的测试指南以及各位的回复,我暂时的理解:测试就是为了以后重构代码的时候,不必再人肉点来点去,运行一遍就能知道有没有影响原来的功能,不必担心发版有什么问题。 熬夜的各位辛苦了,很晚了,各位晚安。

#9 楼 @suxiaohun 这个也能算熬夜?= =!写测试算是一种习惯吧,也是开发的流程,一般大的公司会有严格的发布流程,测试是必不可少的一个环节。当然,我也有见过某公司几万行代码一行测试都没写的……

测试是为未来节约时间。每次程序升级、功能增加修改、代码重构,都需要测试。 你可以人肉测试,但是这样需要招聘很多人,写很多人肉测试用例,然后还会有很大概率漏掉 Bug。 自动化测试可以给你省下几万几十万的钞票,并提供更一致的测试结果。

#10 楼 @cassiuschen ~~我以为晚上这个点,刷论坛的人应该不多了。。。 测试的作用我大致了解了,那么大家都是怎么来写测试的?用测试框架?用哪个比较多?

#12 楼 @suxiaohun 个人偏向 rspec。平时基本只做集成测试,对于模块才做单元测试。

#2 楼 @suxiaohun 一样没写过测试。知道测试的好,但看到很多项目的测试感觉没到位,就象走过场一样。 认为测试的 case 重要于测试的技术,人肉也是要跑 case 的。 认为集成远重要于单元测试,在 rails 里注意基本的写法,除非很复杂的逻辑,单元测试起到的作用不大。但集成麻烦啊。 认为就算测试写得再好,肉测也还是要继续,不能依赖自动化测试。因为测试也是代码,也会有 bug。 认为软件质量里,需求 > 设计 > review > 测试。当然,每一个都要做好。

其实最怕的就是时间紧的时候,抽出时间写测试,导致代码质量很差,测试代码也很差。又自我感觉有测试了,质量有保证,人肉也不测了,结果一团糟。

最后,论坛上有 Testing 的节点,247 篇文章,而论坛共有 > 28902 篇文章,占比 1% 都不到。各位认为测试很重要的,发的文章里测试主题占比多少?写的 gem 里测试的占比有多少?是测试很简单吗?还是叶公好龙?

#14 楼 @5swords 非常认同“需求 > 设计 > review > 测试”

同样不写测试,但是换个角度去想,站在管理者的角度,手下人的水平参差不齐,合作开发项目质量得不到(心理上)保证,所以就有了 UT 这一出啊,也可以解释为什么很多人测试走过场。

如果有人问我写测试吗?我的回答是:自己写的 lib 会写点,业务相关的逻辑一律不写,现在需求变的太快了,写不过来。

我觉得人肉测试的技巧,可以去隔壁学学 https://testerhome.com/topics 专业的测试人员找出的 bug,比 UT 来的多。

我昨天刚把一个项目从 Rails 3.2 升级到了 4.2.5.1,附带升级了大量的 gem,一天内搞定。升级后损坏的测试逐个解决,重新通过。如果没有测试,简直就是瞎眼抓黑。

#4 楼 @suxiaohun 个人觉得对测试的理解、把握程度,是两个能力层级的分界。我曾经由于测试写得不好被一家公司拒绝过,在我有点补齐了这方面的知识,知道应该怎么写(之前只是知道需要写)之后,我更深刻地理解了这点。

#17 楼 @qhwa 求分享一些升级 3.2 到 4.2 的坑,如何解决的

#20 楼 @nainc

  1. Rails upgrade checklist
  2. Rails 3.2 到 4.2 的配置变化
  3. Make test pass,大量的 api(例如 has_many 参数变化)变化引起的错误,在这个阶段都暴露出来并解决
  4. 功能实测。暴露出来一些测试没有覆盖到的情况,说明之前的测试也不够完善。之前确实有时偷懒没有写测试

遇到最麻烦是 gem 的升级,比如:

  1. less-rails-bootstrap v2 不支持 rails 4 (less-rails-bootstrap v3 才支持),但升级到 bootstrap 3 之后,样式全乱了,为了节约时间就回退到 bootstrap 2。所以我修改了一下 less-rails-bootstrap,让他支持 rails 4
  2. paperclip_aliyun_oss 不兼容 Ruby 2.2+ 的问题,同上也修复了一下 gem
  3. Capistrano 2 和 Rails 4 有点不兼容,升级到 Capistrano 3,对照 Capstrano 升级指引 做就好了

#19 楼 @qhwa 明白一些 #14 楼 @5swords 的“需求 > 设计 > review > 测试” ,我感觉很赞

共同学习,还是不能懒,把测试放掉

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