SlideShare a Scribd company logo
1 of 45
Rails 炸機實務 如何不要炸爛你家機器 和你老闆的臉
About Me ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
前言 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
關於本章要提到的測試 指的是自動化測試
為什麼我要寫測試 ?
可不可以不要寫測試 ? 要如何避免炸機 ?
星期五的時候不要  Deploy Code 腦袋通常都不太清楚
網站炸掉了 星期一  deploy code  後炸掉了
進化 : 星期五的時候不要 Commit Code 那可不可以也不用來上班 ?
一旦釋出程式碼, 可能的話不要動他 Code freeze if possible 通常是不太可能
不得不動它的時候 還是不小心炸掉了  
寫的時候請小心謹慎 正式的行政命令
檢查程式碼有沒有錯誤 開發端要自己跑一次 開瀏覽器看看有沒有問題 在你每一次更改時 重覆以上事項
還是炸掉網站了 錯誤是在別的環節, 因為這次的修改引發
 
在你每一次更改時 重覆以上事項 注意這個重覆
DRY D on't  R epeat  Y ourself 為什麼要堅持不寫測試啊 ?
每件事都有它的代價 一個開發所需時數約 10 小時, 上線 1 個月的活動網站 一個開發所需時數超過 100 小時 上線已經超過 2 年的專案 且持續有調整與新功能的社群網
實際範例 : PIXNET  化妝台 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
在 2011 年 3 月開始開發 在 5 月 ~6 月時連續發生慘案
慘案發生原因 :  規格 ,[object Object],[object Object],[object Object],[object Object],[object Object]
慘案發生原因 :  時程 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
慘案發生原因 :  外部網站介接 ,[object Object],[object Object],[object Object],[object Object]
決定補測試
事前準備 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
事前準備 ,[object Object],[object Object],[object Object],[object Object],[object Object]
Rspec-Rails ,[object Object],[object Object],[object Object]
 
 
進一步整理 ,[object Object],[object Object],[object Object]
因為是事後補測試 ,[object Object],針對對應的程式碼來寫測試
寫出相對應的測試碼 ,[object Object]
Failed
錯誤的部分與測試內容沒關係 那不重要 !
Fake It! ( 作假資料與假回傳 )
  測試絕大部分花費的時間 是在處理這些假回傳 以及準備需要的假資料
 
 
範例 :  錯誤的測試
測試碼不能檢查到 程式碼的錯誤 那就是沒有用的測試
補寫測試的流程 ,[object Object],[object Object],[object Object]
好處 ,[object Object],[object Object]
注意事項 ,[object Object],[object Object],[object Object]
測試不是萬靈丹 ,[object Object],[object Object]
Q&A  

More Related Content

Viewers also liked

Henry Stewart Slides
Henry  Stewart SlidesHenry  Stewart Slides
Henry Stewart SlidesJMHarkin
 
Hannah melhuish presentation
Hannah melhuish presentationHannah melhuish presentation
Hannah melhuish presentationJMHarkin
 
Communication
CommunicationCommunication
Communicationwqpp
 
UMClinicalStudies.org demo
UMClinicalStudies.org demoUMClinicalStudies.org demo
UMClinicalStudies.org demoaalapd
 
Graphic Design and it's application in my work as a Human Centered Designer
Graphic Design and it's application in my work as a Human Centered DesignerGraphic Design and it's application in my work as a Human Centered Designer
Graphic Design and it's application in my work as a Human Centered Designeraalapd
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionIn a Rocket
 

Viewers also liked (8)

Henry Stewart Slides
Henry  Stewart SlidesHenry  Stewart Slides
Henry Stewart Slides
 
Hannah melhuish presentation
Hannah melhuish presentationHannah melhuish presentation
Hannah melhuish presentation
 
Communication
CommunicationCommunication
Communication
 
Glaslicht
GlaslichtGlaslicht
Glaslicht
 
UMClinicalStudies.org demo
UMClinicalStudies.org demoUMClinicalStudies.org demo
UMClinicalStudies.org demo
 
Graphic Design and it's application in my work as a Human Centered Designer
Graphic Design and it's application in my work as a Human Centered DesignerGraphic Design and it's application in my work as a Human Centered Designer
Graphic Design and it's application in my work as a Human Centered Designer
 
Connected health venfinal
Connected health venfinalConnected health venfinal
Connected health venfinal
 
Learn BEM: CSS Naming Convention
Learn BEM: CSS Naming ConventionLearn BEM: CSS Naming Convention
Learn BEM: CSS Naming Convention
 

Similar to Rails 炸機實務

Proud Plone on Cloud
Proud Plone on CloudProud Plone on Cloud
Proud Plone on CloudTsungWei Hu
 
iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台Evan Lin
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressAppzhoujg
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby建興 王
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者Shengyou Fan
 
這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧志龍 陳
 
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 TaiwanAlan Tsai
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027Wei Sun
 
腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介areyouok
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型裕波 周
 
大话Php之性能
大话Php之性能大话Php之性能
大话Php之性能liqiang xu
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能Shengyou Fan
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Piece Chao
 
Selenium與動態網頁爬蟲應用
Selenium與動態網頁爬蟲應用Selenium與動態網頁爬蟲應用
Selenium與動態網頁爬蟲應用Yanwei Liu
 
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Chen Cheng-Wei
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)Wei Sun
 
腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介George Ang
 
Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片Shengyou Fan
 

Similar to Rails 炸機實務 (20)

Proud Plone on Cloud
Proud Plone on CloudProud Plone on Cloud
Proud Plone on Cloud
 
iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台iThome Modern Web 2018: 如何打造高效的機器學習平台
iThome Modern Web 2018: 如何打造高效的機器學習平台
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
 
這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧
 
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
 
腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
單元測試
單元測試單元測試
單元測試
 
大话Php之性能
大话Php之性能大话Php之性能
大话Php之性能
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
 
Phpsecurity.ppt
Phpsecurity.pptPhpsecurity.ppt
Phpsecurity.ppt
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手
 
Selenium與動態網頁爬蟲應用
Selenium與動態網頁爬蟲應用Selenium與動態網頁爬蟲應用
Selenium與動態網頁爬蟲應用
 
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介
 
Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片Laravel installfest 工作坊 投影片
Laravel installfest 工作坊 投影片
 

Rails 炸機實務