嵌在客戶端裏的網頁怎樣自動化測試 ----- 一個三年前的問題的解答

三年前的一次面試中我被問及,怎樣自動化測聊天PC客戶端軟件裏內嵌的網頁。
 
具體來講,他們的產品是某網站的聊天工具。聊天工具備PC端,PC端內部有嵌入一些網頁。
問我怎樣作自動化測試。
 
我曾經被這個問題難倒過。
由於我那時只會用selenium,面試官先問我selenium會到啥程度,再問我遇到非通用的瀏覽器,selenium不支持的話怎麼辦。
而後問我怎麼用selenium實現某個自定義瀏覽器的driver。
 
最後問我,怎樣自動化測試他們這個內嵌有網頁的桌面程序。
 
如今回想了一下。
忽然有了答案。首先實現一個webdriver是沒有必要的。selenium的做者使用webdriver這種奇怪的代碼組織方式是爲了兼容性。在只須要測單個自定義瀏覽器的狀況下,根本不須要對這個瀏覽器去開發一個webdriver。若是要測的是瀏覽器自己,須要開發人員開放一些接口,而要測的若是是瀏覽器裏顯示的網頁,根本不須要用這個瀏覽器來自動化測試。
 
下面是個人答案,僅供參考:
 
首先,把待測的軟件劃分爲兩個部分,一個是網頁,一個是客戶端。
待測的用戶場景分爲3類。只和網頁有關的、只和客戶端有關的、客戶端和網頁交互的。
 
當測試只和網頁有關的場景時,能夠用普通瀏覽器打開該網頁,進行自動化測試。
當測試只和客戶端有關的場景時,須要客戶端提供對應的接口,在測試腳本里調用對應的接口。接口的例子:好比點擊某圖標之類的。也就是轉化成接口測試來編寫和執行。
當要測二者交互的場景時,明確咱們到底要測網頁,仍是測客戶端,仍是一塊兒測,
 
只測網頁時,採用mock的客戶端+真實的網頁----技術方案用通常的selenium之類的就好了。
只測客戶端時,採用mock的網頁+真實的客戶端-----技術方案同接口測試。
兩個一塊兒測時,就用真實的網頁+真實的客戶端----技術方案就是接口測試和selenium混合。 
 
綜上,再把問題擴展和通常化,
在須要單獨測一些模塊的時候引入合理的mock代替外部系統,
在須要集成不一樣模塊時,採用統一的編程語言和不一樣的庫處理不一樣的邏輯(好比桌面端和web端的不一樣邏輯)。
如此,無論是桌面端、web端、移動端,無論什麼端的自動化測試均可以混合起來作。也均可以孤立開來使用mock單獨測。
相關文章
相關標籤/搜索