如何使用狀態(tài)虛擬化來誘使產(chǎn)品經(jīng)理專注于重要的事情
對(duì)于最終用戶,他們并不關(guān)心您網(wǎng)站上發(fā)生的后端瘋狂。用戶最關(guān)心的是完成任務(wù),無論他們要完成網(wǎng)頁上的任務(wù)的順序是什么??梢阅M這種行為的虛擬服務(wù)將允許進(jìn)行更早的端到端測試,更好地覆蓋所有業(yè)務(wù)邏輯要求以及向產(chǎn)品經(jīng)理進(jìn)行有效的產(chǎn)品演示。
在我們不那么迷人的沖刺評(píng)論中,一名產(chǎn)品經(jīng)理對(duì)我們團(tuán)隊(duì)的演示感到沮喪,因?yàn)槲覀冎荒軉为?dú)顯示新實(shí)施的功能/服務(wù),而不能顯示端到端的工作流程。這樣做的原因僅是因?yàn)樯形磳?shí)現(xiàn)足夠的功能來跨不同服務(wù)鏈接數(shù)據(jù)。對(duì)于特定的用戶故事,產(chǎn)品經(jīng)理不希望看到難題的各個(gè)部分,而是希望將各個(gè)部分整合在一起:業(yè)務(wù)邏輯。
因此,這是一家制造軟件測試工具的公司,我們使用其中一種工具向我們的產(chǎn)品經(jīng)理提供了他想要的東西。從那時(shí)起,我們?cè)谠S多演示和整個(gè)工作流程中都利用了服務(wù)虛擬化(不知道這是什么?了解有關(guān)服務(wù)虛擬化的更多信息)。服務(wù)虛擬化使我們能夠使用虛擬服務(wù)來表示不可用的服務(wù),這些服務(wù)仍由其他以不同的sprint節(jié)奏工作的團(tuán)隊(duì)在開發(fā)中。它使我們能夠站起來表現(xiàn)出現(xiàn)實(shí)的依賴行為或完全虛構(gòu)的行為的“智能存根”,以滿足我們的需求。通過模擬演示中不可用的部分,我們可以提供產(chǎn)品管理演示,以顯示整個(gè)工作流程以獲取我們所需的反饋,而不會(huì)陷入范圍之外。
使用數(shù)據(jù)存儲(chǔ)庫CRUD工具進(jìn)行服務(wù)虛擬化
虛擬化單個(gè)服務(wù)調(diào)用非常容易,但是確保這些單個(gè)調(diào)用作為整個(gè)系統(tǒng)的一部分進(jìn)行相應(yīng)的操作又是另一回事。當(dāng)其中一些服務(wù)需要在兩次調(diào)用之間維護(hù)持久性數(shù)據(jù)時(shí),該主題會(huì)變得更加有趣。當(dāng)涉及持久性數(shù)據(jù)時(shí),對(duì)于虛擬服務(wù)來說,跨不同狀態(tài)管理數(shù)據(jù)并真正模擬真實(shí)服務(wù)的行為以更準(zhǔn)確地表示應(yīng)用程序背后的業(yè)務(wù)邏輯至關(guān)重要。我們稱此為“狀態(tài)虛擬化”,您可以在我們的博客上閱讀有關(guān)它的全部內(nèi)容,以通過狀態(tài)和狀態(tài)轉(zhuǎn)換測試為服務(wù)虛擬化增添生命。這是數(shù)據(jù)存儲(chǔ)庫CRUD工具出現(xiàn)的地方。
Parasoft Virtualize(我們的服務(wù)虛擬化解決方案)具有一項(xiàng)稱為數(shù)據(jù)存儲(chǔ)庫CRUD工具的功能。創(chuàng)建了數(shù)據(jù)存儲(chǔ)庫CRUD(創(chuàng)建,讀取,更新,刪除)工具來處理通常與需要狀態(tài)轉(zhuǎn)換的Web服務(wù)相關(guān)的數(shù)據(jù)持久性問題。
考慮傳統(tǒng)的購物車體驗(yàn)。假設(shè)購物車系統(tǒng)由3種網(wǎng)絡(luò)服務(wù)組成:庫存服務(wù),購物車服務(wù)和付款服務(wù)。這些服務(wù)中的每一個(gè)都有自己的數(shù)據(jù)集,但是它們的記錄共享一個(gè)元素或?qū)傩裕◣齑鍵D,購物車ID,交易ID),需要遵循這些元素或?qū)傩圆拍苓M(jìn)行下游服務(wù)。除共享元素外,購物車中的物品記錄,它們的數(shù)量以及總的計(jì)算價(jià)格還需要在整個(gè)購物體驗(yàn)中進(jìn)行維護(hù),以完成結(jié)帳過程。
最小的解決方案是虛擬化固定方案,在該方案中,用戶搜索靜態(tài)商品,將商品添加到購物車,最后完成結(jié)帳。但是,我們知道在線購物可能會(huì)更加復(fù)雜。當(dāng)真實(shí)服務(wù)與虛擬服務(wù)交換時(shí),該行為對(duì)于與之交互的所有其他服務(wù)應(yīng)該是無縫且透明的。因此,我們不能認(rèn)為這是唯一針對(duì)虛擬服務(wù)運(yùn)行的方案。
用戶可能會(huì)突然感到不滿或購物疲勞,決定添加其他商品,更新原始商品或?qū)⑵淙縿h除。人類的行為是無法預(yù)測的。數(shù)據(jù)存儲(chǔ)庫CRUD工具允許我們通過動(dòng)態(tài)創(chuàng)建和修改記錄并在用戶操作之間進(jìn)行維護(hù)來模擬這種不可預(yù)測性。這使我們能夠輕松完成在虛擬服務(wù)上引發(fā)的任何事件序列。該工具將輕松處理任何算術(shù)或其他邏輯。
除了我們的sprint演示,今年我有幸協(xié)助了兩個(gè)單獨(dú)的項(xiàng)目,這些項(xiàng)目證明了Data Repository CRUD工具的功能極為寶貴。讓我一窺你。
在性能測試過程中穩(wěn)定動(dòng)態(tài)環(huán)境數(shù)據(jù)
與多個(gè)第三方服務(wù)集成的應(yīng)用程序需要性能測試。開發(fā)團(tuán)隊(duì)已經(jīng)擁有一兩個(gè)靜態(tài)記錄,他們可以用來驗(yàn)證應(yīng)用程序在整個(gè)測試過程中的表現(xiàn)是否符合預(yù)期。但是,為了使性能測試有效,在測試中執(zhí)行的數(shù)據(jù)和操作將需要具有高可變性的隨機(jī)數(shù)據(jù),以正確模擬實(shí)際場景。各個(gè)數(shù)據(jù)集(包括第三方服務(wù))之間的狀態(tài)需要保持一致。對(duì)于開發(fā)團(tuán)隊(duì)來說,將新的數(shù)據(jù)庫記錄注入到每個(gè)依賴的第三方服務(wù)中就已經(jīng)足夠簡單了,但是不幸的是,訪問沙箱環(huán)境的成本很高,并且有很多潛在的麻煩。
該團(tuán)隊(duì)能夠使用服務(wù)虛擬化和數(shù)據(jù)存儲(chǔ)庫CRUD工具成功實(shí)施其性能測試。在運(yùn)行時(shí)虛擬化服務(wù)中不存在的任何記錄都將由該工具以“全部捕獲”配置以其初始狀態(tài)創(chuàng)建。然后,虛擬服務(wù)將使用新創(chuàng)建的記錄來成功響應(yīng)該請(qǐng)求,并在測試的整個(gè)生命周期內(nèi)對(duì)其進(jìn)行修改。該設(shè)置令人驚訝地輕松,并為性能測試工具生成的每個(gè)唯一用戶保證了真實(shí)可靠的端到端流程。
將實(shí)時(shí)數(shù)據(jù)注入被測系統(tǒng)
第二種情況不尋常,但是虛擬化當(dāng)然很有趣。該案涉及測試與國有車輛登記系統(tǒng)配合使用的應(yīng)用程序。每當(dāng)將新的VIN(車輛識(shí)別號(hào))添加到應(yīng)用程序時(shí),它都會(huì)向注冊(cè)系統(tǒng)發(fā)送異步調(diào)用,以請(qǐng)求車輛的完整信息。如果系統(tǒng)中不存在該VIN,它將以未注冊(cè)的形式返回。不幸的是,注冊(cè)系統(tǒng)有一項(xiàng)強(qiáng)制性政策,要求一個(gè)人(是的,活著的,呼吸的人)手動(dòng)插入新的車輛信息。如果在一定數(shù)量的請(qǐng)求后未注冊(cè)所請(qǐng)求VIN的信息,系統(tǒng)將做出不同的響應(yīng)。
對(duì)于異步服務(wù),此一般行為是常見的。從本質(zhì)上講,這相當(dāng)于一個(gè)孩子問“我們到了嗎?”在旅途中——除非他們真的很近,否則通常會(huì)忽略一個(gè)問題。
一旦該人手動(dòng)注冊(cè)了信息,系統(tǒng)將以確認(rèn)有效載荷進(jìn)行響應(yīng)。這里的目標(biāo)是模擬車輛注冊(cè)系統(tǒng),以獨(dú)立測試應(yīng)用程序。面臨的挑戰(zhàn)是確定如何配置虛擬服務(wù)以在不同時(shí)間對(duì)相同請(qǐng)求做出不同響應(yīng)。為實(shí)現(xiàn)此目的,我們使用了數(shù)據(jù)存儲(chǔ)庫CRUD工具來統(tǒng)計(jì)同一請(qǐng)求的調(diào)用次數(shù)。在達(dá)到特定計(jì)數(shù)值之后,CRUD工具將更新記錄狀態(tài),以使虛擬資產(chǎn)做出不同的響應(yīng)。 CRUD工具還配置為在預(yù)期的時(shí)間窗口內(nèi)隨機(jī)為任何請(qǐng)求的VIN創(chuàng)建新記錄,以模擬手動(dòng)注冊(cè)過程。最初看起來很困難的事情可以通過正確的工具輕松完成。
總結(jié)
事實(shí)是,當(dāng)涉及到最終用戶或產(chǎn)品經(jīng)理時(shí),在簡單的網(wǎng)頁操作期間發(fā)生的后端瘋狂是可以忽略的。用戶最主要的擔(dān)心是,無論他們要在網(wǎng)頁上完成什么工作,無論到達(dá)那一步需要采取什么步驟,都將成功完成??梢阅M此行為的虛擬服務(wù)將允許進(jìn)行更早的端到端測試,改善對(duì)所有業(yè)務(wù)邏輯要求的覆蓋范圍以及有效的產(chǎn)品演示。通過對(duì)Parasoft Virtualize CRUD工具用戶界面和配置設(shè)計(jì)的最新增強(qiáng),現(xiàn)在可以更輕松地處理復(fù)雜的場景并盡早提供涉眾,產(chǎn)品經(jīng)理和測試人員想要的真實(shí)功能。