前言
由于需求的快速迭代和敏捷測試的要求,在測試過程中引入自動(dòng)化成為必不可少的手段。作為一個(gè)互聯(lián)網(wǎng)測試團(tuán)隊(duì),我們自然也引入了自動(dòng)化測試這個(gè)環(huán)節(jié)。在眾多的測試框架中,我們選取了相對(duì)成熟穩(wěn)定,支持多種平臺(tái)的Appium框架。雖然Appium自身的Api能解決大多數(shù)的測試場景,但總有漏網(wǎng)之魚。不巧,就是這些漏網(wǎng)之魚往往成為我們自動(dòng)化實(shí)施中的那些梗。本文主要介紹我們測試團(tuán)隊(duì)在Appium UI自動(dòng)化實(shí)施過程遇到的梗,以及對(duì)應(yīng)的解決方法。
自動(dòng)化測試
Appium自動(dòng)化框架
我們這里先簡單介紹下Appium。Appium是一個(gè)移動(dòng)端的自動(dòng)化框架,可用于測試原生應(yīng)用,移動(dòng)網(wǎng)頁應(yīng)用和混合型應(yīng)用。Appium的核心是一個(gè)遵守REST設(shè)計(jì)風(fēng)格的web 服務(wù)器,它接受客戶端的連接,接收客戶端的命令,在手機(jī)設(shè)備上執(zhí)行命令,然后通過HTTP的響應(yīng)收集命令執(zhí)行的結(jié)果。這種架構(gòu)給我們提供了很好的開放特性:只要某種語言有http 客戶端的api,我們就可以通過這個(gè)語言寫我們的測試代碼。
自動(dòng)化過程
自動(dòng)化過程廣義上來講是對(duì)測試過程的一個(gè)建模,就是說通過測試腳本來模擬手工測試的過程。測試過程的三要素是:前提條件,測試步驟,結(jié)果校驗(yàn)。那么對(duì)應(yīng)的自動(dòng)化測試過程也應(yīng)該包含這三個(gè)要素。我們?cè)趯?shí)施自動(dòng)化的過程是怎么體現(xiàn)這三個(gè)要素的呢?這里可以看下一個(gè)典型的測試腳本。
從上面的測試腳本我們可以看出,我們自動(dòng)化測試是通過找到對(duì)應(yīng)的元素,然后執(zhí)行相應(yīng)的動(dòng)作,即可達(dá)到自動(dòng)化的效果。但這個(gè)過程只是最基