持續(xù)測試的障礙(三):如何克服測試環(huán)境不可用,受系統(tǒng)依賴性的限制的問題
持續(xù)測試是一個過程,使團隊能夠在軟件開發(fā)中建立質(zhì)量,并加速交付高質(zhì)量的客戶體驗。通過持續(xù)測試,團隊使用自動化測試獲得關于代碼健康的即時反饋。
持續(xù)測試使企業(yè)能夠評估商業(yè)風險。最近的行業(yè)調(diào)查顯示,用于跟蹤項目進展和成功的首要指標:
- 高測試覆蓋率
- 增加缺陷修復
- 減少了生產(chǎn)中的缺陷
- 在開發(fā)過程中建立質(zhì)量
如何實現(xiàn)速度和質(zhì)量的結(jié)合?答案是:持續(xù)測試。但它確實有其挑戰(zhàn)。本文就說說第三個挑戰(zhàn)或者說障礙——測試環(huán)境不可用,不可控,受系統(tǒng)依賴性的限制。
障礙三:測試環(huán)境不可用,不可控,受系統(tǒng)依賴性的限制
測試環(huán)境是阻止組織將自動化測試轉(zhuǎn)化為持續(xù)測試的障礙的關鍵所在。在試圖使測試隨時隨地運行時,組織面臨三種類型的挑戰(zhàn),并處理應用程序的外部依賴性。這對于微服務架構來說尤其如此。由于設計的本質(zhì),依賴關系的數(shù)量爆炸性地增長。
測試環(huán)境的挑戰(zhàn)
測試環(huán)境是阻止組織將自動化測試轉(zhuǎn)化為持續(xù)測試的障礙的關鍵所在。在試圖使測試隨時隨地運行時,組織面臨三種類型的挑戰(zhàn),并處理應用程序的外部依賴性。這對于微服務架構來說尤其如此。由于設計的本質(zhì),依賴關系的數(shù)量爆炸性地增長。
等待訪問共享系統(tǒng),如主機或由第三方提供的外部依賴。可用性可能是有時間限制和成本的。這也是一個挑戰(zhàn),如果外部的依賴性有很多人在同時工作,導致數(shù)據(jù)碰撞造成的測試不穩(wěn)定。
延遲訪問造成的瓶頸。這是由于并行開發(fā)的性質(zhì)和現(xiàn)代流程的典型。例如,多個團隊合作向價值流交付新功能,如相互依賴的微服務。測試不能在一個微服務上進行,因為另一個微服務還沒有可用。
不可控的測試數(shù)據(jù)。雖然微服務相對容易部署和隔離測試,但它們對數(shù)據(jù)或性能特性的依賴性限制了它們被徹底測試的能力。例如,對共享生產(chǎn)數(shù)據(jù)庫中的數(shù)據(jù)的依賴會限制測試服務的能力。
如何消除障礙,控制測試環(huán)境
開始模擬這些依賴關系,使用服務虛擬化解決方案讓團隊完全控制。Parasoft Virtualize模擬那些不受你控制或不可用的服務。它提供的工作流程可以:
- 使用戶能夠訪問完整和真實的測試環(huán)境。
- 穩(wěn)定測試環(huán)境。
- 獲得其他無法訪問的依賴性。
- 管理復雜的業(yè)務邏輯、測試數(shù)據(jù)和性能特征,這些都是虛擬服務在它們所代表的真實環(huán)境中表現(xiàn)得與真實服務一樣的要求。
服務虛擬化消除了瓶頸,下面是方法:
記錄和模擬:捕獲、建模和提供實時系統(tǒng)的模擬。
使用Parasoft SOAtest的記錄能力,就有可能在其環(huán)境中捕獲應用程序的行為。Parasoft Virtualize對外部依賴關系的行為進行建模,使得刪除和模擬依賴關系的行為成為可能,動態(tài)地在運行中切換出真實與虛擬。使這些服務和依賴關系在虛擬中可用和穩(wěn)定,加速了測試過程并實現(xiàn)了連續(xù)測試。
交付一個原型:基于合同描述或有效載荷例子的行為模型。
服務虛擬化使原型開發(fā)基于從SOAtest中的API交互記錄和分析得出的契約描述。
在測試另一個相鄰的服務時,可以以良好的保真度模擬依賴性服務,以創(chuàng)建滿足其在系統(tǒng)中作用的原型版本。這消除了并行開發(fā)中固有的進度限制--即使服務沒有完成,它們也可以被虛擬化,用于測試其他服務。
合成私人測試數(shù)據(jù)
測試企業(yè)應用程序的另一個障礙是測試數(shù)據(jù)。許多組織使用真實數(shù)據(jù),但這充滿了隱私問題。純粹的合成數(shù)據(jù)往往不夠真實,所以需要一個折中的方法來測試。通過去除個人可識別信息(PII)來合成真實數(shù)據(jù),可以提供現(xiàn)實的和安全使用的數(shù)據(jù)。測試數(shù)據(jù)管理需要與服務虛擬化結(jié)合起來,以提供一個現(xiàn)實的、高度可用的測試環(huán)境,不會導致任何隱私的損害。