軟體品質與持續整合
軟體品質與持續整合Software Quality & Continuous Integration[email protected]http://blog.toright.com2014/12/25
View Slide
持續整合Continuous Integration敏捷開發方法論其中的武功招式之一
Why ?想解決什問題...
希望能掌握軟體開發節奏說好的 Feature 與 Deadline 呢?
開發節奏Tempo of Development程式設計師想踏實地寫程式專案經理想確實地掌握時程組織想降低成本與開發風險客戶想拿到品質優良的產品!?
回顧一下歷史的眼淚先...A Story of Integration Hell
悲劇的初章PM:各位,明天新功能要上線囉!RD 甲:我負責的功能早完成了!RD 乙:我快完成了,剩下的 Bug 今晚可以搞定。QA 甲:現在測試狀況還可以,剩下一些 Bug 等著修。QA 乙:系統怪怪的,總覺的哪裡不對勁...PM:不要緊,大家晚上加個班,讓我們一起迎接明日黎明的勝利!
黎明的前夕RD● 處理惱人的程式碼衝突● 忙著修正系統自動產生的 Bug !?● 執行環境差異太大● 整合測試出現奇妙的錯誤 (我的電腦明明正常啊)● 開始用一些所謂「快」的方法解決問題 (你懂der)QA● 壞的功能貌似修好了● 原本好的功能變得怪怪的● 永遠沒有最終版● 時間緊迫根本測不完PM● 有時暴跳如雷 (Bug 如雪花般的飛來)● 有時安靜的像隻貓 (禱告中...)● 去全聯買「乖乖」
黎明到來Bug 已經修正 (隱藏/規避),系統整合後運作起來還算正常,終於可以上線了!
新功能啟用大量使用者湧入使用團隊忐忑不安的心情
PM 正準備吹起勝利的號角...
系統炸了,歷史悲劇再度上演!
這故事各位是否熟悉?
面對軟體開發的複雜性漸漸由 病 轉變為 疾
回到「持續整合」先從字面上解釋!
持續 整合不間斷、不停地、一直、有事沒事就做一下
持續 整合把大家寫的 Code 在一起跑看看有沒有錯!
持續 + 整合 就是有事沒事就把大家寫的 Code 在一起跑看看有沒有錯!
持續整合生命週期Start … End等同整個軟體生命週期!
結論持續整合的目的在於掌握軟體開發節奏
How ?該怎麼做...
有事沒事就把大家寫的 Code 在一起跑看看有沒有錯!就是「自動化」!
假自動化 vs 真自動化
假自動化 (半自動 / 手動)
人有失蹄、馬有失足不管多細心,只要是人做的都會錯!
真自動化才是王道!
天下武功、無堅不摧,為快不破!
自動化的好處快執行成本低錯誤機會低
實行自動化的痛不知道怎自動化不容易自動化沒辦法自動化自動化過程耗費高成本
如果沒辦法全面自動化呢?那就盡可能自動化吧!
有事沒事就把大家寫的 Code 在一起跑看看有沒有錯!這不就是「版本控制」嗎!?
版本控制系統Version Control SystemGit, SVN, CVS...
有事沒事就把大家寫的 Code 在一起跑看看有沒有錯!這不就是「系統測試」嗎!?
測試模式Unit Test、Function Test、Monkey Test、UI Test…不管黑箱還是白箱,可以自動測的都是好箱!
測試到底該測些什麼?● 對的要對● 錯的要錯● 錯的不能對● 對的不能錯
撰寫自動化測試最大的問題是?既有的程式架構根本很難寫測試!
測試驅動開發TDD, Test-driven development不寫測試不寫程式沒有通過測試的程式不是程式
不要迷戀哥(TDD),哥只是個傳說!有時開發模式的核心不是在實踐,而是在目的!
透過認識方法論,找出適合手段!透過測試先行幫助思考,進而改善軟體架構、實作與設計...
明明有了測試,怎麼還是錯了?根本沒測到 (覆蓋率不足)程式寫錯、測試也剛好寫錯
先別說這個了,你聽過「系統反饋」嗎?什麼鬼?
系統反饋System Feedback如果你傷害它,它就會喊痛!
反饋的喜悅
每日建置Nightly Build每晚自動抓最新的程式碼,嘗試進行編譯、封裝、佈署、測試、建立報告...最後獲得系統反饋
自動化 + 測試 + 系統反饋持續整合的核心價值!
What ?實踐...
持續整合系統Continuous Integration System
今天不介紹詳細安裝與設定請與我聯繫...
Pull CodeSyntax & CodingStyle CheckJS / CSSCompressMake SourceMapPackDepolyGenerateDocumentUnit TestFunction TestRelease TagReport(Notification)
每件事物都有適合自己的持續整合流程請試著找出屬於自己的整合流程
請保持心中的信念我們需要義無反顧的勇氣
對航海的人來說,擱淺的船舶就是燈塔。[荷蘭諺語]最後...
Thanks!![email protected]http://blog.toright.com