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