對比測試工具平臺讓財務測試飛起來

唯技術訂閱號發表於2018-12-14

背景

唯品會財務核心系統主要是對訂單、支付及庫存等記錄大資料的批處理。其中對供應商的賬單,是經過一系列處理步驟如:抽數、預處理、貨款計算、優惠分攤計算、重算等一系列有序後臺批處理才生成。為了適應複雜的公司業務,該系統設計較為靈活,配置較多,尤其是貨款計算邏輯覆蓋各種業務模式的耦合性強,可測試性較差。

每當公司接入一個新業務模式,相應的賬單計算邏輯常需做相應修改。如何保證每次變更後不影響公司已有業務模式的賬單計算的準確性與可靠性,對於測試來說是一個非常大的任務與挑戰。常規的所有業務迴歸測試方法所需時間較多(新增功能只需2人天測試,迴歸測試所需時間有時要超7人天,開發常評估說覆蓋所有業務)且難保證覆蓋全面。

內部質控團隊針對這些應用特點 ,開發了一個對比測試工具平臺,使用之後效果(測試效率與測試質量提升)顯著,迴歸測試縮短至1天內,且賬單計算邏輯修改後基本無錯。考慮到其通用性,現分享出來供大家參考借鑑。

平臺原理

對比測試平臺是一個既能使用線上真實業務資料匯入用於自動迴歸測試,又能自建業務場景資料功能測試的平臺。該平臺與應用程式碼及部署環境不相關,只與測試業務資料相關。目前僅支援mysql資料庫及vms訊息應用驅動。它的原理圖如下:

對比測試工具平臺讓財務測試飛起來

   對比測試工具平臺原理圖

如果業務規則不變,包含各種業務場景的生產資料,在我們待測app最佳化變更前後,它們的輸出資料Result1與Result2應該完全相同,我們即可以直接輸出預期結果資料至baseline庫中,也可以根據實際情況分別將變更前後的app執行輸出結果儲存或更新至baseline庫中,作為我們基線結果,用於每次迴歸測試的基線結果比對。

應用場景

本對比測試工具平臺,適用於具有以下特徵的後臺job任務。一類是訊息任務,主要是消費其他系統流過來的訊息,經過處理寫入庫表;一類是資料處理任務,直接從多個庫表資料加工處理成其它庫表的資料;一類是結合訊息和資料處理的任務,消費訊息並結合自身庫表的資料處理,寫入庫表。例如:

重構迴歸:系統重構時,複製真實線上相應庫表中的資料到被測試環境進行迴歸,相當於在不影響業務的情況下提前上線檢測系統潛在的問題。最大優點是,覆蓋了生產上各種業務場景的資料。對於這種端到端的後臺應用場景尤其高效可靠,做到了一鍵迴歸。

功能測試:該平臺還可以用於功能測試,測試同學只需根據job的業務場景,提前準備好所有的業務場景資料及預期結果資料,待測試job部署在測試環境後,同樣,在平臺上一鍵操作便會執行測試場景資料初始化、啟動應用、停應用及測試結果收集與比對,從而,達到效率的提升。

工作流程

我們在編寫測試用例時,輸入與對應的預期輸出是功能測試用例的重要組成部分。存在著一類應用,如果輸入(包括應用起動初始化條件)與預期結果都是直接儲存在相應的庫表中,那麼只要功能點不發生變化,相同的初始化輸入資料,那麼經過應用job的處理後,一定會得出一致的輸出結果(如財務的確定時間段內供應商的賬單資料,不論應用job如何最佳化,只要計算規則不變,最佳化前後的賬單計算結果應是相同)。

透過基礎資訊管理模組來採集待測job的部署、執行及依賴的庫表資料資訊。然後藉助模板管理模組來接收功能場景對應的輸入與預期輸出結果資料,並將它們儲存在平臺庫表中;接著在場景管理模組把應用job及場景對應的輸入與輸出資料關聯起來,預期結果儲存在場景基線結果庫表中,當使用者觸發對應場景執行時,後臺測試場景排程程式便會依次執行場景初始化資料,然後啟動執行對應待測job,待排程執行程式獲知本次job執行完成後,收集本次場景執行庫表的結果資料並與對應基線結果進行比對(如下圖所示)。

對比測試工具平臺讓財務測試飛起來

對比測試工具平臺工作流程圖

 整體架構

對比測試工具平臺讓財務測試飛起來

對比測試工具平臺整體架構圖

對比測試工具平臺的整體實現架構如下:

●基礎資料模組負責管理使用者應用部署的環境資訊、應用啟動指令碼及應用所對應的資料庫例項資訊。

●模板管理目前已具備資料模板與訊息模板功能。

1、其中的訊息模板已支援往VMS訊息佇列觸發訊息,然後應用程式來消費訊息。

2、資料模板分為場景輸入造數模板與場景預期結果模板。分別對應場景的 輸入資料與預期輸出結果資料。為了能更好支援測試同學同時利用一個環境下進行迴歸測試與其它功能測試,避免測試資料的相互影響,造數模板中增加了場景執行時資料備份與是否清除庫表資料的功能,結果模板提供了排除欄位及選擇比對結果集的功能。

●場景管理模組主要負責場景執行的輸入及預期輸出結果及啟動應用的資訊結合在一起,並儲存在平臺的場景庫表中,確保每一個場景由排程程式執行時,能正確地初始化資料,啟動應用及執行結果比對。

●測試計劃管理模組主要作用整合多個測試場景組成一個測試集,不僅可以減少手工一個一個地觸發測試場景執行,而且可以非常方便實現端到端的迴歸測試。另外,也可以在執行時,選擇想執行的部分測試場景,提高了迴歸測試靈活性。

●排程執行管理模組負責所有測試計劃或測試場景的執行排程,一旦使用者觸發測試場景或測試計劃執行按紐後,待執行任務列表就會插入一條待執行任務記錄,後臺排程模組一直輪詢該任務列表,獲取該記錄後,然後依次執行該記錄對應場景的資料初始化或傳送訊息,然後啟動待測應用,獲取執行結束狀態,收集測試結果並執行測試結果比對。其間,也提供了資料初始化與啟動應用之間的等待時長,充分保證資料初始化完成。

●報表管理主要是用來進行場景與測試計劃執行與維護情況。

實踐效果

到目前為止,財務團隊核心業務模組,VSP(供應商結算平臺)、AR(應收)及VCP(供應商清賬平臺)已全部使用該工具進行功能測試與迴歸測試。尤其是VSP 賬單計算的場景編寫已基本上覆蓋全面,賬單計算測試的質量與效率已明顯提升,VCP目前已能達到開發提測後,最多2個工作日內便可上線,正打算推進開發承擔部分功能測試的方向推進。

工具優勢

該對比工具可以達到以下的優勢:

●線上版本功能一鍵迴歸

該工具可以將生產上的1至2個月的資料,匯入到測試環境,然後啟動執行我們的處理應用程式,生成對應的預期結果。下次版本最佳化重構後,只需一鍵觸發即可驗證本次最佳化重構後,線上版本功能是否正確。這種執行方式的好處是,線上資料覆蓋所有業務場景,極大的節省測試效率。

●未增加測試同學的學習成本

測試同學不需任何編碼,同以往工作方式一樣,根據需求文件,設計功能測試場景並編寫相應場景的測試造數,讓測試同學把主要精力聚焦於最重要的事情上面。

●維護成本低

只有在相關功能場景涉及到的庫表欄位發生變更後,才需要進行維護。維護的成本只需把造數模板的檔案下載後,修改變更欄位的值,然後上傳即可。結果模板不用修改,只需重新執行場景,且只需檢查執行結果是否正確,如果正確,只需一鍵操作將本次執行的結果儲存為基線結果即可。

●測試前置

開發在編寫程式碼時,測試同學同步編寫場景模板資料,不用關注內部的實現邏輯,只需關注處理的邏輯結果,做到真正測試前置。

●測試效率提升

使用對比測試平臺工具編寫用例的同時,相當於同步編寫好了迴歸用例,二項工作合二為一;另外,開發修改缺陷後,只需一健操作,便可自動執行迴歸測試,只需在平臺上檢視結果。

●開發參與執行功能測試

測試同學一直期望開發同學做好自測後才提交給測試,但對很多團隊來說,這似乎是個夢想。很多時候不是開發不願意做自測,主要是因為開發自測環境維護成本過高,開發同學不願意維護;另外還有一個原因是面對複雜業務的場景,測試造數非常困難。結合財務團隊的應用特點,藉助於這個對比測試平臺,開發進行功能測試成為了可能。

測試在開發提測前,已在平臺上準備好了相關測試計劃(包括本次提交的各個功能場景),開發在paas流水線上觸發打包與部署上,然後在對比平臺的場景上,直接點選場景執行,開發便可以觸發功能測試執行,並從對比平臺上直接檢視測試結果,如果出現未透過的場景,可以在平臺上直接檢視結果資料與檢視應用執行日誌。開發自己定位錯誤,然後修改程式碼,走流水線部署。

版本增強

下一步功能增強規劃,支援更多的資料庫型別,當前只支援 mysql資料庫,接下來需要支援hive資料庫及oracle資料庫。另外,可以考慮支援對介面自動化測試,以及庫表欄位變更後的提醒,與一鍵更新我們的造數模板,進一步降低維護成本。最後可以考慮支援不同版本相同輸入資料,各版本輸出結果資料的對比等。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900365/viewspace-2285314/,如需轉載,請註明出處,否則將追究法律責任。

相關文章