持續整合與單元測試

1,478 views

Published on

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,478
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
20
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

持續整合與單元測試

  1. 1. Continuous Integrations & Unit Test 劉昱劭
  2. 2. What is CI (Continuous Integration)? HTTP://MARTINFOWLER.COM/ARTICLES/CONTINUOUSINTEGRATION.HTML
  3. 3. 從字面上來看  整合(軟體品質工作、軟體開發的例行工作)   Build Code (MSBuild, Maven)  Unit Test (MSTest, Ntest, XUnit)  Code Style Check (styleCop)  Static Code Analysis (fxCop)   Version Control (SVN, Git) Publish 持續  Daily  Always  Automatic
  4. 4. Why CI ?
  5. 5. Bug早期發現,早期治療效果好!!  自動化!不需人工執行,持續不斷的。(人是懶惰的)  Daily Buidl Or Polling to Build(儘早發現defect)  共同開發程式碼時  Update 完之後就Build不過了嗎  一段時間後發現有問題時,用SVN一版一版退回去重Build再佈版找問題嗎  可搭配單元測試及自動測試,隨時監控品質  養成良好開發習慣
  6. 6. 重要的是…  降低風險  減尐人工手動  隨時都有可部署的版本  增加系統透明度  建立團隊信心
  7. 7. CI 概念圖
  8. 8. CI Tool
  9. 9. 常見的CI工具  Team Foundation Server — 微軟的  Hudson — 被Oracle買走了  Jenkins — Open Source  Team City  Cruise Control
  10. 10. Jenkins  http://jenkins-ci.org/content/about-jenkins-ci  從Hudson分支出來的  Open Source  Java開發  已經有有三百多個plugins
  11. 11. Demo  http://10.12.5.82:8088/  Jenkins DashBoard  Jenkins Plugins  Create Job   Build  Unit Test  Static code analysis  Report   SVN Email Build History
  12. 12. Unit Test(初階)
  13. 13. 簡介  http://ithelp.ithome.com.tw/question/10102264  5個w自己看看吧  測試中的最小單位,針對Method進行測試  如果寫出來的Method都不用修改,不寫也沒差!  如果不寫!每次修改時你會確保都手動測過?  如果不寫!進行重構時…!!  共用函式,API最好要寫!    因為你不確定誰會來叫用! 一修改會影響到很多人 增加程式的維護性跟品質! 單元測試的目的並不是用來驗證是否符合客戶需求,而是 如你預期 用來確保程式的邏輯 的方式執行,保障你的 程式不會在日後修修改改的過程中被破壞,或是因為需求 變更而導致程式發生錯誤。
  14. 14. Unit Test Framework & Tools  Visual Studio 2012  Unit Test Generator  測試總管  MSTest  Ntest
  15. 15. MSTest DEMO  3A Pattern   Act-執行   Arrange-安排要測試的資料 Assert-判斷 Visual Studio測試總管
  16. 16. MSTest(1)  Attribute  TestClass  TestMethod  ClassInitialize  ClassCleanup  TestInitialize  TestCleanup
  17. 17. MSTest(2)  Assert
  18. 18. MSTest(3)  CollectionAssert
  19. 19. MSTest(4)  StringAssert
  20. 20. 好的程式  Loosely coupled  關注點分離  減尐程式的壞味道(太長、太多、重複)  經常重構  可測試性高  多寫單元測試可以提升寫程式的能力
  21. 21. 好的單元測試  維持最小單位  執行速度快  Self Containment   低相依性   Mock資料含在單元測試中,不需要依賴外部提供 單元測試間沒有順序關係 Isolation  專注於測試Method本身的正確性  與其他函式的互動使用Fake object來處理  Mock  Stub

×