??诰W(wǎng)站制作企業(yè)成都seo的方法
閱讀本小節(jié),需要讀者具備如下前提條件:
1. ?掌握一種編程語(yǔ)言基礎(chǔ),如java、python等。
2. ?掌握一種單元測(cè)試框架,如java語(yǔ)言的testng框架、python的unittest框架。
3. ?掌握目前主流的UI測(cè)試框架,移動(dòng)端APP測(cè)試框架Appium,或者掌握Web端測(cè)試框架Selenium。
4. ?如果是Appium框架,還需要掌握如何定位控件元素,原生頁(yè)面可使用安卓SDK自帶的uiautomatorviewer工具,webview頁(yè)面可以使用Chrome瀏覽器入"chrome://inspect/#devices",該方法需要翻墻或者修改hosts。
5. ?如果是Web端,瀏覽器中打開(kāi)F12即可。
同時(shí),在這我準(zhǔn)備了一份軟件測(cè)試視頻教程(含接口、自動(dòng)化、性能等),需要的可以直接在下方觀看,或者直接關(guān)注VX公眾號(hào):互聯(lián)網(wǎng)雜貨鋪,這份測(cè)試文檔資料也打包在里面啦,免費(fèi)領(lǐng)取!
軟件測(cè)試視頻教程觀看處:
軟件測(cè)試工程師大忌!盲目自學(xué)軟件測(cè)試真的會(huì)毀終生,能救一個(gè)是一個(gè)......
一、APP端UI分層自動(dòng)化測(cè)試框架的搭建
下面以Appium+python+unittest為例介紹UI自動(dòng)化框架的搭建思路
1. 最開(kāi)始入門(mén)級(jí)別的代碼
以登錄頁(yè)面舉例,如下:
最開(kāi)始的登錄腳本:
2. 對(duì)元素操作的公用方法進(jìn)行封裝
按照上述代碼寫(xiě)了很多行,發(fā)現(xiàn)每次操作元素都要寫(xiě)同樣的代碼,一是啰嗦,二是工作量大,這樣就要將重復(fù)高的操作抽象出來(lái)進(jìn)行封裝成類(lèi),及把元素定位,元素點(diǎn)擊,元素輸入、頁(yè)面滑動(dòng)等方法進(jìn)行封裝,如下代碼:
上述代碼只是展示了查找元素的方法,在BaseAction類(lèi)中封裝元素對(duì)象的重用操作代碼筆者就不貼出來(lái),大家明白思路即可。
3. 測(cè)試代碼和測(cè)試數(shù)據(jù)分離
開(kāi)始測(cè)試數(shù)據(jù)還是寫(xiě)在測(cè)試代碼中,如果用例多了,后期需要修改數(shù)據(jù),這樣只能在測(cè)試代碼中修改,實(shí)際中沒(méi)有這樣維護(hù)代碼的,所以需要將測(cè)試數(shù)據(jù)和代碼分離,筆者選擇ini配置文件存放數(shù)據(jù)。
那么問(wèn)題來(lái)了,把數(shù)據(jù)放在ini配置文件中,在代碼中怎樣獲取數(shù)據(jù)呢,這就需要將操作配置文件的方法封裝成一個(gè)單獨(dú)的類(lèi),即如下代碼
通過(guò)對(duì)元素操作公用方法的封裝和測(cè)試代碼和測(cè)試數(shù)據(jù)的分類(lèi),優(yōu)化的腳本如下:
存放數(shù)據(jù)的ini配置文件:
app配置:
存放元素控件:
存放元素輸入的數(shù)據(jù):
測(cè)試腳本:
4.?通用的公用類(lèi)封裝
以上的腳本中,其實(shí)還缺少一些東西,如啟動(dòng)appiumsever,日志記錄,發(fā)送郵件,數(shù)據(jù)庫(kù)操作等,這幾種操作都是框架公用的,所以單獨(dú)封裝成類(lèi),代碼如下:
appiumsever類(lèi):
log工具類(lèi):
還有發(fā)送郵件類(lèi)和數(shù)據(jù)庫(kù)操作類(lèi)筆者就不貼出來(lái)了,重在大家理解思路即可。
5. 筆者框架分層分享
現(xiàn)在在測(cè)試界吹噓的分層自動(dòng)化,意思就是把各種代碼實(shí)現(xiàn)的類(lèi)根據(jù)不同的功能進(jìn)行分層,自動(dòng)化測(cè)試框架包括的元素大致如下:
基于Appium框架運(yùn)用python語(yǔ)言以及unittest單元測(cè)試框架,搭建的APP的UI自動(dòng)化框架如下:
AppAuto/:
apk:?存放app的apk安裝包
config:?存放配置文件以及測(cè)試數(shù)據(jù),把所有的項(xiàng)目的配置均放在這里,用python支持較好的配置文件格式如ini等進(jìn)行配置。
實(shí)現(xiàn)配置和數(shù)據(jù)與代碼分離。
screenshot:?存放測(cè)試用到的圖片以及測(cè)試時(shí)用例失敗截圖
log:?存放日志文件,包括運(yùn)行時(shí)日志runtime.log、error.log和appium.log日志
report:?存放生成的html格式的測(cè)試報(bào)告文件
src:源碼層
common層:?框架級(jí)公用方法庫(kù)
chche.py:?緩存
dbsever.py:?數(shù)據(jù)庫(kù)操作封裝公用類(lèi)
emailsever.py:?發(fā)送郵件服務(wù)封裝公用類(lèi)
confparser.py:?配置文件解析器
log.py:?日志記錄工具
appiumsever.py: appium服務(wù)公用類(lèi)
initappdriver.py:?初始化driver類(lèi)
adbconnect.py: adb連接操作
...
(如果還有框架級(jí)別的公用方法,還可以在該層封裝成類(lèi),通過(guò)面向?qū)ο蟮姆绞秸{(diào)用即可)
functions層:?用例級(jí)公用方法庫(kù)(元素操作公用方法封裝,基于PageObject模式對(duì)控件公用方法封裝,常用業(yè)務(wù)操作封裝)
eleaction.py:?封裝元素操作的一些公共方法
login.py:?登錄操作
...
(該層主要是封裝用例層面的公用方法,常用的操作步驟,針對(duì)PageObject思想對(duì)不同類(lèi)型的頁(yè)面控件元素的操作封裝等)
testcase層:?測(cè)試用例層
basecase.py:?測(cè)試用例基礎(chǔ)類(lèi)
testcase1.py:?測(cè)試用例1
...
runner層:?測(cè)試套件層
testrunner.py:?各種加載測(cè)試用例的方法封裝,以及生成報(bào)告
run.py:?執(zhí)行器,整個(gè)框架運(yùn)行該文件即可
下面是筆者搭建的一個(gè)小框架,僅供參考:
二、總結(jié)
PS:這里分享一套軟件測(cè)試的自學(xué)教程合集。對(duì)于在測(cè)試行業(yè)發(fā)展的小伙伴們來(lái)說(shuō)應(yīng)該會(huì)很有幫助。除了基礎(chǔ)入門(mén)的資源,博主也收集不少進(jìn)階自動(dòng)化的資源,從理論到實(shí)戰(zhàn),知行合一才能真正的掌握。全套內(nèi)容已經(jīng)打包到網(wǎng)盤(pán),內(nèi)容總量接近500個(gè)G。如需要軟件測(cè)試學(xué)習(xí)資料,關(guān)注公眾號(hào)(互聯(lián)網(wǎng)雜貨鋪),后臺(tái)回復(fù)1,整理不易,給個(gè)關(guān)注點(diǎn)個(gè)贊吧,謝謝各位大佬!
這些資料,對(duì)于做【軟件測(cè)試】的朋友來(lái)說(shuō)應(yīng)該是最全面最完整的備戰(zhàn)倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)也陪伴我走過(guò)了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術(shù)行業(yè),一定要提升技術(shù)功底。