自動化測試中,測試數據如何管理

自動化測試中,測試數據如何管理

來自專欄 My Test,My Way!

前幾天在某個測試群,看到有人問了一個問題:把測試數據放配置文件讀取和放文件通過函數調用讀取有什麼區別?

當時我下意識的這麼回答:數據量越大,配置文件越臃腫,放在專門的數據文件(比如excel,csv),方便針對性的維護。

乍看沒毛病,但回頭和人討論這個問題的時候,就認真思考了一下這個問題,下面是我的一些思考和討論的一些結果,僅供參考。。。

自動化測試過程中,現在大多都默認測試腳本與測試數據分離的設計,這樣做的好處是:降低維護成本,遷移成本以及提高效率。

因此測試數據放在哪裡,如何管理,不能一概而論。個人覺得應該從以下幾方面來考慮:

1、業務場景

①、比如在UI自動化測試中,需要測試某個電商網站的各個業務模塊,但前提是要用戶登錄。這個用來執行登錄的測試賬號數據往往是固定的,那麼專門將

  一組username和password放在一個測試數據文件或者測試資料庫中,這樣就顯得太笨重,耗時費力。將其寫入測試腳本或者寫入配置文件,直接引用效率會更高。

②、同樣,測試電商網站,賬號體系分為普通賬號,會員賬號,會員還分很多等級,有時候為了測試會員中心不同的賬號展示的信息是否不同,就需要使用不同的

  等級的賬號登錄,這種場景下,可以將測試數據放在測試文件里(比如excel、csv),通過參數化的方式來循環讀取,執行後續操作。

③、在API自動化測試中,比如針對restful風格的介面,它的域名相對來說都是固定的,只是不同介面的path不同,那麼也可以將域名寫入配置文件,

  測試過程中只需要將實例化的域名和path進行拼接即可,這樣也省卻了在測試數據文件中維護的成本,一定程度上提升了測試效率。

2、數據類型

測試數據也分不同類型,大概分為以下幾種類型:

base-data:即基礎數據,比如電商網站的商品信息、SKU,比如物流公司的倉儲管理等,這類數據往往基數比較大,可以視為持久層,儲存在DB中;

test-data:測試數據,根據業務場景不同,數據無論量級還是變更頻次也不同,基於測試腳本與數據分離的概念,可放在專門的測試文件中,比如excel、csv;

ephemeral-data:臨時數據,即使用一次的數據,這種類型的數據可以用臨時文件存儲(比如dat、csv等)格式,然後進行參數化讀取,或者直接寫入腳本中;

3、數據量級

①、還是電商網站的某個場景,需要先執行登錄,登錄的賬號比如是專門配置的一個測試賬號,相對固定,那麼將測試賬號寫入測試腳本也無可厚非。

  不過我本人不喜歡將測試數據直接寫入腳本,這種情況我會寫入配置文件,然後實例化調用,這種情況就需要根據個人習慣來設計,沒有固定的套路;

②、數據量級在幾十——幾百上千之間,這種時候,可以寫入excel文件進行存儲管理,但是excel的局限在於其本身目前最大支持65500+行的數據存儲,

  而且只支持單事務,如果需要多線程讀取,就會變成瓶頸。

③、csv文件,結構簡單、通用,可以和excel進行轉換,可以減少存儲文件size,且具備簡單的安全性,可以在一定程度上替代excel成為數據存儲文件。

  我本人目前在大多數場景下也是使用csv類型的文件進行測試數據存儲管理;

④、當測試數據超過一定量級,比如性能測試中,如果要執行並發測試或者穩定性測試,那麼所需測試數據量級就很大,這時使用excel或者csv就會變得很不方便。

  無論是從維護的成本還是便捷性考慮,都應該選擇利用DB或其他高效的管理方式來存儲和管理測試數據;

4、使用頻次

測試數據的重用頻次不同,也需要選擇不同的存儲方式,比如:

①、once:只使用一次的測試數據,那麼只需要寫入臨時文件,用完作廢或者刪除即可;

②、often:即經常使用的測試數據,應根據數據量級,使用場景,數據類型選擇合適的存儲管理方式;

③、alway:可以理解為base-data或者持久數據,這種類型的數據因為其本身更新頻次很低,或者數據量級較大,一般存儲在DB中是比較好的一種管理方案。

綜上所述,測試數據的存儲和管理,沒有固定的套路,需要結合業務場景,使用頻次,數據類型和數據量級來綜合考慮,設計合理高效的方案,才是正確的方式!

內容僅供參考,如有更好的建議,希望評論提出,謝謝。。。


推薦閱讀:

APP測試點總結:一
Xebium詳解01-簡介
在南京,想學習軟體測試的同學看過來
工具應用:使用JMeter實現Agileone的介面測試
Web功能測試之表單、搜索測試

TAG:自動化測試 | 軟體測試 |