我們來猜個謎語:每一家組織都需要它,每一家組織都能生成它,但快速便捷地生成往往會導致超高的風險和高昂的支出。 猜猜我所指的是什麼? 當然,答案是測試資料。
近年來,IBM 一直在宣傳打造智慧地球的理念。 在很大程度上,使您的企業在客戶和股東的眼中表現出智慧的核心就是應用程式,應用程式可以説明提高運營效率、接洽買家、發現新市場商機、加速產品開發的應用程式。 如果需要保證這些應用程式的優秀品質(這也是必要的做法),必須在將其投入生產之前進行透徹的測試。
有效的應用程式測試依賴于資料。 如果資料部分出現問題,您必然會陷入困境。 測試資料中包含的關鍵域的值子集是否過小? 結果會讓企業無法發現資料處理錯誤,最終導致應用程式使用者會遇到這樣的錯誤。 從參照完整性的視角,要測試資料庫表和檔是否存在不一致性? 這可能要求採取一些糾正措施,而必要的資料修復工作會推遲測試的完成時間,可能導致應用程式實現目標日期產生偏差。 測試資料中的無效值會造成與應用程式代碼錯誤有關的誤報,致使大量時間浪費在診斷之中,甚至要「修復」真實生產環境中不存在的資料值引發的並不存在的問題。
我們應該怎樣做?
簡單的方法可能會使您陷入困境
認識到測試資料完整性和品質的重要意義之後,部分組織選擇了表面上看似最簡單的方法:直接將生產資料(而且是全部生產資料)複製到程式開發和測試環境之中。 這種方法能減少與生產環境中代表性過低的測試資料相關的問題(但並不能完全消除此類問題,稍後我會解釋這一點),但也會造成某些重大挑戰。
這能嚴重破壞您的數位隱私違規控制工作。
如果發生您不期待的結果,您的企業名稱就會出現在高度敏感的資料(信用卡資訊、政府識別號、帳戶 ID 或系統密碼)發生洩漏的頭條新聞之中。 這種情況會嚴重損害您的企業在客戶和潛在客戶心目中的聲望,如果敏感性資料落入網路犯罪分子的手中,許多人將面臨財務或其他方面的損失。
充分考慮到這樣的威脅之後,IT 安全人員可能已經採取了多項措施,鎖定生產系統中的資料。 但是,如果將這些資料複製到開發和測試環境之中,擁有包含敏感資料欄位的資料庫表和檔讀取存取許可權的使用者數量更多,那麼情況又會怎樣? 如果使用者數量增加了五倍將會怎樣? 十倍? 一百倍? 這是一個重要的問題,因為資料隱私違規往往是由內部人員的各種行為所導致的,有時是無意的,有時則是故意的。
這可能會造成大筆金錢損失。
在我上一次調查時,沒有任何供應商放棄磁片存儲容量。 過去,如果有人提到「我們的資料庫占 1 TB 的磁碟空間」,您或許為大為震驚,但在測試和開發環境中,同樣的容量(或許兩倍到三倍)也不會引起我們的過度關注。 如今,資料集市可能擁有 1 TB 甚至更多的資料,雲環境必不可少。 您的生產資料庫中樞可能擁有數十 TB 的資料和索引(甚至可能達到數 PB),每個表都可能包含數十億行資料。 從成本角度來看,僅僅為了保證測試資料的完整性和資料值的有效性,在測試和開發系統中佔用如此之多的磁碟空間是否真的合理?
而這樣的磁碟空間僅僅是採用這種「轉儲並許願」方法生成測試資料時需要付出的一部分成本。 在卸載龐大的資料庫時,需要佔用多少生產系統 CPU 時間? 有多少週期用於將所有這些資料推入測試表和檔之中? 在任何一項耗時漫長的大資料載入作業運行時,您的程式師要百無聊賴地等待多長時間? 您是否竭力實施嚴格的 IT 管理,竭力控制成本? 那麼這絕對不是實現目標的理想方法。
這種方法極為不靈活。
在應用程式開發系統中,無法避免的一件事就是資料庫設計更改。 人們並不是為了改變而改變。 其目的在於嘗試進行設計更改,在應用程式性能和可擴展能力方面實現改進。 將一個表拆分為兩個表、為表添加列、更改一列的資料類型,這些都是非常常見的更改,往往也是有所裨益的。
然而,如果填充測試和開發資料庫的方法就是直接卸載和載入,那麼目標資料結構必須與源結構相符。 這意味著什麼呢? 這意味著您必須提供專門的開發和測試資料庫(以及全部磁碟空間),僅用它們來接收從生產環境中卸載的資料。 隨後,您還需要提供另外一個資料庫,以體現開發中的當前設計(可能與生產環境相比,存有一些不同之處)。 將生產副本資料庫中的資料庫載入當前設計的開發資料庫已經成為程式師和開發支援 DBA 的責任,您是否真的希望將技能嫺熟的 IT 專家將時間浪費在這類映射工作之中? 在您嘗試推出新的應用程式時,這會浪費多少時間?
因此,將生產資料庫全盤搬入測試和開發環境會造成資料隱私違規風險升高,存儲和 CPU 容量需求增加,嚴重影響靈活性和敏捷性。 除此之外,該方法應該說是一種出色的方法。
還有更好的方法
測試資料生成的智慧紀元已經到來,IBM InfoSphere Optim 測試資料管理解決方案產品就是這個智慧紀元的代表性產品(為了簡便起見,下文將其簡稱為 Optim TDM)。 Optim TDM 是一種綜合全面的解決方案,可解決不同平臺、DBMS 和檔案系統(包括 DB2 for z/OS、IMS 和 IBM System z 伺服器上的 VSAM)的測試資料生成需求。 針對上文提到的所有測試資料生成挑戰,Optim TDM 為您提供了必要的工具,説明您通過安全、高效、迅速回應的方式完成任務。 其功能包括:
資料保護
Optim TDM 提供了多種機制,使您的生產系統中的敏感性資料能在測試和開發環境中得到保護。 將 Optim TDM 與 InfoSphere Optim 資料遮罩解決方案相結合,您甚至可以獲得更為精密的資料保護選項。
如果欄位 A 和欄位 B 並不是那麼需要保護,但欄位 A 和欄位 B 的「組合」必須加以保護,那麼「隨機排列」將是一種理想的選擇。 舉例來說,對於駭客來說,人員 X 的標識號若與人員 Y 的姓名配對,則這些資料或許並無價值。 或許資料遮罩是合理的方法,如果採取這種做法,Optim 解決方案即可確保生成的值真實可信。 遮罩可通過隨機的方式完成,也可採用保護敏感性資料的同時保留參照完整性關係的方式(有時稱為「可重複遮罩」的一種技術)。
此外,也可以利用查閱資料表和常式,安全地提供姓名、郵件標籤和電子郵件地址的有效值。 您是否希望設計一種自訂資料轉換常式,滿足您的環境中的特有要求? Optim 解決方案也能説明您實現這個目標。
測試資料規模的合理調整
正如前文所述,將龐大的生產資料庫轉儲到測試和開發環境(或許要轉儲到多個此類環境之中)是一種成本高昂的做法。 在此基礎之上,許多開發人員都希望得到更小的測試資料集,有時僅僅需要生產資料的百分之一。 除此之外,程式測試人員希望得到的生產資料量比例與程式開發人員有所不同。
滿足這些需求可能會帶來資料完整性方面的問題。 您要如何生成真正有用的相關資料子集? 換句話說,如果從「父」表 Y 中獲取百分之一的行,我要如何確保從具有參照關係的表中獲取相應的行? Optim TDM 也為您考慮了這方面的問題,不僅考慮到資料庫的參照完整性約束,還能説明您將「正確」的生產資料子集轉到測試和開發系統之中。
或許您需要做的僅僅是抽樣(「在這個表中每隔 n 行獲取一行,在獲取 100 萬行後停止」),也或許您希望關注特定的一組記錄(例如,生活在安大略省的客戶的記錄)。 您或許希望非常精確地選擇需要引入測試或開發環境的生產資料記錄,採用「正確定向」的工作模式(我需要這一行、那一行,還有那行。 )。 無論您希望通過怎樣的方法獲得規模合理、參照一致(並且合理遮罩)的生產資料子集,在測試和開發系統中使用它們,Optim TDM 都可以説明您更輕鬆地完成任務。
接受源資料庫與目標資料庫之間的設計差異
Optim TDM 提供了表映射和列映射功能,提供了處理生產系統和開發系統間資料模型差異所需的必要靈活性。 如果需要展示映射的工作原理,Optim TDM 會負責運行映射。
考慮到所有這些選項、如此之高的靈活性,您或許認為管理 Optim TDM 是一項極為困難或繁瑣的任務,事實並非如此。 該解決方案包含一個測試資料管理自助服務中心。 這種基於瀏覽器的介面可減輕 DBA 的負擔,使測試人員和開發人員更多地參與測試資料生成的相關工作流和流程的定義與執行(例如審批測試資料刷新請求的流程)。 DBA 可利用這種工具來促進資料刷新操作。 自助服務中心還能提高生產力,展示測試和開發資料組建活動的測量方法。
您或許仍然會搖頭否定,或許仍然會這樣認為:「為測試和開發的目的,安全地生成參照完整、一致的生產資料子集,這一切聽上去都非常好,但一切的前提假設都是您瞭解所有這些參照關係究竟是怎樣的,但坦白地說,我們並不瞭解。 」首先,沒有什麼值得垂頭喪氣的,無論是許多網站都採用了基於應用程式的參照完整性,還是跨資料庫邊界存在的資料實體關聯(表 A 中的資料可能與檔 B 中的資料存在參照關係)。 其次,我們同樣為這種問題提供了解決方案。 這種解決方案稱為 InfoSphere Discovery,它將成為 Optim TDM 的出色補充。
InfoSphere Discovery 的用途恰如其名:它會檢查資料存儲(包括資料庫管理系統內外的資料存儲),並報告所發現的明顯資料關係。 有了這樣的資訊之後,您就可以利用 Optim TDM,為測試人員和開發人員提供具備參照完整性和一致性的資料,無需將全部生產資料複製到測試系統之中。 您將能夠合理調整測試資料的規模,同時避免因為生產環境中資料關係的認知盲點而造成的缺口,InfoSphere Discovery 將消除這些盲點。
創新角度
如今的組織成功總是與「更新」和「更快」有關:迅速識別潛在的新客戶、迅速將新產品和服務退向市場、迅速確定哪些因素可通過現有客戶產生新業務。 人們期待 IT 實現這些功能。
考慮一下,IBM InfoSphere Optim 測試資料管理解決方案將如何使測試資料生成成為企業創新引擎的一部分,而非造成工作混亂的因素。