python+appium自動(dòng)化測(cè)試系列就要告一段落了,本篇博客咱們做個(gè)小結(jié)。
首先想要說(shuō)明一下,APP自動(dòng)化測(cè)試可能很多公司不用,但也是大部分自動(dòng)化測(cè)試工程師、高級(jí)測(cè)試工程師崗位招聘信息上要求的,所以為了更好的待遇,我們還是需要花時(shí)間去掌握的,畢竟誰(shuí)也不會(huì)跟錢過(guò)不去。
接下來(lái),一起總結(jié)一下APP UI自動(dòng)化測(cè)試的思路吧。
一,開發(fā)語(yǔ)言選擇
通常用于自動(dòng)化測(cè)試的編程語(yǔ)言有:Python、Java、Javascript、Ruby、C#、PHP等。一般我們會(huì)選擇自己熟悉的編程語(yǔ)言來(lái)編寫自動(dòng)化腳本,但對(duì)于編程基礎(chǔ)基本為0的童鞋(或者專注于做自動(dòng)化測(cè)試的童鞋),推薦學(xué)習(xí)使用Python。
相對(duì)于其他語(yǔ)言,Python做自動(dòng)化測(cè)試有以下優(yōu)點(diǎn):
- 對(duì)于初學(xué)者來(lái)說(shuō),Python語(yǔ)法簡(jiǎn)潔,可讀性強(qiáng),易于學(xué)習(xí)
- 有強(qiáng)大的第三方庫(kù),編寫腳本效率更高
- Python中的Pytest自動(dòng)化測(cè)試框架是目前最流行的測(cè)試框架之一
二,測(cè)試框架選擇
選擇編開發(fā)語(yǔ)言之后,我們需要選擇UI測(cè)試框架。目前較為主流或者使用較多的APP UI自動(dòng)化測(cè)試框架有Appium、Airtest等。
1,Appium
- 持續(xù)維護(hù)中且開源
- Appium server支持在Windows、macOS、Linux上運(yùn)行
- 支持多種主流編程語(yǔ)言,如Python、Java、Javascript、Ruby等
- 支持Android、ios、H5自動(dòng)化測(cè)試(集成了UiAutomator、UiAutomation框架)
- 環(huán)境搭建較為復(fù)雜
2,Airtest
- 由網(wǎng)易開發(fā)(官方文檔),只支持python語(yǔ)言
- 提供集成Airtest與Poco兩個(gè)測(cè)試框架的強(qiáng)大的IDE,對(duì)新手很友好
- 集成基于圖像識(shí)別的UI自動(dòng)化測(cè)試框架airtest,即使不懂代碼也能編寫自動(dòng)化腳本
- 跨平臺(tái),可對(duì)Windows、Android和iOS應(yīng)用軟件進(jìn)行自動(dòng)化測(cè)試
- 對(duì)游戲測(cè)試較為友好
- Airtest與Poco本質(zhì)上是python的兩個(gè)第三方庫(kù),測(cè)試環(huán)境搭建沒(méi)有Appium那么復(fù)雜
3,選擇框架
根據(jù)實(shí)際情況選擇合適的框架。
以下情況可以優(yōu)先選擇網(wǎng)易的Airtest (Airtest官網(wǎng)):
- 無(wú)編程基礎(chǔ)
- 游戲測(cè)試
- 測(cè)試場(chǎng)景較為單一(Appium相對(duì)來(lái)說(shuō)較為笨重)
- 支付寶小程序自動(dòng)化(博主目前使用Airtest集成的Poco框架做支付寶小程序自動(dòng)化測(cè)試)
以下情況建議選擇Appium:
- 測(cè)試場(chǎng)景比較復(fù)雜(如需要多臺(tái)手機(jī)批量測(cè)試)
- 測(cè)試腳本語(yǔ)言非Python(Airtest目前只支持Python)
三,單元測(cè)試框架選擇
區(qū)別于上面所說(shuō)的UI測(cè)試框架,單元測(cè)試框架用于加載測(cè)試用例、執(zhí)行測(cè)試用例、斷言、輸出測(cè)試結(jié)果等。
不同的開發(fā)語(yǔ)言有各自對(duì)應(yīng)的單元測(cè)試框架,如Java有JUnit、TestNG、Robot等,Python有unittest、pytest等。博主主要使用Python做自動(dòng)化測(cè)試,所以這里只針對(duì)Python單元測(cè)試框架做說(shuō)明。
python主流的單元測(cè)試框架:
- unittest,Python自帶的單元測(cè)試框架
- pytest,基于unittest開發(fā),易用性好,信息更詳細(xì),插件眾多
- robot framework,基于Python的關(guān)鍵字驅(qū)動(dòng)測(cè)試框架,有界面,自帶報(bào)告及l(fā)og,功能完善,清晰美觀
這里強(qiáng)烈推薦使用pytest,功能強(qiáng)大且容易上手,官方文檔為英文,中文可參考Pytest 使用手冊(cè))。
四,測(cè)試環(huán)境搭建
1,測(cè)試電腦選擇
有條件的話建議使用Mac機(jī)器專門用于UI自動(dòng)化測(cè)試,因?yàn)閕os app ui自動(dòng)化只能在Mac機(jī)器上進(jìn)行。
2,測(cè)試手機(jī)選擇
剛開始進(jìn)行測(cè)試腳本調(diào)試時(shí)可以選擇模擬器,Android模擬器可選擇Gernymotion、夜神模擬器,具體參考博客Android模擬器的使用
待整個(gè)測(cè)試項(xiàng)目開發(fā)完成后,建議換成真機(jī)跑自動(dòng)化腳本,這樣更接近真實(shí)的用戶使用場(chǎng)景。
3,開發(fā)語(yǔ)言環(huán)境
建議安裝python 3以上的版本,官方已經(jīng)停止對(duì)python2版本的更新維護(hù)。
4,UI自動(dòng)化測(cè)試框架環(huán)境搭建
windows環(huán)境下搭建Appium請(qǐng)參考博客appium環(huán)境搭建,Mac下搭建Appium稍微復(fù)雜點(diǎn),后續(xù)會(huì)寫博客分享。
若選擇Airtest框架的話,請(qǐng)參考官網(wǎng)。
五,腳本編寫
1,編寫測(cè)試demo
為了驗(yàn)證整個(gè)測(cè)試環(huán)境是否搭建成功、是否能跑通用例,一般我們需要先編寫簡(jiǎn)單的測(cè)試腳本并執(zhí)行,通過(guò)則說(shuō)明整個(gè)環(huán)境搭建成功。
2,確定目錄結(jié)構(gòu)
推薦使用Page Object設(shè)計(jì)模式來(lái)開發(fā)APP UI自動(dòng)化測(cè)試項(xiàng)目,請(qǐng)參考博客Page Object設(shè)計(jì)模式。
3,選擇測(cè)試報(bào)告
不同的開發(fā)語(yǔ)言、不同的單元測(cè)試框架可選用不同的測(cè)試報(bào)告。在python中,unittest框架使用HTMLTestRunner或BSTestrunner生成測(cè)試報(bào)告,可參考博客unittest單元測(cè)試框架。Pytest框架使用pytest-html生成報(bào)告或通過(guò)allure定制測(cè)試報(bào)告。
以上步驟完成后,繼續(xù)往測(cè)試項(xiàng)目里新增測(cè)試用例便可。
六,Jenkins集成
根據(jù)上述步驟編寫完成整個(gè)app UI自動(dòng)化測(cè)試項(xiàng)目,且運(yùn)行一段時(shí)間穩(wěn)定后,就可以考慮進(jìn)行Jenkins的集成,請(qǐng)參考博客Jenkins集成appium自動(dòng)化測(cè)試(Windows篇) 或 遠(yuǎn)程Jenkins新增Mac節(jié)點(diǎn)。
七,總結(jié)
總結(jié)APP UI自動(dòng)化可使用以下幾種實(shí)現(xiàn)方式:
1,python + appium + unittest + HTMLTestRunner
2,python + appium + pytest + pytest-html / allure
3,python + Airtest(AirtestIDE)
4,python + Poco + pytest + pytest-html / allure
可根據(jù)實(shí)際情況自行選擇。