自動化測試如何管理測試資料

2023-03-13 06:01:41

轉載請註明出處❤️

作者:測試蔡坨坨

原文連結:caituotuo.top/67fb1f11.html


前言

你好,我是測試蔡坨坨。

在之前的自動化測試框架相關文章中,無論是介面自動化還是UI自動化,都談及data模組和config模組,也就是測試資料和組態檔。

PS:自動化測試框架可參考往期文章「五分鐘搞懂 POM 設計模式」「五分鐘學會介面自動化測試框架

隨著自動化用例的不斷增加,需要維護的測試資料也會越來越多,維護成本越來越高,如何有效管理測試資料也是自動化測試實踐中一個值得探討的問題。並且隨著技術的發展和工具的不斷革新,方法論和實踐經驗的積累,自動化測試中測試資料的管理方式也在不斷迭代和演進。

本篇,就來聊一聊自動化測試過程中資料的管理。

指令碼與資料捆綁

在學習自動化測試初期,基本上使用的都是線性指令碼,也就是將測試資料與測試指令碼捆綁在一起。

這也是每個初學者都會經歷的階段,這樣做的好處就是可以快速實現一個demo,更好地幫助初學者從手工測試進階到自動化測試,例如UI自動化就是模擬人在瀏覽器上的操作,開啟瀏覽器、定位元素、操作元素、模擬頁面動作、斷言結果等一系列操作,線性指令碼正好與這一系列操作對應,有助於初學者更好地理解,從而得到一個正反饋。

但是,在實際應用中,不推薦這種方式。

因為,剛開始少數的測試用例維護起來可能很容易,但隨著時間遷移、產品迭代、測試套件的增長,指令碼也會越來越臃腫,可維護性差且工作量大,有悖於自動化測試提高工作效率的本質。

組態檔

以鍵值對的方式將一些公用資料寫入組態檔中,並使用相關API來讀取設定資訊,組態檔的格式可以是yaml、json、xml、properties、ini、toml等。

這裡的組態檔主要用於管理一些公用的、使用頻率較高、資料量級較小的測試資料。

例如:

  • 在介面自動化測試中,域名相對來說都是固定的,只是不同介面的請求路徑(如:/register、/login)不一樣,那麼就可以把域名(如:https://caituotuo.top)寫入組態檔,測試過程中只需要將範例化的域名與請求路徑進行拼接即可(如:https://caituotuo.top/register),從而節省維護成本,一定程度上提高測試效率。
  • 在UI自動化測試中,要測試某個網站各個模組的業務,前提是使用者登入,此時這個用來登入的測試賬號往往都是固定的,因此就可以將這組使用者名稱和密碼寫入組態檔中直接參照。比起用專門的檔案或資料庫來管理這組資料來說,寫在組態檔中更加高效方便。
  • 資料庫設定資訊,包括:host、port、username、password、charset等。

測試檔案

測試框架中的data模組,使用專門的檔案來管理測試資料,實現資料與指令碼的分離,降低維護成本,提高可移植性,檔案格式可以是yaml、json、xml、excel、csv等。

這裡的測試檔案與上面所說的組態檔略有不同,組態檔主要用於存放整個專案需要用到的設定項,如URL、資料庫資訊等,而這裡的測試檔案更多的是與測試用例相對應,適用於相同的操作有不同的輸入得到不同或相同的結果。

例如:

  • 要測試登入功能,需要用到不同的賬號和密碼,不同的組合都需要做登入場景的測試,正常的排列組合下可能會產生多個用例,對於這種情況,就可以將多組賬號資料存放在測試檔案中,再通過引數化的方式迴圈讀取(如:利用TestNG的@DataProvider註解Excel資料來源檔案實現資料驅動),並執行後續操作。
  • 根據業務場景的不同,資料的量級和使用頻率也不一樣,基於資料和指令碼分離的思想,將測試資料存放在專門的測試檔案中。
  • 大量的測試資料,幾百上千條測試資料,對於測試資料量級很大的場景也可以將資料寫入Excel、CSV等檔案中進行儲存管理。

不同資料格式檔案對比:

檔案格式 優點 缺點
Excel 生成資料方便 二進位制檔案不利於版本管理;一張工作表最多有256列,65536行;只支援單事務,如需多執行緒讀取會有瓶頸
CSV 結構簡單,可用Excel編輯,可與Excel進行轉換 檔案格式方便版本管理,不容易描述複雜的層級結構
YAML 格式完備,可讀性好,可以註釋 格式簡單
XML 格式完備 冗長複雜
JSON 格式完備,可讀性良好 不能編寫註釋,格式死板

綜上所述,YAML和JSON對於資料結構的支援和書寫程度較好,但是YAML寫法更加簡潔且可以新增註釋,因此最推薦的就是位於C位的YAML檔案格式。

PS:關於YAML的用法可參考往期文章「八分鐘學會 YAML 資料驅動

資料庫管理

為了便於測試資料的統一管理,以及考慮到資料持久化的問題,可以將測試資料儲存在資料庫中,並使用資料庫管理系統(如:MySQL、SqlServer、Oracle等)來管理和維護資料,測試指令碼可以使用SQL查詢語句來檢索資料,進一步降低了指令碼和資料的耦合性。

例如:對於一些基礎資料,如電商網站的商品資訊,此類資料往往基數較大,且本身更新頻率較低,可將其儲存放到資料庫中做持久化。

資料平臺

通過專門的資料池和造數工廠來生產和管理測試資料。所謂造數工廠就是通過呼叫應用程式的方法來產生資料,這些應用程式一般是專門的測試平臺。通過此類造資料平臺,可以幫助測試人員有效地管理測試資料,幫助測試人員建立、編輯、刪除和查詢測試資料。同時,測試人員可以根據測試資料的特定屬性,如日期範圍、型別等,對測試資料進行分類和組織。

這種方式對測試人員的技能要求較高,需要具備前端、後端、運維等相關知識。

綜述

總之,管理測試資料是自動化測試過程中非常重要的一部分。

測試人員應該選擇最合適的方式來管理測試資料,並確保測試資料的準確性、可靠性和保密性等。