Robot Framework 分層測(cè)試

項(xiàng)目背景

公司產(chǎn)品的UI自動(dòng)化測(cè)試,由于產(chǎn)品的業(yè)務(wù)流復(fù)雜,所以只針對(duì)部分流程進(jìn)行自動(dòng)化測(cè)試,復(fù)雜的業(yè)務(wù)流還是需要手動(dòng)測(cè)試,因?yàn)榭赡芑ㄙM(fèi)了大量的時(shí)間去寫(xiě)腳本和維護(hù),然而手工的話只需要幾下就好了, 在進(jìn)行自動(dòng)化的時(shí)候,一定要想清楚,哪些適合做,哪些不適合。
一般說(shuō)來(lái),針對(duì)UI自動(dòng)化,都是選取界面穩(wěn)定,業(yè)務(wù)流不復(fù)雜的。

RF介紹

Robot Framework是一款python編寫(xiě)的功能自動(dòng)化測(cè)試框架。具備良好的可擴(kuò)展性,支持關(guān)鍵字驅(qū)動(dòng),可以同時(shí)測(cè)試多種類型的客戶端或者接口,可以進(jìn)行分布式測(cè)試執(zhí)行。主要用于輪次很多的驗(yàn)收測(cè)試和驗(yàn)收測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(ATDD)。

RIDE 編輯器介紹
RF 是通過(guò) RIDE 編輯器進(jìn)行工作的,安裝成功后,執(zhí)行命令“[PythonDir]\Scripts\ride.py”,就可以打開(kāi) RIDE 編輯器。

分層思想

說(shuō)起分層,就一定能要說(shuō)下關(guān)鍵字驅(qū)動(dòng)。
關(guān)鍵字驅(qū)動(dòng)就是當(dāng)調(diào)用不同的關(guān)鍵字,導(dǎo)致測(cè)試結(jié)果不同。
RF的分層,類似于selenium的POM模式,可以提高用例的可維護(hù)性,提高用例的可讀性,提供較高的可擴(kuò)展性。

實(shí)踐展示

目前的分層如下:


總體展示.png

測(cè)試用例層
名單管理部分就是測(cè)試用例層,所有需要執(zhí)行的測(cè)試用例都放在這里,這里可以再仔細(xì)看下

測(cè)試用例.png

這里面按照系統(tǒng)功能模塊進(jìn)行劃分,新建了幾個(gè)resource,再resource下建立新的測(cè)試用例。
下面時(shí)用戶信息查詢的測(cè)試用例


用例詳情.png

在這里我們可以看到,表格中沒(méi)有關(guān)鍵字,只有數(shù)據(jù),我們只需要在這里輸入不同的數(shù)據(jù),就可以實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng),輸入不同的數(shù)據(jù),檢測(cè)結(jié)果,進(jìn)行測(cè)試。
那用例流程在哪里呢,可以看到template中,就是我們導(dǎo)入測(cè)試用例的地方,需要在resource中導(dǎo)入相關(guān)的關(guān)鍵字才行。
只有變?yōu)樗{(lán)色時(shí),才表示可用的。如果已經(jīng)正確導(dǎo)入,但是沒(méi)有及時(shí)變藍(lán),那么就關(guān)閉ride,重新打開(kāi),相信我,我遇到很多次這樣的情況了。

功能模塊層
下面是功能模塊層,把每個(gè)功能都作為一個(gè)關(guān)鍵字封裝起來(lái),

QQ截圖20160629170425.png

看一個(gè)詳情,這其中包含了添加風(fēng)險(xiǎn)等級(jí)的操作流程,并且基本上每一個(gè)操作都封裝為一個(gè)用戶關(guān)鍵字了,這就是為了提高用例的可讀性
基本上通過(guò)看這個(gè)用例,就可以知道干了什么事情。
同時(shí)也提高了腳本的可維護(hù)性,便于維護(hù)腳本。當(dāng)一個(gè)操作的元素定位變化時(shí),我們不需要修改整個(gè)腳本,而只需要找到對(duì)應(yīng)的關(guān)鍵字,修改它的定位元素就行了。

QQ截圖20160629170606.png

元素層
看一下點(diǎn)擊新建這個(gè)關(guān)鍵字

QQ截圖20160629171200.png

可以看到這個(gè)關(guān)鍵字中內(nèi)容很少,只是一個(gè)點(diǎn)擊操作,點(diǎn)擊一個(gè)元素。
也許有人覺(jué)得這樣也需要去單獨(dú)轉(zhuǎn)化為一個(gè)關(guān)鍵字嗎,直接寫(xiě)多方便。
是的,可以直接寫(xiě)在腳本中,但是直接看這個(gè)代碼,你能知道這個(gè)點(diǎn)擊元素的操作產(chǎn)生了什么效果嗎?加入其他地方也需要點(diǎn)擊這個(gè)按鈕,那么是不是其他地方再寫(xiě)一遍呢?

當(dāng)然不,注意看左邊,這個(gè)關(guān)鍵字是在一個(gè)叫public-opera的resource中的,因?yàn)橄到y(tǒng)的原因,有很多業(yè)務(wù)都需要操作相同的元素,所以這里將這里單獨(dú)分層出來(lái),作為公共元素層
這樣當(dāng)其他的腳本中需要用到這些操作時(shí),只需要導(dǎo)入public-opera,然后直接調(diào)用就可以了

數(shù)據(jù)庫(kù)交互層

QQ截圖20160629172139.png

在此系統(tǒng)中,很多操作都對(duì)后臺(tái)有交互,所以不能僅僅檢查頁(yè)面元素的顯示,而且需要連接數(shù)據(jù)庫(kù),進(jìn)行校驗(yàn),以便檢測(cè)操作是否真正成功。

變量

在數(shù)據(jù)庫(kù)連接腳本中,以及測(cè)試腳本中,需要重復(fù)用到很多變量,于是將這些變量也提出來(lái),方便維護(hù),這樣以后當(dāng)變更數(shù)據(jù)庫(kù)地址,或者其他變量時(shí),不需要找到對(duì)應(yīng)的腳本中修改,只需要在這里修改即可。


QQ截圖20160629172448.png

自定義庫(kù)

在使用RF的過(guò)程中,RF自身提供的關(guān)鍵字很多時(shí)候并不滿足我們的需求,此時(shí)就需要自己開(kāi)發(fā)系統(tǒng)關(guān)鍵字,自定義庫(kù)這一層中便放了自定義的幾個(gè)系統(tǒng)關(guān)鍵字。使用python寫(xiě)了一個(gè)py文件,然后將py文件導(dǎo)入,就可以使用py文件中的方法了

業(yè)務(wù)流層

Paste_Image.png

這里才是具體的業(yè)務(wù)流展現(xiàn)的地方,將每個(gè)業(yè)務(wù)都封裝成一個(gè)關(guān)鍵字,在test case中的template直接輸入關(guān)鍵字名字便可調(diào)用了。

Paste_Image.png

這里便展現(xiàn)了一個(gè)業(yè)務(wù)具體的操作流程,從登陸,進(jìn)入指定頁(yè)面,然后搜索對(duì)應(yīng)的數(shù)據(jù),獲取頁(yè)面上的數(shù)據(jù),與數(shù)據(jù)庫(kù)中 的數(shù)據(jù)進(jìn)行比對(duì),如果相同,說(shuō)明成功,反之失敗。

當(dāng)業(yè)務(wù)流有變化時(shí),直接調(diào)整各個(gè)關(guān)鍵字的順序即可,這也是分層的優(yōu)勢(shì),大大提高了腳本的可重用性和可維護(hù)性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容