轉載請註明出處❤️
作者:測試蔡坨坨
原文連結:caituotuo.top/67fb1f11.html
你好,我是測試蔡坨坨。
在之前的自動化測試框架相關文章中,無論是介面自動化還是UI自動化,都談及data模組和config模組,也就是測試資料和組態檔。
PS:自動化測試框架可參考往期文章「五分鐘搞懂 POM 設計模式」「五分鐘學會介面自動化測試框架」
隨著自動化用例的不斷增加,需要維護的測試資料也會越來越多,維護成本越來越高,如何有效管理測試資料也是自動化測試實踐中一個值得探討的問題。並且隨著技術的發展和工具的不斷革新,方法論和實踐經驗的積累,自動化測試中測試資料的管理方式也在不斷迭代和演進。
本篇,就來聊一聊自動化測試過程中資料的管理。
在學習自動化測試初期,基本上使用的都是線性指令碼,也就是將測試資料與測試指令碼捆綁在一起。
這也是每個初學者都會經歷的階段,這樣做的好處就是可以快速實現一個demo,更好地幫助初學者從手工測試進階到自動化測試,例如UI自動化就是模擬人在瀏覽器上的操作,開啟瀏覽器、定位元素、操作元素、模擬頁面動作、斷言結果等一系列操作,線性指令碼正好與這一系列操作對應,有助於初學者更好地理解,從而得到一個正反饋。
但是,在實際應用中,不推薦這種方式。
因為,剛開始少數的測試用例維護起來可能很容易,但隨著時間遷移、產品迭代、測試套件的增長,指令碼也會越來越臃腫,可維護性差且工作量大,有悖於自動化測試提高工作效率的本質。
以鍵值對的方式將一些公用資料寫入組態檔中,並使用相關API來讀取設定資訊,組態檔的格式可以是yaml、json、xml、properties、ini、toml等。
這裡的組態檔主要用於管理一些公用的、使用頻率較高、資料量級較小的測試資料。
例如:
測試框架中的data模組,使用專門的檔案來管理測試資料,實現資料與指令碼的分離,降低維護成本,提高可移植性,檔案格式可以是yaml、json、xml、excel、csv等。
這裡的測試檔案與上面所說的組態檔略有不同,組態檔主要用於存放整個專案需要用到的設定項,如URL、資料庫資訊等,而這裡的測試檔案更多的是與測試用例相對應,適用於相同的操作有不同的輸入得到不同或相同的結果。
例如:
TestNG的@DataProvider註解
加Excel資料來源檔案
實現資料驅動),並執行後續操作。不同資料格式檔案對比:
檔案格式 | 優點 | 缺點 |
---|---|---|
Excel | 生成資料方便 | 二進位制檔案不利於版本管理;一張工作表最多有256列,65536行;只支援單事務,如需多執行緒讀取會有瓶頸 |
CSV | 結構簡單,可用Excel編輯,可與Excel進行轉換 | 檔案格式方便版本管理,不容易描述複雜的層級結構 |
YAML | 格式完備,可讀性好,可以註釋 | 格式簡單 |
XML | 格式完備 | 冗長複雜 |
JSON | 格式完備,可讀性良好 | 不能編寫註釋,格式死板 |
綜上所述,YAML和JSON對於資料結構的支援和書寫程度較好,但是YAML寫法更加簡潔且可以新增註釋,因此最推薦的就是位於C位的YAML檔案格式。
PS:關於YAML的用法可參考往期文章「八分鐘學會 YAML 資料驅動」
為了便於測試資料的統一管理,以及考慮到資料持久化的問題,可以將測試資料儲存在資料庫中,並使用資料庫管理系統(如:MySQL、SqlServer、Oracle等)來管理和維護資料,測試指令碼可以使用SQL查詢語句來檢索資料,進一步降低了指令碼和資料的耦合性。
例如:對於一些基礎資料,如電商網站的商品資訊,此類資料往往基數較大,且本身更新頻率較低,可將其儲存放到資料庫中做持久化。
通過專門的資料池和造數工廠來生產和管理測試資料。所謂造數工廠就是通過呼叫應用程式的方法來產生資料,這些應用程式一般是專門的測試平臺。通過此類造資料平臺,可以幫助測試人員有效地管理測試資料,幫助測試人員建立、編輯、刪除和查詢測試資料。同時,測試人員可以根據測試資料的特定屬性,如日期範圍、型別等,對測試資料進行分類和組織。
這種方式對測試人員的技能要求較高,需要具備前端、後端、運維等相關知識。
總之,管理測試資料是自動化測試過程中非常重要的一部分。
測試人員應該選擇最合適的方式來管理測試資料,並確保測試資料的準確性、可靠性和保密性等。