Upgrade to Pro — share decks privately, control downloads, hide ads and more …

軟體品質與持續整合

SJ Chou
April 28, 2015

 軟體品質與持續整合

軟體品質與持續整合

SJ Chou

April 28, 2015
Tweet

More Decks by SJ Chou

Other Decks in Technology

Transcript

  1. 軟體品質與持續整合
    Software Quality & Continuous Integration
    [email protected]
    http://blog.toright.com
    2014/12/25

    View Slide

  2. 持續整合
    Continuous Integration
    敏捷開發方法論
    其中的武功招式之一

    View Slide

  3. Why ?
    想解決什問題...

    View Slide

  4. 希望能掌握軟體開發節奏
    說好的 Feature 與 Deadline 呢?

    View Slide

  5. 開發節奏
    Tempo of Development
    程式設計師想踏實地寫程式
    專案經理想確實地掌握時程
    組織想降低成本與開發風險
    客戶想拿到品質優良的產品
    !?

    View Slide

  6. 回顧一下歷史的眼淚先...
    A Story of Integration Hell

    View Slide

  7. 悲劇的初章
    PM:各位,明天新功能要上線囉!
    RD 甲:我負責的功能早完成了!
    RD 乙:我快完成了,剩下的 Bug 今晚可以搞定。
    QA 甲:現在測試狀況還可以,剩下一些 Bug 等著修。
    QA 乙:系統怪怪的,總覺的哪裡不對勁...
    PM:不要緊,大家晚上加個班,讓我們一起迎接明日黎
    明的勝利!

    View Slide

  8. 黎明的前夕
    RD
    ● 處理惱人的程式碼衝突
    ● 忙著修正系統自動產生的 Bug !?
    ● 執行環境差異太大
    ● 整合測試出現奇妙的錯誤 (我的電
    腦明明正常啊)
    ● 開始用一些所謂「快」的方法解決
    問題 (你懂der)
    QA
    ● 壞的功能貌似修好了
    ● 原本好的功能變得怪怪的
    ● 永遠沒有最終版
    ● 時間緊迫根本測不完
    PM
    ● 有時暴跳如雷 (Bug 如雪花般的飛來)
    ● 有時安靜的像隻貓 (禱告中...)
    ● 去全聯買「乖乖」

    View Slide

  9. 黎明到來
    Bug 已經修正 (隱藏/規避),系統整合後
    運作起來還算正常,終於可以上線了!

    View Slide

  10. 新功能啟用
    大量使用者湧入使用
    團隊忐忑不安的心情

    View Slide

  11. PM 正準備吹起勝利的號角
    ...

    View Slide

  12. 系統炸了,歷史悲劇再度上演!

    View Slide

  13. 這故事各位是否熟悉?

    View Slide

  14. 面對軟體開發的複雜性
    漸漸由 病 轉變為 疾

    View Slide

  15. 回到「持續整合」
    先從字面上解釋!

    View Slide

  16. 持續 整合
    不間斷、不停地、一直、有事沒事就做一下

    View Slide

  17. 持續 整合
    把大家寫的 Code 在一起跑看看有沒有錯!

    View Slide

  18. 持續 + 整合 就是
    有事沒事就把大家寫的 Code 在一起跑看看有
    沒有錯!

    View Slide

  19. 持續整合生命週期
    Start … End
    等同整個軟體生命週期!

    View Slide

  20. 結論
    持續整合的目的在於掌握軟體開發節奏

    View Slide

  21. How ?
    該怎麼做...

    View Slide

  22. 有事沒事就把大家寫的 Code 在一起跑看看
    有沒有錯!
    就是「自動化」!

    View Slide

  23. 假自動化 vs 真自動化

    View Slide

  24. 假自動化 (半自動 / 手動)

    View Slide

  25. 人有失蹄、馬有失足
    不管多細心,只要是人做的都會錯!

    View Slide

  26. 真自動化才是王道!

    View Slide

  27. 天下武功、無堅不摧,為快不破!

    View Slide

  28. 自動化的好處

    執行成本低
    錯誤機會低

    View Slide

  29. 實行自動化的痛
    不知道怎自動化
    不容易自動化
    沒辦法自動化
    自動化過程耗費高成本

    View Slide

  30. 如果沒辦法全面自動化呢?
    那就盡可能自動化吧!

    View Slide

  31. 有事沒事就把大家寫的 Code 在一起跑看看
    有沒有錯!
    這不就是「版本控制」嗎!?

    View Slide

  32. 版本控制系統
    Version Control System
    Git, SVN, CVS...

    View Slide

  33. 有事沒事就把大家寫的 Code 在一起跑看看
    有沒有錯!
    這不就是「系統測試」嗎!?

    View Slide

  34. 測試模式
    Unit Test、Function Test、Monkey Test、UI Test…
    不管黑箱還是白箱,可以自動測的都是好箱!

    View Slide

  35. 測試到底該測些什麼?
    ● 對的要對
    ● 錯的要錯
    ● 錯的不能對
    ● 對的不能錯

    View Slide

  36. 撰寫自動化測試
    最大的問題是?
    既有的程式架構根本很難寫測試!

    View Slide

  37. 測試驅動開發
    TDD, Test-driven development
    不寫測試不寫程式
    沒有通過測試的程式不是程式

    View Slide

  38. 不要迷戀哥(TDD),哥只是個傳說!
    有時開發模式的核心不是在實踐,而是在目的!

    View Slide

  39. 透過認識方法論,找出適合手段!
    透過測試先行幫助思考,進而改善軟體架構、實作與設計...

    View Slide

  40. 明明有了測試,怎麼還是錯了?
    根本沒測到 (覆蓋率不足)
    程式寫錯、測試也剛好寫錯

    View Slide

  41. 先別說這個了,你聽過「系統反饋」嗎?
    什麼鬼?

    View Slide

  42. 系統反饋
    System Feedback
    如果你傷害它,它就會喊痛!

    View Slide

  43. 反饋的喜悅

    View Slide

  44. 每日建置
    Nightly Build
    每晚自動抓最新的程式碼,嘗試進行編譯、封裝、
    佈署、測試、建立報告...最後獲得系統反饋

    View Slide

  45. 自動化 + 測試 + 系統反饋
    持續整合的核心價值!

    View Slide

  46. What ?
    實踐...

    View Slide

  47. 持續整合系統
    Continuous Integration System

    View Slide

  48. 今天不介紹
    詳細安裝與設定請與我聯繫...

    View Slide

  49. Pull Code
    Syntax & Coding
    Style Check
    JS / CSS
    Compress
    Make Source
    Map
    Pack
    Depoly
    Generate
    Document
    Unit Test
    Function Test
    Release Tag
    Report
    (Notification)

    View Slide

  50. 每件事物都有適合自己的持續整合流程
    請試著找出屬於自己的整合流程

    View Slide

  51. 請保持心中的信念
    我們需要義無反顧的勇氣

    View Slide

  52. 對航海的人來說,擱淺的船舶就是燈塔。
    [荷蘭諺語]
    最後...

    View Slide

  53. Thanks!!
    [email protected]
    http://blog.toright.com

    View Slide