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

fredwu · August 24, 2013 · Last by xstmjh replied at August 30, 2013 · 9318 hits

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

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

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

=== 更新分割线 ===

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

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

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

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

如何加快测试速度

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 看到啦,很多同事都看了

You need to Sign in before reply, if you don't have an account, please Sign up first.