
背景介紹
持續(xù)集成(Continuous Integration)是Devops理念的一種實踐過程,同時也是敏捷開發(fā)的具體表現(xiàn)形式。除了持續(xù)集成,還有持續(xù)交付(Continuous Delivery),持續(xù)部署(Continuous Deployment)等。這里我們著重介紹持續(xù)集成過程中的測試自動化(Test Automation),如果測試沒有實現(xiàn)自動化的話,那么整個持續(xù)集成是不完善的,同時也不是高效的。因此自動化測試是持續(xù)集成過程中的重要一環(huán)。

測試自動化
自動化測試(Automated Test),很多團隊都在做,但是往往效果不明顯。究其原因還是對自動化測試的理解誤區(qū), 以為有了自動化后,就不需要手工測試了,因此將一些不適合做自動化的測試用例進行自動化,導(dǎo)致了投入產(chǎn)出比過高。同時,由于缺乏好的統(tǒng)一的測試框架支持,自動化測試腳本編寫的復(fù)雜度過高,維護性差,耗費了測試人員大量的精力來編寫和維護自動化測試用例。

基于此,我們在自動化測試實踐過程中,選擇了一款驗收測試自動化測試框架Robot Framework,來作為我們的底層核心框架。同時基于RF框架,構(gòu)建我們整個可維護性可擴展性的自動化測試套件架構(gòu)。如下所示:

這個自動化測試套件架構(gòu)具體分為三個大層,八個小層。我們分別來介紹:
平臺層
平臺層, 主要是提供測試用例運行環(huán)境,運行庫的。對測試用例屏蔽了具體的底層技術(shù)細節(jié),同時提供了一個統(tǒng)一的測試用例編寫語法。
平臺層,主要包括測試框架層,和測試庫層。
測試框架層
測試框架層,我們選擇Robot Framework 來作為基礎(chǔ)框架,負責測試用例的解析,測試用例的執(zhí)行,測試監(jiān)控以及測試報告管理。也可以選擇其他框架如Cucumber或者是TestNG等。
測試庫層
測試庫層,主要是與實際被測對象進行交互的工具封裝層。如對Web測試工具Selenium的封裝層Selenium2Lbirary,對接口測試工具requests的封裝層RequestsLibrary等等。
資源層
資源層,主要是為測試用例提供資源的,如用戶自定義的關(guān)鍵字資源,變量資源或者其他資源類型。這里重點關(guān)注關(guān)鍵字資源。
關(guān)鍵字層
關(guān)鍵字在資源層又被劃分成三層,低階關(guān)鍵字層,中階關(guān)鍵字層,高階關(guān)鍵字層。之所以進行這樣的分層,主要是為了實現(xiàn)業(yè)務(wù)的分離,和用例的可維護性,可擴展性。
三層關(guān)鍵字在不同的測試對象上又可以有不同的表現(xiàn)方式,如針對Web測試對象,表現(xiàn)為頁面對象層,頁面邏輯層,業(yè)務(wù)流程層。
用例層
用例層,主要是測試套件和測試用例。概念比較明晰,不作具體介紹。
測試執(zhí)行
為了能夠使我們的自動化測試快速,穩(wěn)定的運行,我們基于Docker搭建了一套分布式測試執(zhí)行環(huán)境。如下圖所示:

之所以用Docker來運行測試環(huán)境,是為了實現(xiàn)測試環(huán)境的獨立,確保測試過程不受到系統(tǒng)環(huán)境影響。

幫助
- 關(guān)于Selenium集群搭建請參考 Selenium Grid集群搭建, Docker+Selenium Grid構(gòu)建分布式Web測試環(huán)境
- 關(guān)于Robot Framework介紹請參考 Robot Framework框架入門指南