What We Do:
利用成熟的基礎架構動態獲取產品代碼,一鍵搭建整個系統的被測模塊
依照優先級同時在千臺測試機二維互斥、加鎖、周 期、定時併發搭建環境和調度測試
一句命令自動同步線上數據,高效完成任務
BackGround:
目前自動化測試多指採用必定的自動化框架和自動化測試腳原本單機運行自動化Case完成測試。自動化測試用例(Case)隸屬於按照模塊、功能劃分的Suite,運行時能夠執行單個Case或是執行整個Suite,這些Case沒有直接的邏輯關係,即便是執行整個Suite時,其中每一個用例也僅反映出該用例的執行結果。這種方式的自動化難以解決模塊複雜交互時的自動化化問題,每每會將自動化測試中斷在接口數據獲取階段,須要人工check數據在繼續。
系統測試是將已經確認的軟件、計算機硬件、外設、網絡等其餘元素結合在一塊兒,進行信息系統的各類組裝測試和確認測試,其目的是經過與系統的需求相比較,發現所開發的系統與用戶需求不符或矛盾的地方,從而提出更加完善的方案。系統測試中因爲整個軟件系統一般有多個模塊組成,分佈式的部署在多個服務器或是服務器集羣上,在驗證基本功能點的同時須要完成大量的數據和接×××互的確認測試,併發測試等。
Solutions:
百度結合內部基礎架構模型,結合服務和機器監控,完成一套系統測試自動化方案-Prophet。系統測試自動化方案由一套包含有機器、模塊運行數據獲取,經過獲取到的數據派生新的測試分支並完成測試,系統結構以下圖:html
用戶經過系統提供的數據API(由百度底層監控服務提供)獲取到模塊\機器的運行數據後,在測試腳本中嵌入執行邏輯,自動根據當前數據狀況分佈式的在不一樣服務器上派生出新的測試分支完成系統測試。
該測試系統分佈式部署在百度的QA集羣中,全面支持由千臺以上服務器支撐的軟件系統的系統自動化測試工做,幫助用戶節省超過80%的時間。
原來:易實現的屢次迴歸case自動化->讓qa可以投入精力到更深層次的邏輯測試中並提升測試效率。
如今:易實現+深層次迴歸的case自動化->讓qa能夠投入到複雜的系統交互、代碼優化等領域的工做中、更加保證質量和效率
Implementation:
圖中的方塊表明機器,同一行的Suite部署在同一臺機器上,Suite4,7用於測試模塊A部署在機器AM上,Suite29,48用於測試模塊B部署在機器BM上,Suite109,58用於測試模塊C部署在機器CM上。依賴和數據獲取關係由圖表中的箭頭表示。
步驟一:Suite4於指定時間開始執行,執行成功轉步驟二,執行失敗轉步驟五
步驟二:Suite7接到上游Suite4的成功結束通知和執行數據後開始執行, Suite7成功執行後會爲機器BM上測試模塊B的Suite48提供數據,執行成功轉步驟三,執行失敗轉步驟五
步驟三:Suite29接到機器AM上Suite7成功完成的通知和執行數據後開始執行,Suite29執行成功轉步驟四,執行失敗轉步驟五;同時Suite48接到Suite7成功完成的通知後從A機器上獲取Suite7的數據並執行,執行成功轉步驟四,執行失敗轉步驟五
步驟四:Suite109接到BM機器上Suite29成功完成通知開始執行,Suite109執行完成轉步驟五;同時Suite58判斷若是同時收到了BM機器上測試B模塊的Suite29和Suite48的成功通知和數據則開始執行,執行完成轉步驟五
步驟五:結束,通知用戶結果。
每一個Suite均可以包含有時間屬性,即便獲得了上游機器的Suite的運行結果和數據也會等待到達指定時間才運行。系統會彙報Suite執行的結果,數據,經過率,覆蓋率等同時還包括各項軟件件資源的趨勢圖。
服務器
Earnings:
20+ Modules Monitored By Prophet
20+ SystemTest Logical Suites DailyRun On Prophet
150+ ModuleTest Suites DailyRun On Prophet網絡
(做者:laoyong)架構