测试 周末打算写个关于测试的博文,大家想知道些什么?

fredwu · 2013年08月24日 · 最后由 xstmjh 回复于 2013年08月30日 · 7373 次阅读

毋庸置疑的,测试很难——即便是一个非常成熟的,经验老道的团队,也会时不时的遇到测试上的瓶颈。

这周末我打算写一篇关于测试的文章——主要概括 rails 以及 rspec 环境下的一些测试用法和技巧,共同进步。

大家有没有什么具体想要知道的东西?

=== 更新分割线 ===

终于写完了,请翻墙批阅:http://fredwu.me/post/59395419899/writing-sensible-tests-for-happiness :)

测试可以讲的东西太多,所以没能覆盖到所有的要求,请大家见谅~

共收到 60 条回复

希望能从基本概念切入,好让初学者(比如我,嘻嘻)能摸到一个进阶的入口。

* 测试的基本步骤 * 重点测试哪些内容?

如何加快测试速度

Guard自动化测试,这个必须有的

  • 为什么要用 RSpec
  • 测试类型到底有几种 ( unit / feature etc. ) 它们的界限在哪里,是否每个 Project 都要写足这几种测试
  • 如何测试与定时相关的功能,比方一个 cron job 运行的 rake task 隔一段时间去查询一个东西,查到了就返回某个值,这种功能怎么测试

暂时想到这些... 感谢楼主

希望楼主能介绍 如何解决rspec integration test结果的不稳定性 和 api 客户端测试的方案

如何组织测试用例 很关心这个问题

是不是所有的项目都有必要写测试? 小道消息(未经确认):github 的项目基本不写测试

PS: 我们团队的 https://github.com/happypeter/onestep/ 项目现在代码也不少了,但是我却始终觉得写测试是个很得不偿失的努力。希望有高手能证明我是愚蠢的。

#11楼 @happypeter 我可以确认这小道消息是错的。

https://github.com/github/

github 开源的项目都在这儿,不写测试的极少。

cucumber features 和 rspec 并行, 粒度应该怎么把握?

我不否认在很多情况下,测试非常的有价值。但是我想说说我认为在一些特定类型的项目下测试是很鸡肋的。

在一些功能简单,但是前端和UE体验要求精益求精,同时非常需要作者经常 dogfood 的应用的情况下,我觉得写测试是没有必要的。@Rei 的 writtings.io 恰好是满足这个情况的。所以我想请教一下 @Rei 在这个项目中是如何写测试的?是否有我所说的鸡肋的感觉。

个人观点,欢迎重拍 😄

#12楼 @nightire https://github.com/github/ 确实可以说明很多问题,多谢!

不过通过听 How Github use Github to Build Github 后,他们那边确实有 "TDD is too heavy, we love(at least don't mind) Twitter Driven Development" 的倾向。

#10楼 @chucai 同样想知道 +1

怎么样的测试才是有收益的?

关于前端测试,是否可以分享一下你们的经验?

我的问题是代码经常需要更改,原先的设计或者需求往往需要变化,这样怎么样组织测试?一直委会所有功能的测试是否代价太大?

#11楼 @happypeter 这个小道消息还算靠谱吧..

整个 Slides 还是很好的,充满了各种重构的例子,使用 jasmine 写的测试。

不过真正有趣的部分出现在 Q&A 阶段:

某人站起来问 @bkeepers 请问 Github 是如何测试(人家没问如何TDD)的呢?

然后 @bkeepers 说一线的代码不是我写的,然后叫了现场的一个 Github 同事回答这个问题。然后他的同事非常尴尬的站起来很不好意思的说:”大哥,咱 Github 不写测试的“……全场哄笑。

然后 @bkeepers 笑着说:“看我回去教这帮坏小子如何写测试去……”

via: http://www.diamondtin.com/2012/backboneconf2012-the-plight-of-pinocchio-javascripts-quest-to-become-a-real-language-by-brandon-keepers/

#20楼 @hooopo 但人家放出的开源代码大部分开始有测试的呀,现场的视频里或许在开玩笑也不一定,要么就是说前端不怎么写测试?

#21楼 @nightire 明白。。。我只是顺便八卦一下 :)

就会上逮到了 Jeremy 本人,我记得趁着酒劲我问了几个问题:

您这代码都怎么写出来的?您有没有TDD呀? Jeremy 说我一般不写测试,不过为了保证质量,他会补充一些测试。他说我就是 write codes which make sense ……好的,Make sense是对直觉型程序员常说的。彪悍是不需要解释的。 您平常也看别人的开源项目获取灵感么?您如何平衡写自己的东西和看别人的东西? Jeremy说,啥? 我写代码那是为了糊口,看别人的代码那不挣钱呀。所以我一般不怎么看别人的东西,我就写我自己的东西,我觉得 make sense 的东西,当然要写的 make sense ……

via: http://www.diamondtin.com/2012/backboneconf2012-%E5%8F%82%E5%8A%A0%E4%BA%86backbone-js-conference-2012/

PS. Jeremy是 coffeescript、underscore.js 还有 backbone.js 的作者。

写API测试有写什么需要注意?

#22楼 @hooopo 写到他那程度还看什么别人的项目... 能比他写得好的才几个人,所以他当然只能自己前进啦

#14楼 @happypeter Writings.io 的 View 不写 Ruby 代码测试,主要测 Controller 和 Model。编辑器功能单独用 qunit 测试。最近想用前端 MVC 来重构交互部分,到时再用框架推荐的方法写前端测试。

@zlx_star 赞 之前还打算用Capybara来着

公司唯一的码农,一直‘探针实验’,忙不过来呀,有没有专门做测试的外包公司呀,XD...

@fredwu 我感到下面这两种情况比较难测试, 想知道怎么做比较好:

  • 测试大量调用外部 web API 的 model (调出去相当的慢)
  • 测试进程对信号的响应 (一个进程 trap 了 USR1, USR2, ... 然后根据收到的信号 spawn 子进程或者重载之类的)

另外一个是覆盖率问题, 例如我在测试中加载了 simplecov, 然后通过命令行调用去测一个命令行工具. 但那个命令行工具的实现代码没显示到测试的覆盖范围中, 比较难知道漏测了哪个选择支.

這裡有個項目演示了調用外部 API 的測試,使用的是 RSpec 以及 webmock ,可以看看這個視頻:

Google I/O 101: YouTube and Ruby on Rails for Education

用 Ruby on Rails 演示 Google OAuth + YouTube API 的示例項目。

希望看到 rails rspec 从入门到进阶

目测楼主可以直接写一本书了...

现在非常想知道的是,客户端javascript mvc如何测试,各种交互…各种异步…,粒度不知如何把控

#34楼 @reducm 用capybara或者cucumber

#26楼 @Rei 看来你还是挺喜欢单元测试的。我跟你可能刚好相反,有时觉得实在是受不了人肉测试了,就会去写点 capybara,去覆盖一些用户行为。再后来项目又进行了几个月,我甚至感觉连最粗的测试都懒得写了。

写测试不难,但是如果频繁重构,同时重构测试和代码真是很痛苦啊。不过相信那些真正把 BDD 玩的很溜的老手会有不同的感受。

#1楼 @OhCoder 我自己认为的测试新手入门的最佳路径:http://ruby-china.org/topics/13590

#29楼 @luikore 对啊,coverage太难搞了

我主要想知道,日益增长的代码中如何保证快速的test,不要类似spork的工具,不借助preload的工具。其次是如何的mock。 rspec这种就别讲了,要讲直接上minitest

我觉得对测试有任何疑问的人先去读一下《Growing Object-Oriented Software, Guided by Tests》,能解很多实际的问题。

另外测试一般分2种风格,London School 和 Detroit School (Chicago School)。前者是使用mock,后者是验证状态,上面的书是London School的开山之作,经典必读。

#41楼 @pongyo

GOOS book +1, 的确是伦敦学派的经典

#21楼 @nightire #20楼 @hooopo 我记得这个对话,应该是指前端不写测试

GitHub 不仅写测试,光就内部工具还用上了RSpec, test/unit 和 minitest

前端涉及到javascript的测试

希望看到各种使用感受和对比数据

lz 可以参考下我的问题……http://ruby-china.org/topics/13623

项目需求经常改变,测试代码也经常跟着改,现在是花在测试的时间还更多。体会不到测试的好处导致不能坚持写测试,这种情况该如何办呢?且如何维护好测试代码呢?thanks!

#45楼 @x290431695 我们项目中应用AngularJS + Karma测试容器,做浏览器的e2e测试,请大家指教

终于写完了,请翻墙批阅:http://fredwu.me/post/59395419899/writing-sensible-tests-for-happiness :)

测试可以讲的东西太多,所以没能覆盖到所有的要求,请大家见谅~

@fredwu 英文真的一级棒!能否分享一下怎么能达到这么流畅的英文表达水平 ?

学习了

@kongkong Fredwu 在澳洲生活的

想知道脱离rails,如何搭建一个基于ruby的自动化测试框架

英文的,大坑,就不能写个中文的么。。

不用翻墙,直接可以看。

一个收钱的东西木有测试,那才叫 垂死病中惊坐起,笑问客从何处来。。。。。。。

今天的ruby weekly看到啦,很多同事都看了

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