?

一種基于數據工廠和CDC的測試數據聚合分析及還原的方法和系統

2021-03-25 10:48王語杰歐陽鵬辛存生沈桐喬子真
新型工業化 2021年12期
關鍵詞:測試人員測試數據數據表

王語杰,歐陽鵬,辛存生,沈桐,喬子真

(1.國網匯通金財(北京)信息科技有限公司,北京 100053;2.國網電子商務有限公司,北京 100053)

0 引言

相比于傳統的測試方法,數據工廠在幫助測試人員提升測試效率上已經有了很大的進步,因此數據工廠及其相關技術和業務在過去幾年得以推廣,并且已經開始應用于各種實際的測試場景中,如大批量數據多表關聯的測試場景、高并發的壓力測試場景等,已經成為測試開發人員最關注的測試工具之一[1]。

但是由于數據工廠這個解決方案本身還處在發展階段,所以在設計上依然存在許多可以優化的方向。傳統的數據工廠僅負責生成數據,在測試過程中需要測試人員手工查看哪些數據發生了哪些變化,是否符合預期;如果測試過程中發現問題則需要手動還原數據,而對于批服務測試和壓力測試,測試人員有時希望能夠快速地把測試數據重置為初始狀態。因此,本發明旨在在數據工廠的基礎上解決如下兩個問題:一是對于測試中測試數據及其關聯數據的狀態變動的監控和顯示;二是當測試結果并不符合預期或者測試場景需要時,將測試數據及其關聯數據恢復成初始狀態。

1 行業現狀

目前已經投入給測試人員使用的數據工廠大體分為兩大類型,一種是主要提供自動生成測試數據的方法,其能夠根據實際場景的需要,向數據庫大批量地寫入測試數據,從而幫助測試人員提高數據的生成效率和質量[2]。另一種則將測試中需要用到的數據以數據模板的形式統一管理,在自動化測試系統中,實現測試數據的記錄,保存,復用等功能,也可以整體性地提高測試的效率以及自動化系統的代碼復用率[3]。

然而現存的方法都僅關注測試數據的生成和復用,在實際應用中對于測試人員來說存在大量的問題:

一是因為傳統的數據工廠僅負責批量生成符合測試要求的數據[4],但是對于測試過程中后續的流程沒有任何參與,測試人員往往需要手工對測試數據進行一一校驗,而這個過程往往十分耗時耗力,占用大量測試資源。

二是傳統的測試人員人工校驗測試數據變動情況時,一般只能獲取測試完成后的數據終態,對測試過程中的數據變化,無法有效的捕獲和分析。

三是由于難以保證開發人員的代碼是正確的,如果測試過程中發生錯誤需要重新進行測試,而測試數據已經產生了一定程度的變化,會影響到后續的測試進程,導致測試人員需要手工刪除批量插入的數據及其流轉過程中產生的新數據,占用大量的測試時間并且容易出現錯刪漏刪的現象。

2 解決方案

本文提出的方案按功能劃分由以下六個模塊組成:

(1)抽數提取模塊。抽數提取模塊用于將數據庫表變動的信息明細提供給聚合分析模塊使用。其原理是利用CDC抽數獲得數據變化的日志信息,依據日志中的數據變化明細生成操作表、操作類型、操作前后狀態等信息,然后發送至消息隊列中間件。

(2)數據工廠模塊。數據工廠負責創建單條或批量生成數據的任務,并將數據生成任務與數據生成的結果關聯起來,便于后續針對單個數據生成任務進行監控和聚合分析。

(3)監控配置模塊。針對某個數據生成任務中生成的某些數據,即需要關注的測試數據,可以設定特定的監控和聚合分析配置規則,如監控流水表中支付狀態字段的插入和更新情況,隨后便可以以表名、監控字段和操作類型為標記進行聚合統計分析。此模塊生成的配置規則,會傳遞到聚合分析模塊后生效。

(4)聚合分析模塊。如圖1所示當聚合分析模塊從消息隊列中間件獲取數據后,會根據監控配置模塊配置的規則,篩選過濾特定表、特定操作類型及關注字段的變動信息,進行數據歸類匯總并進行數量和比例的統計,從業務角度統計出測試過程中數據表中數據的變動。

圖1 數據流轉關系圖

(5)數據恢復模塊。數據恢復模塊可以依據數據流轉關系,即測試流程中數據的傳遞和變化涉及的,自動在數據批量生成開始前生成備份表,支持數據恢復和備份表自動刪除等功能。

(6)交互展示模塊。交互展示模塊可以配置需要監控的數據表、操作類型、關注字段等配置,同時會將數據表變動的結果直觀地展示出來。

整個系統執行的流程步驟如圖2所示:

圖2 系統流程圖

步驟1:測試人員在測試平臺中的數據工廠模塊配置需要批量添加的數據,并添加數據流轉相關的表,點擊生成后自動對相關表進行備份,隨后開始批量生成數據,生成數據結束后配置要監控的數據表、操作類型、關注字段等信息并點擊開始監控。

步驟2:測試平臺在收到開始監控的命令后會開始獲取消息隊列中間件中當前時間之后的數據變動信息,并根據配置的聚合分析規則開始實時聚合分析。

步驟3:當測試過程結束后,測試人員點擊監控結束,平臺接收到請求后終止接收消息隊列中間件數據,并將期間收集到的信息,依據數據表、操作類型、關注字段等配置將數據歸類匯總,生成測試過程中數據流轉的整體結果,并展示在前端頁面。

步驟4:測試人員依據前端展示的數據流轉結果對測試結果進行判斷,如果認為結果存在問題,則可以點擊數據恢復,平臺收到請求后會清空關聯的所有數據庫表,并將備份表中數據復制進原表中;如果認為測試結果不存在問題,則在一段時間后,自動刪除該備份表。

要實現數據庫表數據監控還可以通過觸發器實現,而CDC抽數相對觸發器的方式有以下優點:

(1)通過CDC抽數的方式更加容易實現[5-6],只需要配置CDC即可將數據發送至消息隊列中間件,而觸發器需要針對表和字段進行配置,需要表級、字段級去手動維護,需要使用JMS監聽Oracle AQ才可以實現相同的效果。

(2)成本更低。如圖3所示,CDC本身就可以將數據轉化為容易處理的json格式,而觸發器一般需要提供一個轉換工廠類將Oracle類型轉換為Java類型才可以進行處理。

圖3 數據格式圖

(3)占用資源更少。觸發器的使用需要占用額外的數據庫及系統資源,而CDC僅捕獲數據變化的日志信息,可以一定程度上降低系統資源的消耗。

3 結語

本文提出的方案將數據工廠和CDC抽數相結合,先通過CDC抽數將數據庫數據的變化提取出來,然后通過聚合分析將符合條件的數據進行匯總展示,可以方便地查看測試結果,定位錯誤點,方便代碼優化和問題排查。同時對數據變動的實時收集和實時分析,使得測試人員能夠在關注數據終態之外同時關注測試數據的變動過程,擴大測試的有效范圍;同時在生成數據時自動對涉及的關聯表進行備份,幫助測試人員對數據進行還原,更加方便可靠地將測試數據初始化。

猜你喜歡
測試人員測試數據數據表
移動應用眾包測試人員信譽度復合計算模型研究
湖北省新冠肺炎疫情數據表
測試數據管理系統設計與實現
基于列控工程數據表建立線路拓撲關系的研究
高校分析測試中心測試隊伍建設方案初探
淺析軟件測試中的心理學應用
基于自適應粒子群優化算法的測試數據擴增方法
空間co-location挖掘模式在學生體能測試數據中的應用
圖表
基于VSL的動態數據表應用研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合