對于測試范圍的形式,谷歌并沒有使用通用的代碼測試、集成測試、系統(tǒng)測試這些常用術(shù)語來做區(qū)分,而是使用小規(guī)模測試、中等規(guī)模測試、大規(guī)模測試這樣的稱呼【譯者注:代碼測試(code testing), 通常指單元測試和API級別的測試,一般使用XUnit、Gtest框架,但谷歌并沒有使用代碼級別測試這種說法】。小規(guī)模測試是針對小量代碼的測試,中等規(guī)模測試、大規(guī)模測試以此類推。所有的三種工程師角色【譯者注,軟件開發(fā)工程師、軟件測試開發(fā)工程師、軟件測試工程師,參見本系列第二篇】,都會去執(zhí)行上面的三類測試,可能是自動化的測試,也可能是手動測試。

  小規(guī)模測試,通常(但也并非所有)是自動化的,一般是針對一個單獨的函數(shù)或者模塊。這種測試一般由軟件開發(fā)工程師【SWE】或者軟件測試開發(fā)工程師【SET】來實現(xiàn),通常在運行的時候會依賴模擬環(huán)境,當(dāng)軟件測試工程師【TEs】需要去診斷定位一個特定錯誤時,會去篩選一些小規(guī)模測試集合并運行來驗證特定問題。對于小規(guī)模測試,主要集中在常見功能問題驗證上,例如數(shù)據(jù)損壞、錯誤邊界、發(fā)生錯誤時如何結(jié)束等。小規(guī)模測試嘗試去解決的問題是,代碼是否按照其假定的方式運行。

  中等規(guī)模測試,可以是自動化的或者手動的,涉及到2個及以上功能模塊,特別是要覆蓋這些功能模塊之間交互的地方。有不少軟件測試開發(fā)工程師【SET】把這種測試描述成“測試一個函數(shù),以及它近的鄰居們”【”testing a function and its nearest neighbors.”】。軟件測試開發(fā)工程師在獨立的功能模塊開發(fā)完畢后會驅(qū)動進(jìn)行這種測試,軟件開發(fā)工程師是寫這些測試代碼、并調(diào)試和維護這些測試的主要力量。如果一個測試用例運行失敗或者運行錯誤,相應(yīng)的開發(fā)會自動地跳出來查看處理。在開發(fā)周期的后期,軟件測試工程師會運行這些中等規(guī)模測試,可能是手動的方式(如果很難或者需要投入比較大成本去自動化的時候)或者自動化的方式去運行。中等規(guī)模測試嘗試去解決的問題是,一些相近的交互功能模塊組合在一起是否和預(yù)期一致。

  大規(guī)模測試,涵蓋三個及以上(通常更多)功能模塊,描述終用戶的使用場景及其可能擴展。所有的功能模塊集成為一個整體的時候需要去關(guān)心許多問題,但在谷歌,對于大規(guī)模測試,更傾向于著重結(jié)果,例如,這個軟件是用戶期望的那樣么?所有的工程師都會參與到大規(guī)模測試中,無論是使用自動化還是探索性測試方法。大規(guī)模測試嘗試去解決的問題是,這個產(chǎn)品運行地是否是終用戶期望的那樣。

  小規(guī)模測試、中等規(guī)模測試、大規(guī)模測試這些術(shù)語本身其實并不重要,你可以給它們?nèi)∪魏文阆氲拿Q。對于谷歌的測試人員來說,有了這樣一個統(tǒng)一的稱謂后,可以使用這些稱謂來討論正在進(jìn)行什么樣的測試以及其測試范圍。有一些雄性勃勃的測試人員也會談到第四種測試,被稱為超級大規(guī)模測試,公司的其他測試人員可以認(rèn)為這樣的測試是一個非常大的系統(tǒng)級別的測試,涵蓋到幾乎所有的功能而且會持續(xù)很長的時間,其他的解釋都會比較多余了。

  哪些需要被測試及測試范圍的確定,這是一個動態(tài)變化的過程,在不同的產(chǎn)品之間會有比較大的差異。谷歌更傾向于頻繁發(fā)布,從產(chǎn)品的外面用戶那里得到反饋之后再迭代開發(fā)。如果谷歌開發(fā)了一些產(chǎn)品,或者在已有產(chǎn)品上增加了新功能,會盡可能早地對外發(fā)布并讓外部用戶能使用并從中受益。在這個過程中需要較早地把用戶和外部開發(fā)者牽扯進(jìn)來,并要有一個很好的處理規(guī)則來驗證是否滿足發(fā)布條件。

  后,自動化測試和手動測試,對于所有的三種類型測試【小規(guī)模、中等規(guī)模、大規(guī)模測試】來說當(dāng)然更喜歡前者。如果能夠被自動化,而且不需要任何人智力和直覺判斷,那應(yīng)該把它變成自動化的。只有在特別需要人為判斷的時候,例如用戶的界面是否漂亮、或暴漏一些涉及用戶隱私的內(nèi)容時,在這些情況下應(yīng)該保留手動測試。

  話雖如此,對于谷歌來說非常重要的是仍然使用了大量的手動測試,不管是使用文本記錄的方式還是使用探索性測試,雖然有些已經(jīng)進(jìn)入了自動化測試的視線。業(yè)界使用的錄制技術(shù)將手動測試轉(zhuǎn)變成自動化測試,可以在每個版本后自動地重復(fù)運行,這樣保證了少的回歸工作,并把手動測試的重點放在新問題上。而且,谷歌已經(jīng)將提交BUG的過程和一些手動測試的日常工作也自動化了,例如,如果一個自動化測試運行失敗,系統(tǒng)會自動檢測到后一次代碼變更的信息,一般來說這是引起測試失敗的原因,系統(tǒng)會給這次代碼提交的作者發(fā)送一封通知郵件同時自動創(chuàng)建一個BUG來記錄這個問題。在測試上,“人類智慧的后一英寸”體現(xiàn)在測試設(shè)計上,谷歌的下一代測試工具也正在這個方向上努力嘗試,將其自動化。

  這些工具在以后的文章中會被提及強調(diào)。不過,下一篇文章還是會將重點放在軟件測試開發(fā)工程師【SET】的工作上。希望能得到你的持續(xù)關(guān)注。