圖像對比在大數據功能性測試中的應用

本文章轉載于搜狗測試

測試需求

日常任務中涉及到一些和線上樣式對比的需求,如無線resin版本升級,需要驗證下升級后頁面樣式與線上升級之前的版本頁面樣式展現是否一致,由于無線搜索涉及到的query較多,且不同query對應的結果樣式差別較大,因此通過人工的方式來比較幾乎是不可能的,那如何解決這個問題呢?

技術解決方案

PhantomJS+圖片對比實現無線網頁樣式與線上樣式驗證。

涉及到的技術工具:Python、Phantomjs、Beyond Compare。

PhantomJS簡介

先介紹下什么是PhantomJS,PhantomJS 是一個基于 WebKit 的服務器端 JavaScript API。它全面支持web而不需瀏覽器支持,其快速,原生支持各種Web標準: DOM 處理, CSS 選擇器, JSON, Canvas, 和 SVG。說白了,PhantomJS就是一個沒有UI的瀏覽器。其中頁面中的翻動、點擊需要通過代碼實現。目前PhantomJS已經在網絡爬蟲、web自動測試得到了廣泛應用。這個時候有人就會提出疑問了,一個都沒有UI的瀏覽器,怎么實現圖片對比呢?請看下面的介紹。

Beyond Compare簡介

Beyond Compare是一套由Scooter Software推出的軟件,主要用途是對比兩個文件夾或者文件,并將差異以顏色標示。

腳本的設計過程:

1、設置UA,可以根據我們自己的需求來配置不同的UA;

2、 分別配置無線前端線上、線下的url,通過在本機設置host將wap.sogou.com配置成線下的測試機IP;

配置線上無線前端的url:

配置線下無線前端的測試url:

3、 實現截屏功能,并保存圖片到本地;

4、 實現線上、線下圖片對比功能,將線上url截圖和線下url截圖進行對比,并打印出對比結果。如果完全一致返回結果1,如果存在差異返回浮點數,表示兩張圖片的相似度。

5、 部分測試結果如下:

測試結果驗證

通過腳本,發現了不同的圖片,那如何來驗證呢?

推薦一款圖片對比的軟件:Beyond Compare,可以對比失敗的case具體有什么異同, 如第一個case:

上面兩張為原圖,下面一張為對比后的結果。

可以看到線上的環境中有一個廣告,線下環境中沒有展現,最終影響了圖片對比度,由于廣告每次返回的內容有可能不一致,在某些情況下廣告的展現不在測試范圍之內,PhantomJS可以在訪問url之后調用js將線上廣告結果的div隱藏掉,方法如下:

A)定義js:

B)執行js:

執行js后再將圖片對比,發現case通過:

再次用Beyond Compare對比下,效果如下:

總結下該方法的優點:

1、case設計幾乎沒有門檻,只要有query就可實現,不用檢測頁面元素;

2、case失敗后定位問題非常好定位,直接對比圖片即可;

3、一個case可以驗證結果頁中的所有結果,覆蓋面大;

4、效率較人工檢驗有很大提高,一個query整體時間花銷在2s左右,完全一致的case不再需要人工校驗,只需要關注異常case,節省了大量的測試時間;

5、個別case人工不易發現,比如我們對比結果的第六個query,對比度結果為0.86,如果人工比較的話不易察覺,對比如下圖:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文章轉載于搜狗測試 在互聯網應用高速發展的時代,為了提供高可用、安全、高效的服務,發布應用前會從技術的角度對后臺...
    夜境閱讀 2,149評論 0 2
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • 總有一千萬種不甘 好不容易揮舞了青春 卻背棄了理想 又背棄了現實 走向了盛夏 但像夏蟬瀕臨初秋 在這好似溫暖的冬日...
    蘇shi閱讀 247評論 1 4
  • 一對夫婦,婚后不久懷孕了,全家歡喜異常,細心呵護,滿懷期待。天有不測風云,臨近預產期時太太卻不慎摔倒,緊急送到醫院...
    賢春閱讀 336評論 0 0
  • 本文為作者根據日常使用結合Gson源碼注釋及wiki所作的原創內容,轉載請注明出處。 該系列其它文章 你真的會用G...
    怪盜kidou閱讀 78,509評論 119 213