33

Click here to load reader

從 Use Case 到 Test Case

Embed Size (px)

DESCRIPTION

從 Use Case 到 Test Case. 彭靖灝 斯歌資訊. 課程內容. 故事: K2 blackpearl 延伸解讀 User Story 和 Use Case 測試程序和測試案例 VS 2010 的測試功能. 延伸解讀. 似曾相識 …. 開發人員設計程式 開發人員確信他的程式能夠正常編譯 開發人員登入程式碼 同樣的事情發生在其他幾位開發人員身上,為期四週 開發主管進行所有元件 的組建動作 應用程式安裝到測試環境 測試人員開始進行測試 應用程式未能通過測試 開發人員責怪測試過程. 循環. 不同的作業循環有其「完成」的定義 - PowerPoint PPT Presentation

Citation preview

Page 1: 從 Use Case 到 Test Case

從 Use Case 到 Test Case

彭靖灝斯歌資訊

Page 2: 從 Use Case 到 Test Case

課程內容

• 故事: K2 blackpearl• 延伸解讀• User Story 和 Use Case• 測試程序和測試案例• VS 2010 的測試功能

Page 3: 從 Use Case 到 Test Case

延伸解讀

Page 4: 從 Use Case 到 Test Case

似曾相識…• 開發人員設計程式• 開發人員確信他的程式能夠正常編譯• 開發人員登入程式碼• 同樣的事情發生在其他幾位開發人員身上,為期四

週• 開發主管進行所有元件的組建動作• 應用程式安裝到測試環境• 測試人員開始進行測試• 應用程式未能通過測試• 開發人員責怪測試過程

Page 5: 從 Use Case 到 Test Case

循環

• 不同的作業循環有其「完成」的定義• 早點「完成」要比晚點「完成」好

Check In

Daily Build Testable

Story

Iteration

Product

Page 6: 從 Use Case 到 Test Case

取捨之間

• 推遲「完成」的代價– 在開發過程組建的成果品質不佳– 推遲了發現問題的時機– 不清楚究竟留了多少尾巴

• 儘快「完成」的代價– 人工驗證代價高容易出錯– 自動化驗證需要大量投資─很難贏得支持

• 推遲「完成」常成為預設的選項

Page 7: 從 Use Case 到 Test Case

軟體何時完成 ?

當…• 程式寫好時 (code complete)?• 進行組建時 ?• 通過單元測試時 ?• 通過接受度測試時 ?• 所有的臭蟲都修正時 ?• 客戶說完成時 ?

Page 8: 從 Use Case 到 Test Case

期望的開發模型早些完成並維持

• 開發人員撰寫程式碼並進行單元測試• 開發人員僅在通過核心測試並能組建的情況下登

入程式碼• 對整個產品進行經常性的自動化組建作業• 組建的結果能自動部署到測試環境• 接受度測試是驗證產品品質的最終關卡

Page 9: 從 Use Case 到 Test Case

越早聽到壞消息越好

Page 10: 從 Use Case 到 Test Case

使用案例和使用者故事

Page 11: 從 Use Case 到 Test Case

使用者故事 (User Story)

Page 12: 從 Use Case 到 Test Case

故事

• 必要元素– 主角– 情境、劇情

• 使用者的角度• 未經修飾、扭曲的需求

Page 13: 從 Use Case 到 Test Case

UML Use Case

• 涵蓋 User Story 的功能• 更進一步透過標準的符號表現情境中角色

的互動關係

Page 14: 從 Use Case 到 Test Case

建立需求模型的重要性• 專注在系統的外部行為,隔離內部設計• 精確描述使用者的需要,避免自然語言描述上的誤差• 定義在使用者、開發人員和測試人員之間一致的辭彙• 減少需求間的不一致性和落差• 減少處理需求變更產生的工作量• 規劃要實作功能的順序• 以模型為依據建立系統測試,讓需求和測試之間維持

清晰的關係。一旦需求變更,立即能正確的修正測試。讓系統能符合需求

Page 15: 從 Use Case 到 Test Case

測試程序和測試案例

Page 16: 從 Use Case 到 Test Case

測試計劃

Page 17: 從 Use Case 到 Test Case

步驟 1 : 自動化組建• 自動化組建是推動「完成」的靈丹

– 提供最大的回報– 既然最後要組建,何不早一點開始

Page 18: 從 Use Case 到 Test Case

步驟 2 : 持續整合 (CI)

• 持續的進行迴歸作業– 持續執行組建並掌握你的「完成」等級– 在問題被帶入當時就發現並處置

Page 19: 從 Use Case 到 Test Case

步驟 3 : 自動化測試• 自動化測試讓我們保持在「完成」的階段

– 不要只是「完成」了;要維持「完成」的狀態– 越多 事情自動化越好– 自動化的代價常意謂著沒發生

Page 20: 從 Use Case 到 Test Case

步驟 4 : 測試環境部署• 應用程式能執行才是真正「完成」的關鍵

– 如果不能使用應用程式很難說是否完成– 從組建到部署應用程式的過程常是障礙所在– 每做一次組建都要部署一次是最大的障礙

Page 21: 從 Use Case 到 Test Case

步驟 5 : 明瞭「完成」的狀況

• 在任何時候都能掌握「完成」的狀態– 組建的狀態– 測試的結果– 完成了那些使用者案例–還有多少臭蟲在那

Page 22: 從 Use Case 到 Test Case

傳統作業流程

編譯程式碼

重建作業環境

部署應用系統

進行測試

Page 23: 從 Use Case 到 Test Case

自動化作業流程

編譯程式碼

復原環境

部署應用程式取得快照

進行測試

Page 24: 從 Use Case 到 Test Case

VS 2010的測試功能

Page 25: 從 Use Case 到 Test Case

VS Ultimate & TFS 2010 推動「完成」

• 自動化推進「完成」– 提供必要的基礎建設– 專注在應用程式特性– 一次調整一步

• 在每一個週期強迫「完成」– 登入原則– 登入把關 (Gated Check-in)– 持續整合

• 清楚何時「完成」– 測試報告– 專案資料報告

原始碼管理

組建

驗證層級

部署組建

執行測試

工作事項

TFS

Page 26: 從 Use Case 到 Test Case

步驟 1 : 自動化組建• VS & TFS 簡化自動化組建

– 自動化組建可以不用再令人生畏– 所有在 VS 中建立的專案可以幾秒內有自動化組建能力

• 完全可延伸– 整合Windows Workflow Foundation引擎– 從單一組建機器到組建實驗室執行跨機器的組建工作

Page 27: 從 Use Case 到 Test Case

步驟 2 : 持續整合

• VS & TFS 天生支援持續整合– 不需要額外的動作– 只需要組建機器的作業週期

• 登入把關確保組建中斷不致發生– TFS 會在每一次登入前先組建 ( 同步化 CI)– 不再聽到「它在我的電腦上 OK呀」– 確保不會有不合乎最低限度「完成」條件的程式碼登

Page 28: 從 Use Case 到 Test Case

步驟 3 : 自動化測試• VS 降低了測試自動化的障礙和代價

– 從單元測試到自動化 UI 測試– 對測試的支援是 VS 2010 的投資重點

• 整合測試和組建– 確保你的測試儘早通過– 每一次組建都可以有測試結果

Page 29: 從 Use Case 到 Test Case

步驟 4 : 測試環境部署• 2010 提供了視覺化實驗室管理

– 自動組合 /分割實驗室環境– 以群組為單位管理設備– 網路隔離

• 整合組建和實驗室部署– 自動化部署組建結果並執行測試– 應用程式能備妥面對其他類型的測試

Page 30: 從 Use Case 到 Test Case

Microsoft Test and Lab Manager

• 可用來建立– 測試計劃– 測試套件 (test suite)– 測試配置 (test configuration)– 測試案例

• 內含在 Ultimate版本,或在 Test Element中獨立執行

• Visual Studio Premier 不含 Test and Lab Manager

Page 31: 從 Use Case 到 Test Case

Testing Center

Page 32: 從 Use Case 到 Test Case

尾聲

Page 33: 從 Use Case 到 Test Case

提高程式品質的基本習慣• 透過 Use Case 建立 Test Case ,開發作業一啟動,就同時著手建立測試案例– 用測試案例做為需求把關的依據– 對設計成果把關

• 透過 Activity Diagram做為建立註解的依據,先寫註解,再寫程式碼– 透過註解做為作業邏輯把關的依據– 對設計過程把關

• 持續的進行 Refactoring– 為程式碼的品質把關– 讓程式碼始終處在一個易於維護的狀態