Jayden過去兩年一直在亞馬遜擔任首席軟體工程師。
我想更多地瞭解他們的測試方法。
確保如此複雜的網站在所有瀏覽器中都能無縫執行並不是一件容易的事。
他所在的團隊負責處理一些面向使用者的元件。
1.您在亞馬遜之前在哪裡工作?谷歌。我曾在YouTube團隊任職,從2015年開始在那裡實習。
2.您目前的職務是什麼?我是首席軟體工程師。我目前正在研究一些用於購買產品的面向使用者的元件。
3.測試方面最大的挑戰是什麼?跨瀏覽器 測試。所有元件都必須在不同的瀏覽器(包括Internet Explorer和Safari)上看起來和完美配合。
4.為什麼您仍支援Internet Explorer?資料顯示,我們有一定比例的使用者使用Internet Explorer。我們不能只是讓那些使用者失望。
5.當你到達那不是很震驚嗎?不,當我在Google時,我們也必須支援Internet Explorer。在那裡工作的人們的心態是,一個好的網站應該在所有瀏覽器中都可以正常工作,沒有人對此感興趣。
6.您是否曾經進行過手動測試?是的,一個很好的例子是探索性測試,您不能真正實現自動化。但是我們所有的功能測試都是自動化的。這使我們可以經常釋放而不會精神崩潰。
7.您的團隊使用的是硒,賽普拉斯還是木偶?沒有。我們探索了這些庫並進行了POC,結果並不令人鼓舞。
8.您能告訴我們為什麼嗎?原因不同。
硒很難管理。它支援所有主要的瀏覽器,但沒有對它們的即插即用支援,您需要為每個瀏覽器的某些操作編寫不同的邏輯。
賽普拉斯非常有限。在Internet Explorer和Safari上不起作用。它不適用於多個瀏覽器標籤。它不支援諸如懸停之類的本地事件。要使其與基本的iframe一起使用,需要進行許多易碎的操作。
亞馬遜上沒有人會使用賽普拉斯。
Puppeteer還沒有太多的跨瀏覽器支援,並且仍然需要大量工作。
9.您正在使用什麼庫或工具?去年,我們的團隊一直在使用Endtest。
10.是什麼導致您做出這個決定?選擇工具時,我們總是從各個角度進行分析:靈活性,易用性,投資回報率,可靠性等。
去年我們進行了概念驗證,進展非常順利。
就我個人而言,我喜歡它本身就可以處理跨瀏覽器測試的事實,因此無需額外的駭客。
它使我們可以花更多的時間來構建產品,而不必重新發明輪子和構建自己的內部測試框架。
11. Endtest是一種無程式碼工具,您是否需要更多靈活性?在構建功能性自動化測試時,您需要變數,if語句,迴圈和重用步驟的能力。
Endtest具有所有這些功能,它與大多數指令碼語言一樣靈活。
靈活性很重要,但這並不是唯一要考慮的事情。
如果我們僅基於靈活性選擇語言和庫,則會得出結論,我們必須編寫機器程式碼(一和零)。
12.為什麼這麼多團隊仍在編寫自己的測試框架?我相信,如今這種情況只會發生在較小的公司中,
在過去的三年中,我從未聽說過像亞馬遜,Airbnb,谷歌,Stripe,Instacart,PagerDuty這樣的公司做出過這樣的努力。
從歷史上看,我認為您可以在2000年代初找到原因。
您有這些舊的測試記錄儀,它們真的很差,並使用螢幕座標或影象識別來識別元素。
因此人們透過將不同的庫(例如Selenium)拼接在一起,開始構建自己的內部測試框架。
這些內部框架中的絕大多數(我們稱其為Frankenstein博士框架)始終處於“幾乎準備就緒”的狀態。
我聽到了很多故事。
您有1到2名防禦人員在該內部測試框架上工作了數月或數年,直到它成為無法使用的龐然大物為止。
然後其他人出現,並使用不同的語言或庫開始相同的過程。
13.為什麼您認為團隊最終會做出如此糟糕的決定?進行徹底的分析可以防止此類錯誤。
您可以先考慮投資回報率。
您花了多少時間和資源進行這項工作,以及您將從多長時間開始從這項工作中獲得回報。
讓我們看一個基本的例子。
您的公司需要一個影片會議工具,您需要選擇每月支付18美元的Zoom訂閱費用,還是使用WebRTC構建自己的影片會議工具,WebRTC是Google的免費開源專案。
開發人員可能會選擇第二個選項,因為它聽起來更有趣,更有趣,他們可以在簡歷中新增一些東西。
他們可能會在7個月內完成。
如果您將決定權交給那個人,那麼您的公司將花費大量資源進行這項工作,並且如果一切順利並且最終不會一團糟,他們將只能在7個月後使用它。
這正是某些公司內部測試框架正在發生的事情。
當涉及內部工具時,重塑輪子始終是一個壞主意。
14.亞馬遜的可訪問性有多重要?我想這對我們至關重要。
對於任何公司而言,這都至關重要,因為這意味著使您的產品可供儘可能多的人使用。
當有人進行關於可訪問性的網路研討會時,我大笑著忘了提及Internet Explorer。
新增標題屬性並使顏色更友好,將使您的網站對視力障礙者更加有用和友好。
但是,如果您忘記檢查您的網站是否可以在除Chrome和Firefox之外的其他瀏覽器中執行,則基本上表明您根本不在乎大量使用者的體驗。
15.您如何看待無頭瀏覽器?我們不使用無頭瀏覽器,因為我們遇到的問題只能在非無頭瀏覽器中重現。
想象一下這樣一種情況:使用者報告Windows上的Chrome上的生產錯誤,而您僅在Linux容器中的無頭Chrome瀏覽器上執行測試。
我們在Windows,MacOS計算機和移動裝置上執行測試,但不在Linux容器上執行測試。
16.您是否在每個發行版之前都進行了所有測試?是的,我們願意。
即使我們只是新增一個小補丁,每個瀏覽器上的每種情況也是如此。
這是有道理的,因為不這樣做將使亞馬遜面臨虧損的風險。
如果您同時並行執行大多數測試,那麼測試所有內容並不那麼耗時。
17.您並行執行多少個測試?超過400,因為有時候我們會發布幾次。
如果我們每週只發布一次,那麼即使並行進行20個測試,我們也可以進行管理。
18.真實資料還是假資料?偽造看起來真實的資料。
我們沒有邏輯上的理由在測試中使用真實資料,我們擁有自己的虛構使用者,產品,清單等。
19.您如何測試電子郵件?我們實際上是在傳送真實的電子郵件,並在測試中開啟它們。
我們將為每個新使用者生成一個隨機的電子郵件地址,並使用Endtest Mailbox自動測試傳遞的電子郵件。
這使我們可以直觀地檢查電子郵件並與電子郵件中的元素進行互動。
簡訊,去掉可視部分也一樣。
20.您如何處理地理位置測試?我們在至少50個不同的地理位置進行測試。
這對我們來說真的很重要,因為某些國家/地區要求供應商或購物者提供更多資訊。
我們正在使用由同一工具提供的Real IP Geolocation系統。
即使英語是您網站上的唯一語言,並且內容在所有國家/地區都是完全相同的,您仍應進行地理位置測試,因為在某些情況下,當您從第三方網站訪問時,您正在使用的第三方指令碼可能會麻煩很多不同的國家或大陸。
我聽說過某個網站從歐洲訪問時執行正常,然後從美國訪問時崩潰的故事,這是由於某些第三方指令碼引起的。
21.您對希望改進其功能自動化測試的團隊有何建議?在細節上保持靈活性,採取防禦措施會阻止您進行創新。
掌握最新的工具和趨勢,但是如果不進行深入的分析就不要大肆宣傳。
假設時要格外小心,瀏覽器不僅是JavaScript直譯器。
如果您的網站可以在Windows上的Chrome上執行,則並不意味著它可以自動在MacOS上的Chrome或移動裝置上的Chrome上執行。
22.每個團隊應該做的一件事是什麼,但大多數都不應該做?在Safari上進行測試,它是第二常用的瀏覽器。
而且它不會很快消失,它將變得更加流行。
它不斷獲得新功能,蘋果決心從Chrome中獲得更多的市場份額。