`
robbin
  • 浏览: 4812699 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:136395
社区版块
存档分类
最新评论

Web开发敏捷之道(第二版)

    博客分类:
  • Ruby
阅读更多
Web开发敏捷之道(第二版)

《Web开发敏捷之道(第二版)-应用Rails进行敏捷Web开发》这本书的中文版已经上市,关于这本书在RoR书籍市场的地位就不用赘述了。有意思的是,这本经典的Ruby on rails教科书和我们JavaEye网站非常有缘分:

去年8月份,这本书第一版中文版上市的时候,正值我们使用Ruby on rails开发JavaEye2.0的关键时期,所以我毫不犹豫购买了三本,开发团队人手一册,那个时候,我们开发团队也是刚刚开始学习Ruby on rails,所以的确帮了不少忙。今年8月份,这本书第二版中文版也上市了,刚巧我们开发团队正在开发JavaEye3.0,这次是完全抛弃掉了JavaEye2.0的代码,彻底重写整个网站的代码,对代码质量提出了很高的要求,所以也要求我们对Ruby on rails有很好的掌握,不出意外,这次还是人手一册。

这本书的第一版主要是针对rails1.0版本的,第二版是针对rails1.2版本而写,所以新的内容很多,有意思的是,我们JavaEye2.0和JavaEye3.0的代码变迁也挺符合这本书两个版本之间的内容变动,第二版主要添加的内容有:

一、数据迁移

数据迁移功能是rails1.1版本引入的,非常受程序员的欢迎,去年我们开发JavaEye2.0的时候,rails1.1其实早就发布了,但当时第一版没有这部分内容,我们也不清楚这个功能。所以数据库的维护都是直接通过数据库工具来修改表结构,但这也造成了一些问题:例如开发环境添加了字段,但是生产环境忘记修改数据库,造成代码发布以后,网站频频报错的问题出现了好多次。

这次我们开发JavaEye3.0,就是完全使用数据迁移功能来维护数据库,可以杜绝问题的再次发生了,当然数据库的版本跟踪也方便了很多。

二、REST支持

REST是rails1.2引入的功能,也是rails框架未来的核心功能,这次我们开发JavaEye3.0,就是按照REST的架构风格来设计和开发的。但是第二版的REST功能介绍显得比较简略,不够详细,如果你的rails项目打算完全基于REST,那么可以参考一下beast开源项目,实际上我们就是大量参考了beast的代码写法。

三、模型对象的多态关联

多态关联是ORM很有用处而且很有趣的一项功能,第二版详细介绍了rails的多态关联功能,例如JavaEye3.0当中,我们就使用多态关联特性来实现帖子、博客、站内短信都可以带有附件这样的功能,也使用多态关联特性实现帖子、博客、评论都可以打tag这样的功能。

四、assert_select和集成测试

我个人觉得assert_select是一项很伟大的功能。我们整天都说TDD、TDD……,但是web应用,你怎么TDD?测试能够覆盖到页面上去吗?这在其他web开发当中是一个难题,但是assert_select就可以,而且完成的很漂亮,很简单。事实上,有了assert_select和集成测试,类似selenium之类的外部测试框架完全可以退休了。

五、其他的一些新内容

例如第二版里面增加了RJS和render :update功能,在JavaEye2.0里面,很多AJAX功能我们也是直接写prototype JS库的调用,现在基本上都改成了render :update了;
第二版里面增加了发送HTML格式和带附件的email功能,这个也是我们目前很迫切需要的功能;
第二版里面增加了使用mongrel群集部署rails应用的内容,这部分内容恐怕是我们JavaEye3.0唯一不会采用的新内容。
分享到:
评论
18 楼 jihua258 2008-07-25  
自学ruby真痛苦啊,好多语法什么的,都于其他的语言很大区别.wuwu
17 楼 marshluca 2008-04-18  
请教:
    在学习完ruby后, 拿起了web敏捷开发```这本书,但是在测试rails的第一个程序时,碰到了个问题: 通过webrici服务器,创建了控制器,在里面添加了方法,然后在对应的veiws模块添加了同名rhtml文件,为什么在浏览器上不能正确显示信息? 
删除掉public目录下的index.html还是不行,,请问问题出在哪里?我是直接在instangrails命令行上运行,windows上.
16 楼 eyesye 2007-12-06  
test
15 楼 grantgreat 2007-11-03  
lzpddd 写道
7月20号在王府井书店买了一本《Web开发敏捷之道(第二版)》和《programming ruby (第二版)》。《Web开发敏捷之道(第二版)》不错,只是翻译得让我这个英语不是很好的人都发现了好几处错误(还未看完),不过总比看E文好,以前都是挂起金山词霸看英文版,东拼西凑在单位局域网中搞了个企业网站。现在不用费力了,用母语始终比外文好理解。
;;
14 楼 dingdangxiaoma 2007-10-25  
经经济基础
13 楼 Chamjoneu 2007-08-17  
gigix 写道

QA工程师的职责,在我看来,至少包含两部分
(1)发现bug
(2)确保已经修复过的bug不会重复出现
第二部分的职责,就包含开发自动化的测试套件,并且参与制定开发流程,让质量保证在整个开发流程中持续进行。只会凭眼睛和双手和灵敏的嗅觉抓虫子,这根本算不上一个合格的QA工程师。


难找啊!!! 做开发的不肖去做测试是很常见的

Architecture -> Interface -> 1. implements
|--------------------------> 2. Test suit/Test case
integrate----->Mock
Test -> Test scenario (Ant hill or cruise control. etc)

就是这些坑里没萝卜!!
12 楼 gigix 2007-08-16  
Chamjoneu 写道
gigix 写道
无明 写道
这种UI功能测试应该用人工来测,最好配备专职测试人员。这样的测试不是非得是程序员才能完成

验收测试就不该自动化吗?
只有程序员的工作才应该自动化吗?

对啊 现在的测试工程师 不懂技术 是个相当大问题 有一些很不尽职的 常常功能测不齐  专门拿些字体 对齐之类的 问题来搪塞你 弄得我们很无奈

不过selenium 只能针对 xml格式的 对FLEX甚至一些主流的ajax框架(zk backbase)等也不支持

QA工程师的职责,在我看来,至少包含两部分
(1)发现bug
(2)确保已经修复过的bug不会重复出现
第二部分的职责,就包含开发自动化的测试套件,并且参与制定开发流程,让质量保证在整个开发流程中持续进行。只会凭眼睛和双手和灵敏的嗅觉抓虫子,这根本算不上一个合格的QA工程师。
11 楼 Chamjoneu 2007-08-16  
gigix 写道
无明 写道
这种UI功能测试应该用人工来测,最好配备专职测试人员。这样的测试不是非得是程序员才能完成

验收测试就不该自动化吗?
只有程序员的工作才应该自动化吗?

对啊 现在的测试工程师 不懂技术 是个相当大问题 有一些很不尽职的 常常功能测不齐  专门拿些字体 对齐之类的 问题来搪塞你 弄得我们很无奈

不过selenium 只能针对 xml格式的 对FLEX甚至一些主流的ajax框架(zk backbase)等也不支持
10 楼 mqqqvpppm 2007-08-15  
这本书中文version我也买, 读起来不错, 感觉买得很值

引用
robbin 写到
如果你的rails项目打算完全基于REST,那么可以参考一下beast开源项目,实际上我们就是大量参考了beast的代码写法。


谢谢,我去研究beast, 另请问java3.0也是完全基于REST的吗?
9 楼 Readonly 2007-08-14  
无明 写道
这种UI功能测试应该用人工来测,最好配备专职测试人员。这样的测试不是非得是程序员才能完成

偶们有专职测试团队,05年的时候,他们还是用人工测试的
后来出了几件事故,原因都是一样的:上了某个版本的新功能,导致一些旧功能出现bug,而这些bug如果有自动化验收测试支持的话,就不会成为漏网之鱼了。
痛定思痛,最后决定用自动化工具,06年的时候,对比了Sahi,Selenium以及Watir,最终选定了Sahi。
对于没有编程基础的测试人员来说,要用好这些工具,必须得学习一定的编程基础,对于测试人员的要求也更高。
但是这些投入绝对比找几十个廉价的暑期实习生MM来人工一个个点击要更有效,更有保障。
8 楼 yananay 2007-08-14  
引用

这种UI功能测试应该用人工来测,最好配备专职测试人员。这样的测试不是非得是程序员才能完成


Selenium 完全可以实现。
而且这样的工具多得是。
7 楼 温柔一刀 2007-08-14  
无明 写道

这种UI功能测试应该用人工来测,最好配备专职测试人员。这样的测试不是非得是程序员才能完成


测试这东西人做肯定没有机器做的好,谁愿意在你每次提交代码的时候反复的点击和输入同样的东西测试前不久才测过的东西。而且只要是人做,肯定会由出错的时候,机器做出错的几率是很小的,出错也是程序的错,测试自动化还可以减少一些测试人员
6 楼 gigix 2007-08-14  
无明 写道
这种UI功能测试应该用人工来测,最好配备专职测试人员。这样的测试不是非得是程序员才能完成

验收测试就不该自动化吗?
只有程序员的工作才应该自动化吗?
5 楼 无明 2007-08-13  
gigix 写道
yananay 写道
引用

了assert_select和集成测试,类似selenium之类的外部测试框架完全可以退休了。



这个不同意,因为Rails也是自己有一个html解析器。
我就遇到过,一个页面的js特别复杂,而且包含了更复杂的js,
尤其是动态生成js的时候。
rails 的 assert_select 就会提示错误。

关键是测不到真实的效果
比如说,用户点一个按钮,下拉出一个框,再点框里的一个链接,显示更多的信息,这都是AJAX的效果
如果只是用Rails的功能测试,你只能测是否有最初的那个按钮存在
点了按钮之后是否有框框出现,框框里的东西能不能点,点了有什么效果
这些都是测不到的


这种UI功能测试应该用人工来测,最好配备专职测试人员。这样的测试不是非得是程序员才能完成
4 楼 gigix 2007-08-13  
yananay 写道
引用

了assert_select和集成测试,类似selenium之类的外部测试框架完全可以退休了。



这个不同意,因为Rails也是自己有一个html解析器。
我就遇到过,一个页面的js特别复杂,而且包含了更复杂的js,
尤其是动态生成js的时候。
rails 的 assert_select 就会提示错误。

关键是测不到真实的效果
比如说,用户点一个按钮,下拉出一个框,再点框里的一个链接,显示更多的信息,这都是AJAX的效果
如果只是用Rails的功能测试,你只能测是否有最初的那个按钮存在
点了按钮之后是否有框框出现,框框里的东西能不能点,点了有什么效果
这些都是测不到的
3 楼 yananay 2007-08-13  
引用

了assert_select和集成测试,类似selenium之类的外部测试框架完全可以退休了。



这个不同意,因为Rails也是自己有一个html解析器。
我就遇到过,一个页面的js特别复杂,而且包含了更复杂的js,
尤其是动态生成js的时候。
rails 的 assert_select 就会提示错误。
2 楼 lzpddd 2007-08-13  
7月20号在王府井书店买了一本《Web开发敏捷之道(第二版)》和《programming ruby (第二版)》。《Web开发敏捷之道(第二版)》不错,只是翻译得让我这个英语不是很好的人都发现了好几处错误(还未看完),不过总比看E文好,以前都是挂起金山词霸看英文版,东拼西凑在单位局域网中搞了个企业网站。现在不用费力了,用母语始终比外文好理解。
1 楼 gigix 2007-08-13  
引用
有了assert_select和集成测试,类似selenium之类的外部测试框架完全可以退休了。

应该说是让Selenium回到它原本的位置:验收测试
过去两三年,我看到很多项目用Selenium做界面级的TDD。这是不好的,虽然可能是没有办法的办法。Rails的功能测试/集成测试和Selenium组合起来,能够创造出更好的测试策略。

相关推荐

Global site tag (gtag.js) - Google Analytics