先知-Baidu的系統測試

技術小美發表於2017-11-16

What We Do:
 利用成熟的基礎架構動態獲取產品程式碼,一鍵搭建整個系統的被測模組
 依照優先順序同時在千臺測試機二維互斥、加鎖、周 期、定時併發搭建環境和排程測試
 一句命令自動同步線上資料,高效完成任務
BackGround:
目前自動化測試多指採用一定的自動化框架和自動化測試指令碼來單機執行自動化Case完成測試。自動化測試用例(Case)隸屬於按照模組、功能劃分的Suite,執行時可以執行單個Case或是執行整個Suite,這些Case沒有直接的邏輯關係,即使是執行整個Suite時,其中每個用例也僅反映出該用例的執行結果。這種方式的自動化難以解決模組複雜互動時的自動化化問題,往往會將自動化測試中斷在介面資料獲取階段,需要人工check資料在繼續。

系統測試是將已經確認的軟體、計算機硬體、外設、網路等其他元素結合在一起,進行資訊系統的各種組裝測試和確認測試,其目的是通過與系統的需求相比較,發現所開發的系統與使用者需求不符或矛盾的地方,從而提出更加完善的方案。系統測試中由於整個軟體系統通常有多個模組組成,分散式的部署在多個伺服器或是伺服器叢集上,在驗證基本功能點的同時需要完成大量的資料和介面互動的確認測試,併發測試等。
Solutions:
百度結合內部基礎架構模型,結合服務和機器監控,完成一套系統測試自動化方案-Prophet。系統測試自動化方案由一套包含有機器、模組執行資料獲取,通過獲取到的資料派生新的測試分支並完成測試,系統結構如下圖:



 

使用者通過系統提供的資料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)

 

本文轉自百度技術51CTO部落格,原文連結:http://blog.51cto.com/baidutech/743450,如需轉載請自行聯絡原作者


相關文章