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