rails 炸機實務
TRANSCRIPT
About Me
• Manic Chuangohttp://tech.manic.twohttp://www.manic.tw
• PIXNET (2008~), PHP Programer• Half Rails Developer since 2009• PIXNET Rails Team in 2011, April
前言
• 這是在講測試的,只是順便講怎麼炸掉你家網站
• 在現有專案導入測試碼撰寫• 使用 Rspec• 使用真實範例• 演講者自己也是新手• 適合聽眾 :
o沒寫過測試但有興趣的人o想了解測試但不知道如何下手的人o想看看別人怎麼炸他們家專案的人
實際範例 : PIXNET 化妝台
• 暱稱 Pixlovely• http://channel.pixnet.net/lovely• 歷經三版本
o PHP 時代 : http://channel.pixnet.net/lovely ??? ~ 2009.07
o Rails 2.3.4 版本 http://belovely.tw 2009.07 ~ 2011.06
o Rails 3 版本 http://channel.pixnet.net/lovely2011.06 ~ 2011.07 開始寫 ( 補 ) 測
慘案發生原因 : 規格
• PM 是產品部門,企畫的是美妝部,開發的是技術部oPM 並非技術出身o規格時沒考慮到一些例外狀況處理o溝通不統一o開發端發現規格有問題,
與企畫討論後修改了規格。但是 PM 端不知道這件事
慘案發生原因 : 時程
• 2011 年 3 月第一個程式碼提交, 6 月要上線
• 5 月加入開發,此時進度約 50%
• 只檢測功能正不正常,不管程式碼品質o上線後再回來修o長輩名言 : 拋掉羞恥心程式就可以寫很快了o結果來回的次數變多
• 驗收功能的是 PM 部,他站在你後面而且很火
慘案發生原因 : 外部網站介接
• Session 與 PIXNET 本家 (PHP) 共用
• 使用 PIXNET 相簿作圖床 (Oauth API)
• 使用 PIXNET 的 Solr 作為 Search Engine
• 開發與檢測驗收都很費功夫
事前準備
• 選擇並學會使用你的 Test Frameworko 在此使用 RSpec Railso 清單
http://ihower.tw/rails3/testing.html http://www.slideshare.net/ihower/rspec-7394497 http://pragprog.com/book/achbd/the-rspec-book
Rspec-Rails
• 和 Rails 一樣依照 MVC 架構分別有 Model, View, Controller
• Integration Test: Request specs• 其他 : Route specs, Helper specs
注意事項1.專注於被測試的項目,讓其他部分用假資料 (Fixture) 與假回傳 (Mock & Stub) 來處理2.確保你的測試可以有用:
試著”故意”寫錯程式碼讓測試失敗,藉此練習想像各種的錯誤情況,以提早預防3.當局者迷,可以找另一個人幫你 Review 或 Pair
Programing