測試虛擬化,軟體開發業界的 TDD 趨向
昨天,公司同事問了一些關於假資料(dummy data)的處理方式。先提示一下,這玩意在軟體開發業界的專業用語叫 mock 或 mocking 。使用搜尋引擎時,用 mock 或 mocking 為關鍵字很快就能找到大量相關資訊。
我向同事說了一些簡單的實作方式。同時也提到去年 IBM 所推出的運作環境虛擬化工具 Green Hat 。無獨有偶,今天我在 InfoQ 的新聞上,又看到了另一家公司推出的類似產品。 顯示這種將運作環境或服務整個虛擬化、模擬化的測試驅動開發方式(TDD),在軟體開發業界正逐漸普及。
-
「Innovate 2012 IBM 開發者大會記事 : 測試環境虛擬化」,我在此文後半節,介紹了 IBM Green Hat 。
Green Hat 就是一個 mock 產生工具,而且它產生的不只是一個程式單元中的 object ,而是一整個服務環境。Green Hat 可以擷取來源行為特徵,產生假來源(mock)。讓開發者測試軟體功能時,不需要連接到真實的資料來源就能進行完整的測試。
-
「Service Virtualization as an Alternative to Mocking」,由 CA Lisa 提供的產品。
Products such as CA Lisa Service Virtualization offer an alternative approach. Rather than mocking individual classes, these testing tools allow you to mock entire services at the network level. From the application’s perspective it is talking to a real service backend, even though in reality that backend may not even exist yet.
此上兩個產品的共同特性就是建立「虛擬化的資料來源」或者「模擬資料來源」。在網路運算或雲端運算時代,資料來源主要取自網路上的另一服務提供的資料。因此虛擬化的資料來源其實也就是指服務的模擬或虛擬化。以下直接複製我在「Innovate 2012 IBM 開發者大會記事 : 測試環境虛擬化」的說明,它們的原理是一樣的。
舉個例子來說,我們公司若接下一個 POS 專案,且客戶使用的後端資料庫系統是 Oracle 。 而我們公司卻根本沒用 Oracle ,那在專案進行過程中要如何進行軟體測試?
直接連到客戶的後端資料庫?那一定是瘋了。 買一套 Oracle 來裝?又不是在路邊攤買炸雞排,那一套可貴著呢。
Green Hat 這時就有用了。它可以讓開發中的 POS 系統以為自己真的連上 Oracle 資料庫。 當 POS 系統的程式單元存取資料庫時,Green Hat 將會攔截這個存取動作,讓開發者提供 POS 系統預期得到的輸出資料。你如果用過遊戲修改大師這類軟體的話,那就能理解 Green Hat 的作法了。