全文共3201字,預計學習時長9分鐘
最近,我與微軟的高級軟體工程師KlausHemstitch進行了交談。過去7年裡,Klaus Hemstitch一直在微軟的Office 365團隊工作。每天他的團隊要確保所有的網絡組件能在每個主流瀏覽器上正常工作。我很想知道在構建可擴展且有益的自動化測試時,他們如何解決那些困難的任務。
· 您在微軟工作多久了?以前在哪裡工作?
我從2013年開始在微軟工作,之前在奧多比(Adobe)工作了3年。
· 您目前的工作職責是什麼?
我們的團隊負責Office365中大部分網絡組件的功能自動化測試。
· 在這些工作任務中最大的挑戰是什麼?
最大的挑戰無疑是跨瀏覽器測試。我們要確保一切都是完美無缺的,能在Chrome, Firefox, Safari, Opera, Internet Explorer, Edge和移動瀏覽器上正常工作。
· 你們為什麼還支持IE瀏覽器?它和原來一樣嗎?
我們將於2021年8月17日正式停止支持IE瀏覽器。但這並不意味著我們將停止對它的測試,因為我們應該最先知道它哪裡出了問題。很多企業仍在使用IE瀏覽器,並且會繼續使用很多年。許多遺留系統依賴IE瀏覽器,甚至有些企業不允許員工使用其他瀏覽器。
· 您如何看待測試用的無頭瀏覽器?
使用無頭瀏覽器無疑是一種糟糕的做法,因為與常規瀏覽器相比,它在某些情況下的運行往往略有不同。我們一直在安裝Windows和Mac的機器和行動裝置上使用真正的瀏覽器。
當收到一份關於產品缺陷的報告時,如果回覆說「等等,我先手動檢查一下,因為我們的腳本使用的是無頭版本的Chrome。」那是很尷尬的。
· 您會使用Selenium還是Playwright?
都不使用。我們會採取不一樣的解決方法。如果你在5年前問我,我可能會選擇Selenium,但事物總在不斷變化。使用Selenium來構建內部測試框架意味著要重造wheel文件,這會使ROI很糟糕。
· 可以告訴我們這個解決方法是什麼嗎?這是機密嗎?
不是機密,我們會使用Endtest。
· 為什麼使用Endtest?
一年前我們做了一個全面的分析,內容涵蓋了易用性、靈活性、協調性、跨瀏覽器功能、ROI、可靠性等方面。完成POCs並計算完數據之後,我們就很明確應該使用什麼。到目前為止一切都很好。這似乎是目前唯一的解決方案,可以自然地進行跨瀏覽器測試。
我們可以直接創建測試並在所有瀏覽器上運行,無需像Selenium一樣加入額外的調整。我喜歡它的另一個原因是它可以用來測試電子郵件,簡訊,PDF文件以及API請求。
· Endtest是無代碼工具,這不會降低靈活性嗎?
並不會。這可能是21世紀初的舊測試記錄儀導致的錯誤觀念。自動化測試需要變量,if語句,循環以及可重用組件等。這些Endtest都有,它和許多腳本語言一樣靈活。選擇語言或工具時,靈活性固然很重要,但並不是最重要的。如果這是最重要的,那我們現在可能還在寫機器代碼。
· 你們每天進行多少次測試?
這裡我只算功能性測試。它取決於多個因素以及我們有多少個提交,每天至少幾千次吧。
· 我們往回聊一聊。你們為什麼不使用Playwright呢?
我知道你為什麼問我這個問題,因為Playwright是微軟開發的。有幾個原因。
Playwright相當於一個網絡程序庫,好比它可以給我們提供磚頭,但我們仍然要自己建房子。所有這些「創建」都需要時間和資源。我們認為開發人員應該把時間花在開發公司銷售的產品上,而不是花在開發內部工具上。而且它的內部測試框架會使ROI非常糟糕。
· 為什麼ROI對自動化測試非常重要?
投資回報率(ROI)對任何事物來說都很重要。幾年前團隊自動化測試所使用的工具或網絡程序庫是由一小部分人決定的。他們不會去計算執行成本之類的東西,只會說「噢,這個看起來很酷,我們就用它吧。」
這是一個可怕的趨勢,它催生了大量科學怪人般的自動化工程師,構建了過於複雜和不可靠的內部測試框架。這些框架總是處於「差不多」的狀態,沒有太大的價值。有些工程師在工作上戒心很重,他們會扭曲所有的邏輯只為防止項目被拋棄。
如今這樣的情況已經改變了,越來越多的人參與到這些決策中,最佳實踐和真正的項目管理已經應用到這些自動化工作中。
如果這個概念難以理解,那我們來看一個例子:哪種選擇更有意義?使用像Zoom這樣的視頻會議工具,或者使用WebRTC從頭開始構建一個內部視頻會議工具。
WebRTC是開源且免費的,但是構建內部視頻會議工具需要數月,這會給僱主帶來巨額支出。就像我前面說的,重造wheel文件會帶來糟糕的ROI。
· 無障礙可訪問性有多重要?
我們一直覺得它很重要,但我感覺很多公司並沒有認真對待它。不久的將來這種情況應該會發生改變,我希望與GDRP類似的無障礙立法能得到廣泛的應用。開發人員需要了解它的含義。在元素中添加標題屬性可使網站與屏幕閱讀器兼容,但如果沒有在所有主流瀏覽器上進行測試,網站的可訪問性得分就會被破壞。
雖然有視覺障礙的用戶可以使用該網站,但由於只在Chrome進行測試,使用Firefox、 Safari 或 Edge的用戶就無法訪問了。準確的定義如下:無障礙可訪問性是指讓儘可能多的人能夠使用你的網站。
· 你們會圍繞更新進行測試嗎?
萬幸我們有足夠的資源,不需要使用這種方法。我們每時每刻都在測試所有的內容。但對於沒有資源可以支持時刻完全復原的團隊來說,圍繞更新進行測試是一個可以接受的技巧。
· 您如何看待測試趨勢?
這取決於是什麼趨勢。我曾見過營銷預算推動下的糟糕趨勢,將缺陷偽裝成良好的實踐,這簡直是噩夢般的東西。
我腦海中最先想到的一個例子是,有一家公司創建了一個用於自動化測試的產品,它的架構非常糟糕,甚至不能同時打開多個瀏覽器標籤。這主要是因為它過於依賴JavaScript。我們都知道,當JavaScript想要打開另一個瀏覽器標籤時,原本的瀏覽器會產生牴觸。
他們掩蓋了這個缺陷,說我們不需要測試一個連結是否真的能在一個新的瀏覽器標籤打開一個頁面,因為這實際上是在測試瀏覽器而不是網站。他們說只需要檢測target=」_blank」的屬性。按照這個扭曲的邏輯,測試時只需要檢測滑鼠點擊這個動作能否完成,不需要進行任何點擊操作。
我還見過另一個工具,它通過在Chrome上測試網站,在每個步驟獲得DOM,並將這些DOM轉儲粘貼到其他瀏覽器中來實施跨瀏覽器測試的想法。我不明白為什麼會有人想出這麼可怕的主意。我希望在不久的將來無障礙可訪問性可以成為趨勢。
· 對於希望改進功能自動化測試的團隊,您有什麼建議嗎?
跨瀏覽器測試很重要,不是每個人都會在蘋果筆記本電腦上使用Chrome。瀏覽器不僅僅是JavaScript的解釋器。無頭瀏覽器的運行可能與常規瀏覽器不同。
Chrome在Linux系統和Windows系統上的運行也可能不同。測試整個工作流程。如果您的網站在執行某個操作時正在發送電子郵件,請檢驗該電子郵件是否正常發送。如果那封郵件有按鈕,點擊並查看所跳轉的頁面是什麼。
用最新的工具,傻瓜才會去重造wheel文件。
留言點讚關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範