原創|行業資訊|編輯:鄭恭琳|2021-02-01 13:59:21.617|閱讀 206 次
概述:軟件開發人員和測試人員每天面臨的主要挑戰之一是無法獲取真實數據。很多時候,作為開發人員,您正在與下游服務進行交互,并且必須使用該環境中可用的任何數據,因為獲取針對您的方案的實際可用數據的過程非常耗時。通常,您找不到所需的數據,并且必須從生產中獲取數據,這帶來了一系列新的挑戰。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
軟件開發人員和測試人員每天面臨的主要挑戰之一是無法獲取真實數據。很多時候,作為開發人員,您正在與下游服務進行交互,并且必須使用該環境中可用的任何數據,因為獲取針對您的方案的實際可用數據的過程非常耗時。通常,您找不到所需的數據,并且必須從生產中獲取數據,這帶來了一系列新的挑戰。
更復雜的是,不能從生產中使用個人數據,因為這會增加組織被盜,丟失或暴露的風險。以雅虎最近的一次泄密事件為例,那里有5億個電子郵件帳戶被泄密,或者約680億的LinkedIn用戶最近遭到數據泄露。這些漏洞發生在安全性很高的生產級別。開發區域中使用的生產數據并不少見,安全性往往較低。以這種方式進行運營會對組織的品牌聲譽造成重大風險。因此,必須清除或屏蔽敏感數據,這是一個耗時的過程,需要數據專家。
無論如何,數據是一個成本問題,因為它會使您減速。通過使用服務虛擬化,您不僅可以控制從屬應用程序的行為和功能以穩定測試環境,而且還可以完全控制那些從屬應用程序的數據源并提供當天需要的任何數據。此時,規則發生了變化,因為您現在不僅可以控制數據,還可以控制邏輯。您可以創建符合您希望的行為的服務,而不是嚴格遵循其正常行為模式。
在先前的博客中,我討論了具有相同基本原理的缺陷虛擬化。但是我們在這里談論的是服務邏輯。該博客將邁出下一步,并討論數據控制。首先,讓我們集中討論測試人員和開發人員每天面臨的當前數據挑戰。
在應用程序開發過程的開始,測試所需的數據通常很簡單,因為該服務的全部功能尚未實現。隨著開發繼續增加功能,測試成熟度增加,數據復雜性也增加。
例如,讓我們使用我以前的博客文章中的示例-假設我是一家航空公司,正在開發機票頁面上的功能。我需要驗證用戶是否可以獲取他們的航班機票,并且取決于未來航班的飛行距離,用戶將獲得以下幾種響應之一,隨著時間的推移,響應會改變。在開發過程的開始,我可以簡單地在未來3個月的飛行中生成一堆復雜的數據,這將使我能夠進行目前需要的所有測試。但是當然問題是我只是在定時炸彈上點燃了保險絲。在三個月內,這些漂亮的數據將過期,而我可能已經忘記了它。突然我的所有測試都會在錯誤的時間開始失敗,因為發布的版本即將發布,而我根本沒有時間重新生成數據……聽起來很熟悉嗎?
通過在開發過程的早期引入服務虛擬化,您可以為提供解決這些數據挑戰的解決方案奠定基礎。虛擬服務的數據可以從多個位置獲取,但是從一開始,簡單的虛擬服務就從固定數據開始。您創建這些“固定資產”或模擬來解決假設情景測試階段并使事情變得非常簡單。這里的想法是,“我只需要一個可以響應此特定有效負載的服務。”
隨著虛擬服務的成熟,有必要將數據與服務分離,這樣,如果您想在仿真中添加邏輯,則實際上不必打開虛擬服務即可操作數據。實際上,成熟的用戶以某種方式創建虛擬服務,即數據源可以處理大部分邏輯。然后,他們可以將數據源交給測試人員或測試數據管理團隊,以插入此服務將來可能需要的任何數據。向服務添加新功能就像向數據源添加一行一樣簡單。這樣可以共享虛擬化工作,并且一個虛擬服務可以容納多個團隊。虛擬服務成為可以根據需要增長和變化的生物。
一旦開發創建了最初的簡單服務,測試團隊就該接手了。測試團隊將有更復雜的數據要求。這些數據從哪里來?通常,您從記錄和回放中獲取此數據。這通常是創建虛擬服務時的第一步。您記錄應用程序和從屬后端系統之間的事務,并使用此記錄來創建虛擬服務。這使您可以創建一個非常有用的基準數據源,可以在需要時進行擴展。在我的航空公司示例中,這將使我們能夠獲得現實的航班號和目的地。數據將具有所有必要的復雜性,包括多航段和國際航班。數據源關聯處理所有復雜的請求/響應關系,并且由于對“真實”數據的后續更改可以簡單地重新記錄并合并到現有的虛擬服務中,因此獲取新數據變得無關緊要。
我們記錄的數據不是來自生產環境,這可以防止我們在較低環境中遭受數據泄露。此類數據面臨的挑戰是,由于它不是來自生產環境,因此它不是完整的或最新的。在這里,數據生成和操作成為服務虛擬化的強大功能。
不存在的數據可以用簡單的生成數據進行補充,以完全滿足我們的需求。在我的航空公司示例中,響應中的航班日期始終可以是今天的日期,但要偏移3個月。通過使用數據生成,此任務變得微不足道。
通過提供動態數據來管理任何“未定義的”請求/響應關系,我們可以繼續處理和操縱數據。這些是靜態數據集中永遠不會存在的關系類型。在航空公司示例中,假設向下游組件發出請求時,它會提供用戶的當前位置,并將其用作響應中的出發點。由于我們的測試用例會不斷變化,因此真正的服務必須維護所有當前位置,以便可以在響應中提供它們。通過使用虛擬服務,您不需要維護所有位置,只需將用戶的當前位置動態返回為出發城市即可。
最后,可以以靜態方式提供否定數據,也可以將其插入數據源以簡化否定或異常測試。例如,在我的航空公司示例中,這將是插入隨機取消或延誤的航班,以驗證用戶在離開機場之前已收到通知。
在下面的視頻中,我描述了開發人員在處理數據時面臨的一些典型挑戰,并向您展示了如何以我認為是服務虛擬化的一些非常酷的方式克服這些挑戰。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn