當前位置:
首頁 > 最新 > 谷歌測試定律的啟示

谷歌測試定律的啟示

在軟體測試中,這是一個非常重要的定律。

這個定律的內容並不複雜。它描述了不同的測試級別中,所發現的軟體Bug的解決成本(Fixing Cost)之間的巨大差別。具體來說,隨著測試級別從低級往高級推進(Small Tests -> Medium Tests -> Large Tests,或單元測試 -> 組件測試 -> 集成測試 -> 系統測試),測試中所發現的軟體Bug的解決成本呈指數級增長

那麼,這個重要的定律,對於我們有些什麼樣的啟示呢?如何運用這個定律指導我們更好地開展軟體測試工作?

1,重視低級別的軟體測試

為何要強調低級別測試(前期測試階段)的重要性?在實際中,由於各種因素(測試覆蓋度不夠高、測試力度不夠強、測試工具不夠可靠、測試樣本不夠可信等),軟體Bug可能會遺漏到後續測試階段。但是從理論上說,每個測試階段都有潛力發現盡量多的軟體Bug。通過加大前期測試的投入、優化前期測試的過程、提升前期測試的效果,來減少遺漏到後期測試階段的Bug數量,這條路是可行的。

另外,根據谷歌測試定律,同一個軟體Bug,在後期測試階段被發現,相比在前期測試階段被發現,其解決成本可能要高一個數量級。為了節省公司成本、提高產品質量,我們應該儘可能地在前期測試階段發現更多的Bug。

為此,我們務必要確保前期測試的有效性和覆蓋度。前期測試階段的高度自動化,有助於實現這樣的目標。在總的測試資源有限的情況下,將更多的測試資源投入到前期測試階段是必要的。反過來說,如果前期階段的測試不充分,導致大量本該在前期測試階段被發現的Bug遺漏到後期測試階段才被發現。到時候,我們可能需要投入巨量的人力物力去解決這些Bug。這對部門和公司來說,將是難以承受之重。

2,千方百計縮短測試時間

狹義的測試時間指測試步驟的執行時間,廣義的測試時間指從開發人員提交代碼到獲得測試反饋結果的時間間隔。縮短測試時間,不僅有利於提升軟體測試的生產力(單位時間執行更多的測試),而且有利於提升軟體開發的生產力

很多時候,軟體開發是一個反覆提交代碼的過程。如果測試的驗證速度很快,那麼代碼的提交就會更頻繁,軟體開發的效率也就得到了提高。任何一個測試階段,無論是單元測試還是系統測試,加快測試速度、縮短反饋時間,都是很重要的。在實際中,通過改進系統的可測性、並行或分散式執行測試用例等,可以有效地提高測試速度、縮短測試時間。

3,測試工作要盡可能早地開展

在敏捷時代,測試無須等待軟體開發完成之後才展開,而是與軟體開發同步進行。具體來說,在每個迭代周期,軟體開發致力於交付一個或多個可供用戶使用的功能點。這有助於測試工作的提早介入。測試開展得越早,軟體Bug發現得也就越早,解決軟體Bug的成本也就越低。

在實際中,測試工作的開展不僅受制於軟體開發進度,還受制於測試自身所依賴的外部軟體和工具。通過使用模擬器技術(即Mock),我們可以減少對外部的依賴,不僅避免測試進度受制於人,而且將測試更多地聚焦在被測對象身上。

4,CBRT: 基於代碼改動的回歸測試

所謂CBRT(Change-Based Regression Testing),指的是每次代碼改動均執行回歸測試用例。在軟體開發中,代碼的改動(Change)是常態。新功能實現、Bug修復、代碼重構等都會帶來代碼的修改。回歸測試(Regression Testing)是確保代碼改動不破壞已有功能的重要舉措。然而,回歸測試能不能發揮更大的作用,與回歸測試的執行時間有關係。是代碼每次改動就執行回歸測試,還是許多改動合在一起後再執行回歸測試,有很大差別。前者,回歸測試一旦發現Bug,責任人是清楚的,解決Bug也更容易;而後者,回歸測試一旦發現Bug,單單排查原因、找到責任人就需要耗費大量的時間。因此,代碼一旦發生改動就立即執行回歸測試是很有必要的

在谷歌,考慮到每次代碼改動均執行所有回歸測試(測試集可能非常大)帶來的開銷較大。為此,基於對代碼模塊和測試用例的關聯度分析,在谷歌,每次代碼改動只執行回歸測試子集,即只執行那些可能受到被改動代碼影響的測試用例的集合。

5,對測試遺漏出去的每一個Bug進行EDA

無論前期測試做得如何好,我們都不能百分之百保證不會遺漏Bug到後期測試階段。也就是說,只要後期測試階段發現了軟體Bug,那就意味著前提測試階段具有改進的空間。那麼,如何持續地改進前期測試呢?我們認為,針對每一個遺漏到後期測試階段的軟體Bug,至少有兩件事情是可以做的。首先,開發人員需要做代碼改動,而前期測試人員也應該針對測試用例做改進。這樣,我們可以基於改進後的前期測試用例對代碼改動進行驗證。另外,前期測試人員需要進行EDA(Escaped Defect Analysis),即遺漏問題分析。不僅要分析為什麼問題被遺漏了,更要給出具體和切實可行的改進措施,以舉一反三,避免此類錯誤再次發生。只有持續地改進,我們才能把前期測試工作做得越來越好,從而最大程度減少遺漏到後期測試階段的Bug數量。

理論從實踐中來,又回到實踐中去。谷歌測試定律是從實踐中總結出的測試定律,又反過來指導我們更好地進行測試實踐。關於以上五點啟示,您怎麼看?


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 聊聊測試自動化 的精彩文章:

TAG:聊聊測試自動化 |