背景介紹
持續(xù)集成(Continuous Integration)是Devops理念的一種實(shí)踐過程荣倾,同時(shí)也是敏捷開發(fā)的具體表現(xiàn)形式骑丸。除了持續(xù)集成,還有持續(xù)交付(Continuous Delivery)者娱,持續(xù)部署(Continuous Deployment)等苏揣。這里我們著重介紹持續(xù)集成過程中的測(cè)試自動(dòng)化(Test Automation),如果測(cè)試沒有實(shí)現(xiàn)自動(dòng)化的話,那么整個(gè)持續(xù)集成是不完善的平匈,同時(shí)也不是高效的。因此自動(dòng)化測(cè)試是持續(xù)集成過程中的重要一環(huán)忍燥。
測(cè)試自動(dòng)化
自動(dòng)化測(cè)試(Automated Test)隙姿,很多團(tuán)隊(duì)都在做梅垄,但是往往效果不明顯输玷。究其原因還是對(duì)自動(dòng)化測(cè)試的理解誤區(qū), 以為有了自動(dòng)化后,就不需要手工測(cè)試了机久,因此將一些不適合做自動(dòng)化的測(cè)試用例進(jìn)行自動(dòng)化赔嚎,導(dǎo)致了投入產(chǎn)出比過高膘盖。同時(shí)尤误,由于缺乏好的統(tǒng)一的測(cè)試框架支持,自動(dòng)化測(cè)試腳本編寫的復(fù)雜度過高践图,維護(hù)性差,耗費(fèi)了測(cè)試人員大量的精力來編寫和維護(hù)自動(dòng)化測(cè)試用例码党。
基于此,我們?cè)谧詣?dòng)化測(cè)試實(shí)踐過程中揖盘,選擇了一款驗(yàn)收測(cè)試自動(dòng)化測(cè)試框架Robot Framework,來作為我們的底層核心框架憾股。同時(shí)基于RF框架,構(gòu)建我們整個(gè)可維護(hù)性可擴(kuò)展性的自動(dòng)化測(cè)試套件架構(gòu)服球。如下所示:
這個(gè)自動(dòng)化測(cè)試套件架構(gòu)具體分為三個(gè)大層颠焦,八個(gè)小層。我們分別來介紹:
平臺(tái)層
平臺(tái)層, 主要是提供測(cè)試用例運(yùn)行環(huán)境伐庭,運(yùn)行庫的。對(duì)測(cè)試用例屏蔽了具體的底層技術(shù)細(xì)節(jié)霸株,同時(shí)提供了一個(gè)統(tǒng)一的測(cè)試用例編寫語法。
平臺(tái)層去件,主要包括測(cè)試框架層扰路,和測(cè)試庫層箫攀。
測(cè)試框架層
測(cè)試框架層幼衰,我們選擇Robot Framework 來作為基礎(chǔ)框架,負(fù)責(zé)測(cè)試用例的解析渡嚣,測(cè)試用例的執(zhí)行,測(cè)試監(jiān)控以及測(cè)試報(bào)告管理绝葡。也可以選擇其他框架如Cucumber或者是TestNG等腹鹉。
測(cè)試庫層
測(cè)試庫層藏畅,主要是與實(shí)際被測(cè)對(duì)象進(jìn)行交互的工具封裝層。如對(duì)Web測(cè)試工具Selenium的封裝層Selenium2Lbirary绞蹦,對(duì)接口測(cè)試工具requests的封裝層RequestsLibrary等等榜旦。
資源層
資源層幽七,主要是為測(cè)試用例提供資源的溅呢,如用戶自定義的關(guān)鍵字資源,變量資源或者其他資源類型咐旧。這里重點(diǎn)關(guān)注關(guān)鍵字資源。
關(guān)鍵字層
關(guān)鍵字在資源層又被劃分成三層室埋,低階關(guān)鍵字層踏兜,中階關(guān)鍵字層,高階關(guān)鍵字層碱妆。之所以進(jìn)行這樣的分層昔驱,主要是為了實(shí)現(xiàn)業(yè)務(wù)的分離,和用例的可維護(hù)性骤肛,可擴(kuò)展性。
三層關(guān)鍵字在不同的測(cè)試對(duì)象上又可以有不同的表現(xiàn)方式腋颠,如針對(duì)Web測(cè)試對(duì)象,表現(xiàn)為頁面對(duì)象層淑玫,頁面邏輯層,業(yè)務(wù)流程層尊搬。
用例層
用例層土涝,主要是測(cè)試套件和測(cè)試用例佛寿。概念比較明晰但壮,不作具體介紹常侣。
測(cè)試執(zhí)行
為了能夠使我們的自動(dòng)化測(cè)試快速腔长,穩(wěn)定的運(yùn)行,我們基于Docker搭建了一套分布式測(cè)試執(zhí)行環(huán)境捞附。如下圖所示:
之所以用Docker來運(yùn)行測(cè)試環(huán)境,是為了實(shí)現(xiàn)測(cè)試環(huán)境的獨(dú)立胆绊,確保測(cè)試過程不受到系統(tǒng)環(huán)境影響。
幫助
- 關(guān)于Selenium集群搭建請(qǐng)參考 Selenium Grid集群搭建压状, Docker+Selenium Grid構(gòu)建分布式Web測(cè)試環(huán)境
- 關(guān)于Robot Framework介紹請(qǐng)參考 Robot Framework框架入門指南