背景問題及解決方案問題
一個系統中所有模塊的輸入數據結構一致,都是明文的行數據,行數據之間邏輯、列數據之間邏輯通過數據本身很難看出,導致構造的數據可復用成本高,對大數據的可復用成本幾乎為0,而每個數據對應的測試點更是難以一一對應
解決方案
數據之間的邏輯關系通過規則文件描述,然后用開源DGL工具將規則文件變成實際的輸入、輸出數據,解決了數據邏輯不易讀的問題,同時解決了數據與測試點難一一對應的問題,將規則文件抽取公共lib庫,只關注模塊處理的域,大大降低DGL復用的成本,也增加了規則文件的易讀性,解決了手工構造數據后續難復用的問題
DGL功能與原理
主要功能
1. 通過定義模板,生成所需要數據量的數據。
2.dgl構造數據優勢:
a) 準確:只要模板定義正確,就不用擔心生成數據的正確性
b) 可復用:通過保存定義好的模板,可以為以后的case再構造數據的時候節省時間。定義的模板越通用,這樣通用的模板積累的越多,后面構造數據越容易
c) 易維護:當策略改變時,為策略構造的數據也需要修改時,只需要修改相應的規則文件中的一些規則的定義就可以很方便快速的獲取新的數據。而且比直接保存case 數據占用空間和修改成本小得多。
d) 為自動化實現打下良好基礎:構造的數據后續復用,為自動化工具提供可行性
原理
DGL定義了一組簡單的模板拼裝的語法,用戶用這種語法生成模板傳給DGL工具進行解析,會得到解釋為C語言的.c文件。再將.c文件編譯執行即可以得到數據
適用范圍
1. 適用于生成規律性強的數據,大數據量的輸入構造,
2. 不適用與結構復雜的數據,如網頁數據
創新點及應用效果
創新點
1. 將原來手工構造數據工作自動化,并建立公共規則lib庫,使得數據易復用,易修改
2. 解決了原始方式回歸測試時,因數據不可復用而無法進行的問題
應用效果
1.提高了代碼覆蓋率,提高測試質量:原始手工構造數據無法復用,每次測試只關注新feature,遺漏了因修改新feature帶來的舊feature bug
2.縮短原式數據構造時間的30%:原始手工構造時需要構造每個域,因為規則文件有公共lib庫對default屬性描述,現在只需要關注程序邏輯關注的域,會大大降低數據構造的時間
3.為自動化實現打下良好基礎:構造的數據后續復用,為自動化工具提供可行性
4.構造大數據通過操作一個變量即可:改變原來手工一點點構造的方式,只需修改一個變量,在分鐘級即可實現大數據的構造描述
原文轉自:http://www.anti-gravitydesign.com