多瀏覽器行為同步的手工兼容性測試方法
背景:
在瀏覽器的手工兼容性測試中,為了測試兼容性,需要測試人員手工在各個瀏覽器中分別、重復的進行相同操作,既效率低下,又讓測試人員感到枯燥。
問題:
自動化測試可以讓測試人員脫離枯燥的測試行為,提升測試效率,但自動化測試更關注業務功能的驗證,對于頁面兼容性不如手工測試直觀、有效。
解決方案:
將測試人員在某一瀏覽器的操作行為,即時同步到其它瀏覽器中,這樣測試人員只需要在一種瀏覽器中進行操作,就能同時看到其它瀏覽器中進行相同操作的效 果。這樣既避免了測試人員在不同瀏覽器中分別進行相同操作的枯燥,同時有效地提升測試效率,并且能夠直觀、有效的監控到各瀏覽器頁面的兼容性。
原理分析:
用到的技術:Javascript、鼠標/鍵盤事件、套接字Socket、XMLHttpRequest、Selenium-WebDriver
1)整體框架
整體框架分為Server端和Client端,如下圖所示:
注:圖中的XHR為XMLHttpRequest對象。
上圖中,首先對document注入js,綁定鼠標事件和鍵盤事件,對當前被操作瀏覽器的行為進行捕獲;通過XHR實現Server端和Client端 (即當前被操作瀏覽器)一對一的消息交互;各個瀏覽器進行通信之前,為每個請求創建socket實例,接收當前被操作瀏覽器發送過來的消息,并運用 Selenuim-WebDriver擴展開發將該行為同步到其他瀏覽器,達到在不同瀏覽器上的兼容性測試。
2)流程
流程分為兩大部分:瀏覽器行為捕獲和各個瀏覽器間的行為同步,其中行為捕獲有捕獲和記錄兩個動作,行為同步是通過Socket通信機制和Selenuim-WebDriver擴展開發來實現的,具體如下:
捕獲:通過對document注冊mousedown和keydown事件,當監聽到事件發生時,獲取當前對象的path或者keycode。同時綁定 blur事件,當鼠標點擊的元素為input時觸發,獲取input對象的value值,即輸入框中輸入的內容。 path/keycode和value通過XMLHttpRequest傳給Server端,供各個瀏覽器通信用。當前被操作瀏覽器的每一次操作,都會通 過創建XMLHttpRequest實例,向指定的服務器端口發送。
行為同步:在各個瀏覽器開始通信之前, 要建立當前被操作瀏覽器和其他瀏覽器之間的連接。需要服務端在監聽到請求之后,為每個請求創建socket實例,將當前被操作瀏覽器發送過來的消息 (path/keycode和value)接收,通過Selenuim-WebDriver擴展開發反饋給其他瀏覽器進行同步操作。
后續規劃:
目前一期產品已經發布,可以同時同步的瀏覽器有IE/ForeFox/Chrome/Safari/360/Sougou/World
1)網絡版,支持本機同步到虛擬機,用于IE6/7/8/9的兼容性測試
2)提升用戶體驗,添加其他常用功能
3)截圖對比,減少人肉工作量,提高效率
4)錄制功能
posted on 2012-09-03 11:01 順其自然EVO 閱讀(1479) 評論(1) 編輯 收藏 所屬分類: web 前端性能測試