在對(duì)安卓手機(jī)設(shè)計(jì)自動(dòng)化測(cè)試用例的時(shí)候,判斷一個(gè)測(cè)試場(chǎng)景是否可以自動(dòng)化的依據(jù)在于其是否需要人的參與。對(duì)于wifi能否自動(dòng)打開關(guān)閉,短信能否自動(dòng)收發(fā)這樣的場(chǎng)景,不需要人參與就可以通過(guò)程序來(lái)判斷,因此對(duì)Wifi與短信這樣的測(cè)試,可以通過(guò)程序來(lái)實(shí)現(xiàn)自動(dòng)化測(cè)試。但是另外還有一些測(cè)試場(chǎng)景,需要人的眼睛來(lái)看,這種場(chǎng)景要實(shí)現(xiàn)自動(dòng)化就比較困難。
需求分析
使用安卓的瀏覽器訪問(wèn)一個(gè)網(wǎng)站,如何判斷網(wǎng)站已經(jīng)加載成功?目標(biāo)網(wǎng)站確實(shí)已經(jīng)收到了請(qǐng)求,也返回了HTML數(shù)據(jù),手機(jī)也收到了網(wǎng)站返回的數(shù)據(jù),但是不知道什么原因,在某些時(shí)候,瀏覽器上面卻什么都沒有顯示,而瀏覽器輸出的Log卻完全看不出異樣。對(duì)于這樣的場(chǎng)景,為了減少人力開銷,如何讓測(cè)試程序自動(dòng)發(fā)現(xiàn)網(wǎng)頁(yè)沒有加載成功,并通知開發(fā)者?
這個(gè)需求可以使用計(jì)算機(jī)圖像識(shí)別來(lái)實(shí)現(xiàn)自動(dòng)化。
設(shè)計(jì)思路
由于這個(gè)需求只需要判斷網(wǎng)頁(yè)是否加載成功,因此并不需要非常高深的圖像識(shí)別的理論。對(duì)一個(gè)網(wǎng)頁(yè)來(lái)說(shuō),所謂的加載成功就是指它里面的內(nèi)容能夠正常地在瀏覽器中顯示出來(lái)。因此,可以設(shè)計(jì)一個(gè)特別的網(wǎng)頁(yè),網(wǎng)頁(yè)要足夠簡(jiǎn)單,但是又要足夠特別,從而方便圖像識(shí)別。
這篇文章將會(huì)使用一個(gè)純綠色的網(wǎng)頁(yè)來(lái)進(jìn)行測(cè)試。網(wǎng)頁(yè)加載完成以后,手機(jī)屏幕上絕大多數(shù)的區(qū)域是綠色的。這個(gè)時(shí)候,截取屏幕,并使用程序來(lái)識(shí)別這張截圖。如果發(fā)現(xiàn)截圖中有大面積的綠色區(qū)域,那就證明網(wǎng)頁(yè)已經(jīng)加載完成了。
Demo實(shí)現(xiàn)
純綠色的網(wǎng)頁(yè)
創(chuàng)建一個(gè)“greenpage.html”,它的代碼如下:
<html><head> <title>Green Page</title></head&