限於作者水平有限,以下內容可能是管窺之見,希望大家高抬貴手,且讓我斗膽拋磚引玉。
公司產品迪備主要是通過網頁操作來進行數據庫的備份與恢復,監控與管理,因此在測試的過程中,可以用python測試腳本來模擬用戶的操作,這樣的測試對於回歸測試效果尤佳,減少了人工操作,極大地提高了效率。
據網上資料得知,python的web測試開源世界,存在splinter,它是自動化測試web的框架,這是最為基本的Web-driver。然后加上selenium,兩者並用,才能支持主流的瀏覽器的firefox, chrome 和IE ,到目前為止,支持chrome瀏覽器的最為齊全,連鼠標的模擬的API都存在,同時對其余兩大瀏覽器的支持也甚為不錯。
有了splinter+selenium,已經可以模擬用戶的操作了。但是怎樣才能有效地模擬那么多業務的操作,並且能知道業務的執行是成功還是失敗呢?這就需要python的單元測試框架了,它能有效地組織這些業務邏輯的測試執行,執行完畢后,顯示出各個執行的結果,所謂的業務邏輯可以理解為各個測試用例。
python的單元測試需要自己把測試用例(TestCase)加入到測試集里(testSuite), 然后再runTest()進行測試。但我從python2.7.3的單元測試文檔,發現更能讓測試自動化的接口,那就是discover函數,它能找出指定目錄包括其子目錄下文件名符合某種樣式的測試用例Testcase或測試模塊,並且放入到測試集里面自動執行。這里是文檔中關於discover函數的描述:
def discover(self, start_dir, pattern='test*.py', top_level_dir=None):
Find and return all test modules from the specified startdirectory, recursing into subdirectories to find them. Only test files that match the pattern will be loaded.
關於discover函數更加詳細的用法,請查看文檔和閱讀其源代碼。
因為我們測試產品的時候,都會有層次,分模塊,或者整體地去測試,discover接口為我們提供了這樣的功能,指定不同的目錄,就相當於指定不同的模塊進行測試,指定根目錄代表要對產品進行整體的測試。
如這是迪備產品測試的雛形樹狀圖:
基本的有了頭緒,又有一個問題浮出水面了,那么測試用例的數據又是應該怎樣存放的呢?用txt文件,就要定義存取數據的格式,同時規定所有的測試人員都使用這樣的格式,這樣做會比較牽強。那倒不如用一種人所皆知,並且易學的格式,python對XML格式的支持比較強大,最終決定使用XML文件。使用XML存取測試用例的數據,不但存取方便,並且可以設計測試用例與寫相應測試腳本的人是不同的人。
以下是測試迪備產品的一些測試,包含用例的設計,XML測試用例配置文件和測試腳本的分析