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