天天看點

《Google軟體測試之道》—第2章2.5節與Web Driver的建立者Simon Stewart的對話

本節書摘來自異步社群《google軟體測試之道》一書中的第2章2.5節與web driver的建立者simon stewart的對話,作者【美】james whittaker , jason arbon , jeff carollo,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

2.5 與web driver的建立者simon stewart的對話

simon stewart是webdriver的建立者,也是google在浏覽器自動化領域的專家(譯注:simon于2013年離開google加盟facebook)。webdriver是開源web應用自動化測試工具,不僅在google内部,在業内也廣受歡迎,也是gtac(google測試自動化大會)曆史上最熱門的話題之一。我們的采訪記者和simon一起做了這個訪談,simon在這裡讨論了web應用自動化的話題和關于webdriver未來的一些想法。

hgts:好像很多人并不清楚selenium和webdriver之間的差別,你能解釋一下嗎?

simon:selenium是jason huggins在thoughtworks時建立的一個項目。jason那個時候寫了一個web應用,假定使用者使用的浏覽器是ie。這樣做可以了解,因為那個時候ie有百分之九十多的市場占有率。但是他持續不斷的得到使用者回報,指出這個應用在firefox浏覽器上有bug,這個時候他就碰到一個問題,當他修複firefox上的bug的時候會導緻在ie上出現另外的問題。對他來說,selenium是一個可以加速開發應用程式的工具,可以確定每次變更在兩個浏覽器上都可以正常工作。

大概在一年前,或者不到一年的樣子,我真正開始去建立webdriver。但在selenium真正穩定之前,我的主要精力集中在更加通用的web應用測試上。這并不奇怪,我們兩個使用了不同的方法來實作web自動化。selenium在浏覽器内部使用javascript實作,而webdriver使用浏覽器本身的api內建到浏覽器内部。兩種方法各有優劣。例如,selenium可以在瞬間打開一個新的chrome浏覽器,但卻不能上傳檔案或者很好地處理使用者互動,因為它是javascript實作,必須限定在js沙箱之内。由于webdriver建構在浏覽器裡面,它可以突破這些限制,但打開一個新的浏覽器卻比較痛苦。在我們都開始為google工作的時候,我們決定把這兩個內建到一起。

hgts:但我還是聽到人們在分别談論它們。它們還依然是兩個獨立的項目嗎?

simon:對于所有浏覽器自動化工具集,我稱為selenium。webdriver隻是其中的一個工具,官方的名字是“selenium webdriver”。

hgts:那麼google是如何介入進來的呢?

simon:幾年前,google在建立了london office的時候,雇傭了一些thoughtworks的前員工,這些人邀請我去做一個關于webdriver的技術分享。這次分享并沒有給我帶來什麼信心,前排的一個家夥聽着聽着居然睡着了,我在分享的過程中必須與他的鼾聲做鬥争。碰巧的是,這個分享的錄制裝置也壞了。但還是有很多人對此感興趣,于是我們再次被邀請在gtac上做一個沒有鼾聲的分享。之後我很快就加入了google。現在我也知道那個事情的真相了。

hgts:确實,每個人有自己的秘密。說正經的,我們之前也看過你的分享,很難想象有人會睡着。他是我們認識的人嗎?

simon:不,他已經離開google很久了。我們還是假設他前一天晚上熬夜了比較好。

hgts:我們必須從中吸取教訓。大家需要明白,在simon stewart的分享過程中睡覺,對你的職業生涯是非常不利的。自從你加入了google,webdriver是你的全職工作嗎?

simon:不,這隻是我20%的工作。我的主要工作是一個産品的set,雖然我現在還在負責推進webdriver的前進,但已經有外部的貢獻者了,他們做的非常棒。在一個開源項目的早期階段,人們拿過來使用,因為他們需要這樣的項目,而且也沒有其他可以替代的。内在的激勵就是要去貢獻。現在許多webdriver的使用者都在口口相傳如何去使用操作,這些使用者更像是消費者,而不是貢獻者。但在早期,webdriver社群的草根卻在真正地推進這個工具向前發展。

hgts:我們知道故事的來龍去脈了。webdriver在google内部非常受歡迎,這是怎麼開始的?是有試點的項目嗎?有沒有一些錯誤的教訓呢?

simon:這是一個社交網絡産品,在wave團隊最先開始使用。該團隊位于sydney的辦公室,但這個團隊現在卻已經不存在了。wave的工程師嘗試去使用selenium作為他們的測試架構,但是卻無法解決一些問題。wave實在是太複雜了。工程師們很勤奮,找到了webdriver并開始問許多優秀的問題,然後這變成了我20%的時間要處理的事情。他們找到我的老闆,希望我能在去sydney待上一個月,幫助他們建立自己的測試架構。

hgts:我想你當時成功了。

simon:是的,那個團隊很棒,我們把架構做出來了。提出了大量針對webdriver的新需求,這對于其他的團隊也是一個榜樣,webdriver在web應用方面處于領先地位。從那一刻開始,webdriver就再也沒有缺少過使用者,對于我來說,全身心的投入進去也更有意義。

hgts:第一個使用者總是最難的。你是怎麼改進webdriver,并讓它可以在wave團隊工作的?

simon:我使用了一個被稱為ddd(譯注:defect-driven development)的流程,缺陷驅動開發。我總是宣稱webdriver是完美無瑕的,一旦使用者發現了一個bug,我就立刻去修複它,然後再宣布它沒有問題了,更加完美無瑕。這樣的話,可以确定我修複的bug是一些人們真正關心的bug。這對于改善一個已有産品是非常有用的,這可以確定你是在修複最重要的bug,而不是修複人們并不關心的bug。

hgts:你還是webdriver裡唯一的工程師嗎?

simon:不,我們有一個團隊,webdriver是google内部的一個正式項目,并在開源方面非常活躍。随着浏覽器數量、版本和平台的不斷增加,我們告訴大家我們必須很瘋狂,我們每天都在把不可能的事情變成可能。有時候我覺得比較理智的人其實并不适合做我們這個項目。

hgts:在wave項目之後你得到了很多動力。對于使用者來說,是否意味着webdriver替代了舊的selenium的地位?

simon:我想是的。許多原來selenium工程師都去做其他事情了。由于在wave上的成功,我對webdriver也充滿了信心和能量。一些我從來沒有見過的人,如來自德國的michael tam,已經開始在webdriver上做一些重要的工作了,我也很小心地鼓勵這樣的關系模式。michael是第一個我沒有真正見過就有送出代碼權限的人。

其實我并沒有特别地跟進webdriver的擴張。比較明确的是,在實體位置上離我近的團隊,更願意去使用webdriver。我想picasa網絡相冊團隊事實上是第一個真正使用webdriver的團隊,而且是在wave團隊之前,然後ads也開始使用了。在google,不同團隊在使用各自的web自動化架構。chrome在使用pyauto,search在使用puppet(有一個開源的版本叫做web puppeteer),ads使用webdriver,等等。

hgts:webdriver的未來會怎樣?你們團隊有什麼目标嗎?

simon:好吧,目前看起來還有點亂。即便是在幾年前,在市場上還有一個主流的浏覽器,但現在沒有了。ie、firefox、chrome、safari、opera等都擁有了自己的市場。但這還隻是桌面版的而已。在移動端的浏覽器引擎也正在瘋狂地擴張。在2008年以後,許多商用的浏覽器自動化工具把他們都給忽略了,ie除外,這其實是非常不明智的做法。下一步,webdriver會在标準化上發力,這樣可以保證相同的網絡應用代碼在不同的浏覽器上都可以工作。當然,這也需要浏覽器廠商一起參與進來,支援我們的webdriver api。

hgts:這聽起來好像是标準委員會要做的事情。目前有什麼進展嗎?

simon:是的,有一些。很不幸地是,我必須去寫一些英文文檔,而不是編寫代碼了,在w3c裡有一個文檔,所有的浏覽器開發商都會參與進去。

hgts:你希望的未來是怎樣的?未來的浏覽器自動化工具又是如何工作的呢?

simon:我希望他們都消失到背景之中。自動化的api會對所有浏覽器适用,人們不用去擔心這些基礎架構,他們僅僅去使用即可。希望人們能把更多的精力放在他們web應用本身,而不是如何去自動化上。在人們真正忘了webdriver的存在之後,我們就成功了。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。

繼續閱讀