SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
Software Development for Large 
      and Open Source Projects
                    Kun‐Ta Chuang
Department of Computer Science and Information Engineering
              National Cheng Kung University



                                                             1
Agenda
• 軟體自動化(Continuous Integration)流程簡介
  –   為什麼需要軟體持續整合
  –   軟體開發情境模擬
  –   CI的架構與範疇
  –   CI通用原則
• 跟軟體開發流程工具結合
  – Version Control
  – Auto‐Build
  – Auto‐Testing
• CI範例介紹
  – CruiseControl安裝與使用
  – CruiseControl使用
• 完整實例展示
• 結論

                                      2
Agenda
• 軟體自動化(Continuous Integration)流程簡介
  –   為什麼需要軟體持續整合
  –   軟體開發情境模擬
  –   CI的架構與範疇
  –   CI通用原則
• 跟軟體開發流程工具結合
  – Version Control
  – Auto‐Build
  – Auto‐Testing
• CI範例介紹
  – CruiseControl安裝與使用
  – CruiseControl使用
• 完整實例展示
• 結論

                                      3
為什麼需要軟體持續整合技術
 • 「整合地獄」問題(Integration Hell)
   – 團隊大型軟體開發時容易發生project delay, 需求改變,
     schedule重排問題
   – 這些問題通常會在不同系統元件整合時產生很嚴重的
     影響
 • 軟體有可能會有多種版本for不同需求
   – 如何有效管理不同版本常是軟體獲利最關鍵點




                                   4
為什麼需要軟體持續整合技術
• 如果每次都在開發後期才進行build
 – 一發生問題時難以進行錯誤追蹤及修改
• 應避免每次人工進行版本控制 與 軟體測試
  等動作
• 當程式碼或軟體開發人員一多,軟體品質
  的重覆性檢查變得極為重要但繁瑣



                         5
為什麼需要軟體持續整合技術
• Continuous Integration (CI) can help!
  – 降低風險
  – 減少人工重複的程序
  – 隨時可產生Deployable  Software
  – 使專案的透明度
  – 建立較好產品的信心




                                          6
為什麼需要軟體持續整合技術
 • 取代傳統上,開發完成後才進行品質控管,
   以提高軟體的品質,且降低執行時間。
 • 容易在最短的時間內發現問題的存在。減少
   在整合時所出現的bug所花費的時間。
 • Build software at every change
           CI can help!




                                    7
軟體開發情境模擬
情境1
• Ben : 我發現我的程式在local端可以跑, 但是在
  server端卻執行錯誤。

• John : 你有檢查你的code有發生錯誤嗎?

• Ben : 我已經完整check一遍了,且測試結果也都沒
  問題。

• John : 恩~我發現問題了,你的JDK是用舊的java版
  本,沒有更新。

• Ben : ....
                                 8
軟體開發情境模擬
              情境1
• Solution 1
  – 可以使用可以判斷版本是否符合的build 軟體,
    如Maven。
• Solution 2
  – 除了程式碼,也將專案用到相關檔案放進版本
    控管容器。




                           9
軟體開發情境模擬
          情境II
• Ben : 你在做什麼?

• John : 我在等待最新程式碼上傳,因為之前程
  式碼有問題,還在修改中..

• Ben : 最新程式碼在兩天前已經上傳,你不知
  道嗎?

• John : 沒有耶!!當時我不在我的辦公室..

                             10
軟體開發情境模擬
                情境II
• Solution
  – CI server可以幫忙解決這類問題,每當專案
    build fail,或者於版本控管容器有新的更新時,
    server便會自動寄電子郵件訊息給所有專案相
    關人員。
  – 甚至也可加入SMS notification將文字訊息傳送
    到手機上面進行提醒。




                                11
軟體開發情境模擬
         情境III
• Ben : 我發現有一個程式上的bug,但是我
  查看近幾天程式更新的地方,似乎都沒發
  現到什麼問題..

• John : 那可能要追到更早以前的更新去檢
  查看看。

• Ben : ……….那不知道要檢查多久耶...

                            12
軟體開發情境模擬
                情境III
• Solution
  – 透過持續整合的機制,每當server偵測到容器
    有更新時,系統便會自動進行build,及時將結
    果輸出。
  – 一旦發現build失敗,有極大的機率是這次更新
    的地方發生問題或引發相關的衝突,便能盡早
    解決。




                          13
CI的架構與範疇




Quoted from P. M. Duvall, et al., Continuous Integration: Improving Software Quality and
Reducing Risk, 2007                                                                        14
CI的架構與範疇
• 版本控管 (Version Control)
• 測試自動化(Auto‐Testing)
• 建構自動化(Auto‐Build)
  – 自動部署(Auto‐Deploy)
• 專案管理
• 錯誤通報及後續追蹤處理(Issue Tracker)機制
  的整合


                             15
CI的架構與範疇
• 你需要的整合工具
 – 需要一個程式的版本控管容器(git, svn…)
 – 自動建置工具(Ant, Maven…)
 – 測試自動化工具
• 還有CI平台
 – 各種檢查工具產生的分析結果,轉換成圖表、網頁、
   存入資料庫
 – 將結果通知團隊成員,觀察趨勢,可與上一次分析結
   果比較
 – 將多個專案用透明化且數據化的方式管理,呈現系統
   即時品質,找出專案管理、系統設計、瑕疵追蹤等等
   重要的趨勢

                              16
CI通用原則
• 每天都要sync(check‐out)最新的程式碼
• 每天要提交一次程式碼check‐in
• 個人程式碼check‐in原則
 – 由主分支拉出一個分支(personal workspace)
 – 由此分支進行修改並且測試
 – 測試成功後再與主分支同步(其他人的修改也可
   以update),並且在進行測試與修改
 – 上傳到主分支,同樣進行測試與修改
 – 如果要新增功能則在重頭開始以上的步驟

                                17
CI通用原則
• 團隊共識
 – 不能也不會從版本控制容器get到不能執行的程式
   • 只要get下來就應該要可以build,如果不能build ,應該
     是自已環境的問題
 – 如果測試失敗,每個成員都會知道,並可在最短
   時間內修復
 – 降低工程師自行撰寫測試程式的門檻,由工程師
   自行做第一關的軟體測試方能把關
 – 新程式碼必須通過品質的指標門檻與測試結果才
   可以check‐in
 – 團隊每個人均有良好的check‐in、check‐out、
   private build習慣
   • 如”程式碼的衝突必須先行解決(resolve)方能check‐in”
   • 如”不在下班前一小時才check‐in程式碼”
                                      18
CI通用原則
• Build機制
 – (1) On-demand : 由使用者驅動之程序,主要由使用
   者初始化整合build。
 – (2) Schedule : 由時間來驅動,固定一段時間執行一
   次build。
 – (3) Poll for changes : 每隔一段時間檢查是否有更改,
   如有則執行build。
 – (4) Event-driven : 由某件事件驅動build,比如說 : 當
   重新定義事件發生,則執行build。

      Build Type        Build 機制
      Private           (1)
      Integration       (1)(2)(3)(4) 
      Release           (1)(2)          19
CI通用原則
• 時常觀察專案健康度 (Hudson)




                                             直接由Hudson以圖表方
                                             式檢視程式test結果




                                                                             20
http://www.peterfranza.com/2008/09/26/comparison‐of‐continuous‐integration‐servers/
CI通用原則
   時常觀察專案健康度 (Jenkins)


               檢視程式狀態與測試結果




              https://builds.apache.org/
                                           21
CI通用原則
   時常觀察專案健康度 (Jenkins)
       可觀察所有人是否有建置




                          22
Agenda
• 軟體自動化(Continuous Integration)流程簡介
  –   為什麼需要軟體持續整合
  –   軟體開發情境模擬
  –   CI的架構與範疇
  –   CI通用原則
• 跟軟體開發流程工具結合
  – Version Control
  – Auto‐Build
  – Auto‐Testing
• CI範例介紹
  – CruiseControl安裝與使用
  – CruiseControl使用
• 完整實例展示
• 結論

                                      23
軟體開發工具整合
• 版本控管 (Version Control)
  – 必備三元素
     • 保留修訂記錄。
     • 連結性。
     • 不可分割的交易。
  – Famous Version Control 
    System( VCS)
     •   git
     •   Mercurial
     •   subversion(svn)
     •   cvs
     •   perforce

                              24
軟體開發工具整合
   版本控管工具‐git
    ◦ 清楚了解每個開發者送交歷
      史紀錄




                     25
軟體開發工具整合
   版本控管工具
    ◦ Demonstration from Mozilla




                                                           26
             http://hg.mozilla.org/mozilla‐central/graph
軟體開發工具整合
   版本控管工具
    ◦ 容易比較與原先版本的差異




                     27
軟體開發工具整合
• 自動建置(Auto‐Build)
  – 什麼是建置 ‐ 包含編譯(compile)、測試(testing)、
    檢查(inspection)、佈署(deployment)等等動作。
  – 自動建置機制
     • 撰寫build script,系統會依此自動的建置專案
• 常見的自動建置工具
  – gmake/icecream
  – Avanced build tools (XML‐based build script)
     • Ant/Maven (Project Object Model)
                                                   28
軟體開發工具整合
• Ant




        Ant已將程式編譯,產生執行檔以及執行的動作,自動化執行
                                   29
軟體開發工具整合
• Maven
          只需要一行就可以完成編譯&測試




                            30
軟體開發工具整合
• 軟體測試
 –   單元測試 (Unit Testing)
 –   元件測試 (Component Testing)
 –   系統測試 (System Testing)
 –   功能測試 (Function Testing)
 –   壓力測試,回歸測試 (Regression Testing)
 –   整合測試 (Integration Testing)
 –   Smoke Testing
 –   …
• 用於維持軟體可靠度
                                      31
軟體開發工具整合
• 單元測試:基本且細部測試,測試每一單
  元(一個method或class),常見的如JUnit。
• 元件測試:測試部分系統,如databases , 
  file systems , network endpoints




                                     32
軟體開發工具整合
• 系統測試:以系統模擬使用者使用此系統,
  常見的如:JWebUnit(測試網頁)
• 功能測試:以使用者角度,實際使用系統,
  如:Selenium




                    33
軟體開發工具整合
       可觀察
       成功/錯誤/失敗




       Test Packages




       Test Suites




       Test Cases




                       34
軟體開發工具整合
• assertEquals(expected value, actual value)

• JUnit使用此method測試程式碼產生的值是
  否與使用者所預期的值是否一致。




                                               35
軟體開發工具整合
• 功能測試工具
 – Selenium




     錄製要測試的動作   如果測試動作全完成
                就會呈現綠色      36
Agenda
• 軟體自動化(Continuous Integration)流程簡介
  –   為什麼需要軟體持續整合
  –   軟體開發情境模擬
  –   CI的架構與範疇
  –   CI通用原則
• 跟軟體開發流程工具結合
  – Version Control
  – Auto‐Build
  – Auto‐Testing
• CI範例介紹
  – CruiseControl安裝與使用
  – CruiseControl使用
• 完整實例展示
• 結論

                                      37
CI範例介紹
• CruiseControl
  – 為Open source 軟體,架設也較為容易。
  – 比較容易和第三方管理工具軟體整合。
  – 對於建構失敗時,系統傳送給使用者之資訊,比其
    他CI軟體還要來的詳細
• 其它CI平台
  –   Tinderbox: Perl‐based CI used in Mozilla products
  –   Buildbot:  Python‐based
  –   Hudson: Java‐based
  –   Jenkins: Java‐based
  –   …

                                                          38
CI範例介紹
•   1. 到此網址下載cruisecontrol‐bin‐xxx 版本檔案。




                   http://cruisecontrol.sourceforge.net/   39
CI範例介紹
•   2. 確認系統有安裝至少Java 1.4以上的版本。請注意CruiseControl是Java‐based 
    Application:請指定JAVA_HOME變數。




                                                         40
CI範例介紹
•   3. 將於Step(1) 所下載的檔案解壓縮到想要的目錄,並執行cruisecontrol.bat。
    (可以發現裡面已經有Ant的build軟體)。




                                                     41
CI範例介紹
•   4. 到瀏覽器輸入http://localhost:8080/dashboard 可看到dashboard




                                                            42
CI範例介紹
•   4.1 (Error)沒安裝JDK的狀況




                              43
CI範例介紹
•   5. 查看build結果




                            44
CI範例介紹
•   6. 將特定程式故意改錯,一旦CI的build時間一到,並偵測到修改紀錄,
    便會進行build,以下為顯示錯誤之訊息。(目前將Cell.java其中一行
    code的冒號拿掉進行測試)




                                        45
CI範例介紹




         46
CI範例介紹
•   7. build 的test結果




                                47
Agenda
• 軟體自動化(Continuous Integration)流程簡介
  –   為什麼需要軟體持續整合
  –   軟體開發情境模擬
  –   CI的架構與範疇
  –   CI通用原則
• 跟軟體開發流程工具結合
  – Version Control
  – Auto‐Build
  – Auto‐Testing
• CI範例介紹
  – CruiseControl安裝與使用
  – CruiseControl使用
• 完整實例展示
• 結論

                                      48
完整實例展示
• Step1 . 撰寫一Sample code (in Java)




                                     49
完整實例展示
• Step2 .撰寫測試用TestSuit




                         50
完整實例展示
• Step3. 撰寫ant建構用的xml檔


                     <<編譯的部分>>




                         <<測試的部分>>


                                     51
完整實例展示




     所有名稱Test結尾的
     類別檔都會進行測試




                   52
完整實例展示
• Step4. CI自動建置,產生結果(Correct)




                                53
完整實例展示
• 建置成功,測試比對不相符。




                  54
完整實例展示
• 建置失敗。




               55
完整實例展示
   建置失敗Email通知




                  56
Agenda
• 軟體自動化(Continuous Integration)流程簡介
  – 為什麼需要軟體持續整合
  – 情境模擬
  – 軟體持續基本原則
• 跟軟體開發流程工具結合
  – Auto‐Testing
• CI範例介紹
  – CruiseControl安裝
  – CruiseControl使用
• 完整實例展示
• 結論

                                      57
結論
• CI是軟體品質的確認平台
 – 將其他每個維持品質的工具組織起來,透過不斷
   的持續監控整合及品質問題,即時回報狀態給所
   有成員
 – 即使不懂技術的管理者,可以光看報表就知道系
   統的健康狀況
 – 團隊開發時可以及早發現,在整合上是否有所問
   題
 – 團隊每個人可以隨時了解專案目前的狀況,各方
   面軟體品質的資訊都是透明的
• CI也可以說是一個中大型軟體團隊不得不依賴
  的機制
 – 協助明確分工
 – 協助時程管理
                       58
Q&A




      59

Weitere ähnliche Inhalte

Was ist angesagt?

Qa engineer training
Qa engineer trainingQa engineer training
Qa engineer trainingychw365
 
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)jalamar
 
20121213 foundation of software development 2 2-ktchuang
20121213 foundation of software development 2 2-ktchuang20121213 foundation of software development 2 2-ktchuang
20121213 foundation of software development 2 2-ktchuangnetdbncku
 
Se2009 ch8
Se2009 ch8 Se2009 ch8
Se2009 ch8 浒 刘
 
Effective DevOps (Agile Tour HsinChu 2017)
Effective DevOps (Agile Tour HsinChu 2017)Effective DevOps (Agile Tour HsinChu 2017)
Effective DevOps (Agile Tour HsinChu 2017)Chen Cheng-Wei
 
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)JoXuZi
 

Was ist angesagt? (6)

Qa engineer training
Qa engineer trainingQa engineer training
Qa engineer training
 
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
 
20121213 foundation of software development 2 2-ktchuang
20121213 foundation of software development 2 2-ktchuang20121213 foundation of software development 2 2-ktchuang
20121213 foundation of software development 2 2-ktchuang
 
Se2009 ch8
Se2009 ch8 Se2009 ch8
Se2009 ch8
 
Effective DevOps (Agile Tour HsinChu 2017)
Effective DevOps (Agile Tour HsinChu 2017)Effective DevOps (Agile Tour HsinChu 2017)
Effective DevOps (Agile Tour HsinChu 2017)
 
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 Shanghai_精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
 

Ähnlich wie Continuous integration

Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Jimmy Lai
 
持续集成中的反模式
持续集成中的反模式持续集成中的反模式
持续集成中的反模式Kai Feng Zhang
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超drewz lin
 
Heat在企业中的应用实践
Heat在企业中的应用实践Heat在企业中的应用实践
Heat在企业中的应用实践xuanlangjian
 
软件工程 第八章
软件工程 第八章软件工程 第八章
软件工程 第八章浒 刘
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
敏捷测试中的工具实现
敏捷测试中的工具实现敏捷测试中的工具实现
敏捷测试中的工具实现drewz lin
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 
Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路AgileCommunity
 
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdfbj_qa
 
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具taobao.com
 
PHPUnit slide formal
PHPUnit slide formalPHPUnit slide formal
PHPUnit slide formaljameslabs
 
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)LetAgileFly
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Will Huang
 
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版Kirk Chen
 
豆瓣I os自动化测试实践和经验
豆瓣I os自动化测试实践和经验豆瓣I os自动化测试实践和经验
豆瓣I os自动化测试实践和经验drewz lin
 
Tcon分享 芈峮
Tcon分享 芈峮Tcon分享 芈峮
Tcon分享 芈峮mijun_hlp
 
持续交付最佳实践——百度技术沙龙201110
持续交付最佳实践——百度技术沙龙201110持续交付最佳实践——百度技术沙龙201110
持续交付最佳实践——百度技术沙龙201110Qiao Liang
 
DevSecOps-The Key of Continuous Security
DevSecOps-The Key of Continuous SecurityDevSecOps-The Key of Continuous Security
DevSecOps-The Key of Continuous Security4ndersonLin
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例Will Huang
 

Ähnlich wie Continuous integration (20)

Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...Continuous Delivery: automated testing, continuous integration and continuous...
Continuous Delivery: automated testing, continuous integration and continuous...
 
持续集成中的反模式
持续集成中的反模式持续集成中的反模式
持续集成中的反模式
 
Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超Top100summit automan x之框架介绍 王超
Top100summit automan x之框架介绍 王超
 
Heat在企业中的应用实践
Heat在企业中的应用实践Heat在企业中的应用实践
Heat在企业中的应用实践
 
软件工程 第八章
软件工程 第八章软件工程 第八章
软件工程 第八章
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
敏捷测试中的工具实现
敏捷测试中的工具实现敏捷测试中的工具实现
敏捷测试中的工具实现
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路Project GATE 的敏捷實踐之路
Project GATE 的敏捷實踐之路
 
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf
 
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具
 
PHPUnit slide formal
PHPUnit slide formalPHPUnit slide formal
PHPUnit slide formal
 
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)Scrum gathering 2012 shanghai  精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
Scrum gathering 2012 shanghai 精益与持续改进分会场演讲话题: 大型企业ci平台建设和实施分享(陈小光)
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
 
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
 
豆瓣I os自动化测试实践和经验
豆瓣I os自动化测试实践和经验豆瓣I os自动化测试实践和经验
豆瓣I os自动化测试实践和经验
 
Tcon分享 芈峮
Tcon分享 芈峮Tcon分享 芈峮
Tcon分享 芈峮
 
持续交付最佳实践——百度技术沙龙201110
持续交付最佳实践——百度技术沙龙201110持续交付最佳实践——百度技术沙龙201110
持续交付最佳实践——百度技术沙龙201110
 
DevSecOps-The Key of Continuous Security
DevSecOps-The Key of Continuous SecurityDevSecOps-The Key of Continuous Security
DevSecOps-The Key of Continuous Security
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
 

Mehr von netdbncku

Jenkins hand in hand
Jenkins  hand in handJenkins  hand in hand
Jenkins hand in handnetdbncku
 
20121213 qa introduction smileryang
20121213 qa introduction smileryang20121213 qa introduction smileryang
20121213 qa introduction smileryangnetdbncku
 
Software development lifecycle_release_management
Software development lifecycle_release_managementSoftware development lifecycle_release_management
Software development lifecycle_release_managementnetdbncku
 
2012 11-16 cloud practices-in_trend_micro_2012 - chung-tsai su
2012 11-16 cloud practices-in_trend_micro_2012 - chung-tsai su2012 11-16 cloud practices-in_trend_micro_2012 - chung-tsai su
2012 11-16 cloud practices-in_trend_micro_2012 - chung-tsai sunetdbncku
 
Intoduction of programming contest
Intoduction of programming contestIntoduction of programming contest
Intoduction of programming contestnetdbncku
 
Tutorial of eclipse
Tutorial of eclipseTutorial of eclipse
Tutorial of eclipsenetdbncku
 
3. java basics
3. java basics3. java basics
3. java basicsnetdbncku
 
2. java introduction
2. java introduction2. java introduction
2. java introductionnetdbncku
 

Mehr von netdbncku (8)

Jenkins hand in hand
Jenkins  hand in handJenkins  hand in hand
Jenkins hand in hand
 
20121213 qa introduction smileryang
20121213 qa introduction smileryang20121213 qa introduction smileryang
20121213 qa introduction smileryang
 
Software development lifecycle_release_management
Software development lifecycle_release_managementSoftware development lifecycle_release_management
Software development lifecycle_release_management
 
2012 11-16 cloud practices-in_trend_micro_2012 - chung-tsai su
2012 11-16 cloud practices-in_trend_micro_2012 - chung-tsai su2012 11-16 cloud practices-in_trend_micro_2012 - chung-tsai su
2012 11-16 cloud practices-in_trend_micro_2012 - chung-tsai su
 
Intoduction of programming contest
Intoduction of programming contestIntoduction of programming contest
Intoduction of programming contest
 
Tutorial of eclipse
Tutorial of eclipseTutorial of eclipse
Tutorial of eclipse
 
3. java basics
3. java basics3. java basics
3. java basics
 
2. java introduction
2. java introduction2. java introduction
2. java introduction
 

Continuous integration