亞馬遜如何測試自己的網站?

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden過去兩年一直在亞馬遜擔任首席軟件工程師,他所在的團隊負責處理一些面向用戶的組件。爲了瞭解亞馬遜在測試網站上的細節,我對Jayden進行了一次採訪。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"加入亞馬遜之前,你在哪裏工作?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:谷歌。我曾在YouTube團隊任職,在2015年作爲實習生加入。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你目前的職務是什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:我擔任首席軟件工程師,負責一些用於購買產品的面向用戶的組件。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你們在測試上面臨的最大挑戰有哪些?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:跨瀏覽器測試。所有組件都必須在不同的瀏覽器(包括Internet Explorer和Safari)上有着完美的視覺和運行體驗。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你們爲什麼還在支持IE瀏覽器?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:數據顯示,我們有一定比例的用戶還在使用IE。因此,我們不能讓這些用戶失望。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"當你發現這一事實時,不會感到震驚嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:不,當我在谷歌工作時,我們也需要支持IE。在那裏工作的人們的心態是,一個好網站應該在所有瀏覽器中都能正常運行,沒有人對此抱有疑問。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你們是否進行過手動測試?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:是的,一個很好的例子是探索性測試,這裏你無法真正實現自動化。但是,我們所有的功能測試都是自動化的。這樣我們就可以頻繁發版而不至於精神崩潰。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你的團隊使用的是Selenium、Cypress還是Puppeteer?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:哪個都不用。我們探索了這些庫並做了POC,結果並不令人鼓舞。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你能解釋一下爲什麼嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:原因各有不同。Selenium很難管理。它支持所有主流瀏覽器,但不支持即插即用,因此你需要爲每種瀏覽器的某些操作編寫不同的邏輯。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Cypress的功能非常有限。在Internet Explorer和Safari上無法使用。它不支持多個瀏覽器標籤。它不支持諸如懸停之類的原生事件。要讓它與基本的iframe搭配使用,你需要做大量的改動。在亞馬遜,沒有人會使用Cypress。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Puppeteer還沒有足夠的跨瀏覽器支持,它仍然需要很多改進。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你們正在使用哪些庫或工具?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:去年,我們的團隊一直在使用Endtest。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你們爲什麼選擇這個工具?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:選擇工具時,我們總會從各個角度對其做分析:靈活性、易用性、投資回報率、可靠性等。去年,我們對Endtest進行了概念驗證,結果非常不錯。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"就個人而言,我喜歡它可以原生處理跨瀏覽器測試的優勢,它無需額外的調整。它讓我們可以花更多時間來構建產品,而不必重新發明輪子來構建我們自己的內部測試框架。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"Endtest是一種無代碼工具,你們難道不需要更大的靈活性嗎?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:在構建功能性自動化測試時,你需要變量、if語句、循環和重用步驟的能力。Endtest具有所有這些功能,它與大多數腳本語言一樣靈活。靈活性很重要,但這並不是唯一要考慮的事情。如果我們僅基於靈活性來選擇語言和庫,那麼只能得出結論:我們必須編寫機器代碼(寫一堆0和1)。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"爲什麼這麼多團隊仍在編寫自己的測試框架?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:我相信,如今這種情況只會發生在較小的公司中,在過去3年中,我從未聽說過像亞馬遜、Airbnb、谷歌、Stripe、Instacart、PagerDuty這樣的公司做出過這樣的事情。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從歷史上看,我認爲你可以在2000年代初找到原因。當時,人們使用的是老舊的測試記錄程序,它們真的很差,還在使用屏幕座標或圖像識別來識別元素。因此人們將各種庫(例如Selenium)拼接在一起,開始構建自己的內部測試框架。這些內部框架中的絕大多數(我們稱其爲弗蘭肯斯坦博士框架)一直處於“差一點準備就緒”的狀態。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我聽過很多故事。有的公司安排一到兩名作風保守的員工在內部測試框架上做了數月或數年的工作,直到它成爲無法使用的龐然大物爲止。然後其他人出現,使用不同的語言或庫開始重複相同的過程。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你覺得爲什麼團隊最終會做出如此糟糕的決定?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:進行全面的分析可以防止此類錯誤。你可以先考慮投資回報率,也就是你花了多少時間和資源進行這項工作,以及你將從多久開始從這項工作中獲得回報。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們來看一個簡單的例子:貴公司需要一個視頻會議工具,你需要選擇是每月支付18美元的Zoom訂閱費用,還是使用WebRTC構建自己的視頻會議工具(WebRTC是谷歌的免費開源項目)。開發人員可能會選擇第二個選項,因爲它聽起來更有趣,更吸引人,讓他們可以在簡歷中多添一筆。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但他們可能會需要7個月才完成任務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果你將決定權交給這些人,那麼你的公司將花費大量資源來做這項工作,並且就算一切順利,事情沒有落到一團糟的下場,大家也只能在7個月後纔開始使用它。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這正是某些公司內部測試框架的故事。當涉及內部工具時,重塑輪子永遠是一個壞主意。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"可訪問性對亞馬遜來說有多重要?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:我想這對我們而言至關重要。對任何公司而言,這都非常關鍵,因爲這意味着讓你的產品可供儘可能多的人使用。當有人在做關於可訪問性的網絡研討會時忘了提及InternetExplorer,我會聳聳肩。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"添加標題屬性並讓顏色更友好,能讓你的網站對視力障礙者更加有用和友好。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"但是,如果你忘記檢查自己的網站是否可以在除Chrome和Firefox之外的其他瀏覽器中運行,這就基本上表明你根本不在乎大量用戶的體驗。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你如何看待無頭瀏覽器?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:我們不使用無頭瀏覽器,因爲我們遇到的一些問題只能在非無頭瀏覽器中重現。想象一下這樣一種情況:用戶報告了Windows上Chrome的生產錯誤,而你卻只在Linux容器中的無頭Chrome瀏覽器上運行測試。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們在Windows、macOS機器和移動設備上運行測試,但不在Linux容器上運行測試。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"在每個發行版:前,你們是否對所有內容都做測試?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:是的,我們會這樣做。即使我們只是添加一個小補丁,也會測試每種瀏覽器上的每種場景。這是有道理的,因爲不這樣做將使亞馬遜面臨利潤受損的風險。如果你能並行運行大多數測試,那麼測試所有內容就不會那麼費時。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你們會並行運行多少個測試?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:超過400,因爲有時候我們會一天內發佈多個版本。如果我們每週只發一個版,那麼就算只並行進行20個測試,我們也可以接受。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"測試用的是真實數據還是僞數據?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:僞造看起來真實的數據。我們在邏輯上沒有理由在測試中使用真實數據,我們擁有自己的虛構用戶、產品、列表等。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你們如何測試電子郵件?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:我們實際上是在發送真實的電子郵件,並在測試中打開它們。我們將爲每個新用戶生成一個隨機的電子郵件地址,並使用EndtestMailbox自動測試交付的電子郵件。這讓我們可以直觀地檢查電子郵件並與電子郵件中的元素交互。短消息也一樣,只不過去掉可視部分。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你們如何處理地理位置測試?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:我們至少在50個不同的地理位置上做測試。這對我們而言確實很重要,因爲某些國家\/地區要求供應商或購物者提供更多信息。我們正在使用由同一工具提供的RealIPGeolocation系統。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"即使英語是你網站上的唯一語言,並且內容在所有國家\/地區都是完全相同的,你還是要做地理位置測試,因爲在某些情況下,當用戶從其他國家或大洲訪問時,你正在使用的第三方腳本可能會遇到麻煩。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我聽說過一個網站,用戶從歐洲訪問時運行正常,然後從美國訪問時就崩潰了,這是某些第三方腳本導致的。"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"你對希望改進其功能自動化測試的團隊有何建議?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在細節上保持靈活性,採取防禦措施會阻止你的創新步伐。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"掌握最新的工具和趨勢,但是如果不做深入的分析就不要追趕潮流。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"假設時要格外小心,瀏覽器不僅是一個JavaScript解釋器。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如果你的網站可以在Windows上的Chrome中運行,並不意味着它可以在macOS上的Chrome或移動設備上的Chrome中完美運行。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"請舉出一件每個團隊都應該做,但大多數團隊都沒有做到的事情?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Jayden:在Safari上做測試,它是使用率第二高的瀏覽器。而且它不會很快消失,它將變得更加流行。它在不斷獲得新功能,而且蘋果決心從Chrome中獲得更多的市場份額。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"https:\/\/monica-alma-ramirez.medium.com\/how-amazon-tests-their-website-a-discussion-with-jayden-yang-2e98fea2b9cb"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章