元數據的一致性測試解決方案與設計策略

元數據是什麼

在大數據治理、應用的背景下,數據即資產,簡單的說元數據實現了對數據資產的統一的標準化管理。它實現了數據、結構、關係的數據血緣可視化。為數據治理與數據應用提供了統一標準和支撐。同時,元數據管理不當,信息錯亂丟失,會影響甚至破壞產品整體價值,進而使用戶失去產品信心,因此元數據測試顯得尤為重要。

元數據一致性測試場景有哪些

場景1:元數據遷移

在數據遷移中,一般包含數據(表)、結構(字段)、關係(表與表、表與字段、字段與字段)的一致性驗證,以及確保數據的完整性和唯一性,如果遷移過程可能涉及某些數據的變更,那麼還需驗證變更的準確性。

場景2:元數據版本變更

在元數據元數據版本變更中,一般包含新增或變更數據(表)、結構(字段)、關係(表與表、表與字段、字段與字段)。

場景3:元數據的迴歸測試

在元數據測試過程中,經常涉及到元數據迴歸測試,那麼需要考慮如何驗證修復某些問題的同時是否引入其他的問題。

元數據一致性測試策略

元數據一致性測試可以簡單理解為期望數據與實際數據的一致性校驗,其中驗證內容包含

數據(表)、結構(字段)、關係(表與表、表與字段、字段與字段)三個方面。

我們將期望、實際元數據抽象為期望態元數據、實際態元數據,同時期望態元數據又包含設計態、歷史態,如下圖。

元數據的一致性測試解決方案與設計策略

由圖可見,元數據的一致性校驗主要是將設計文檔(新增或變動時,需依據設計文檔)或測試通過的歷史版本作為期望結果與待測版本進行校驗。

具體不同場景的校驗流程如下:

元數據的一致性測試解決方案與設計策略

核心步驟為動態Sql的生成,如何保證動態Sql生成的準確性是整體設計的難點,解決思路如下:

假如在元數據版本變更場景下,設計態數據存儲在Execl中如下,表名為Student_info,數據如下。

元數據的一致性測試解決方案與設計策略

如何根據設計態元數據生成動態Sql:

1.讀取Execl;

2.拼接Sql,拼接原則為"唯一性拼接",即保證執行結果條數為1,比如我們知道數據庫中不應存在完全重複的數據,則可以將字段值拼接值WHERE語句後面,來不斷通過添加where過濾實現數據sql執行結果條數為1,例如,拼接為

Select count(*) From Student_info Where name='Tom' and age='12' and sex='1' and class='203'

Python開發設計

作為數據一致性校驗的統一測試框架,僅滿足上面提到的簡單需求還是不夠的,因此我們還考慮以下幾點:

  1. 複雜的數據映射,如,對不同表不同字段的映射關係的一致性校驗,比如A庫的table1表與B庫的table2表存在數據的一致性關係,進一步table1表的name字段與table2表的person_name字段是存在映射關係的。
  2. 數據的特殊處理,如滿足映射條件的同時,還需要考慮是否存在一些特殊處理,比如table1表name字段+編號才能與table2表的person_name字段一致;
  3. 多表的數據關聯,如需要構建多表關聯查詢才能夠保證數據的一致性。

基於這種思路,開發了X-R數據測試框架(暫未開源),大體框架設計如下:

  1. 測試用例與代碼分離,採用Yaml文件的形式描述測試場景,便利的用例組織形式,同時有效的避免重複開發。
  2. 支持自由擴展插件,滿足不同場景的定製化需求
  3. 支持數據驅動
  4. 支持Skip、優先級、快速回歸等運行機制
  5. 支持Execl、Mysql、Oralce等數據媒介

YAML用例組織結構

元數據的一致性測試解決方案與設計策略

公共配置部分

元數據的一致性測試解決方案與設計策略


分享到:


相關文章: