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