軟體測試中的殺蟲劑效應與金字塔模型

2021-09-28 11:23:36 字數 2611 閱讀 3752

今天包括後面的文章,我們除了聊自動化以外,也來聊一下軟體測試中的一些基礎知識。

基礎知識也非常重要,對手工測試如此,對自動化測試同樣如此。

殺蟲劑效應:

英文名叫pesticide paradox,原本指的是在農場裡為了對付破壞農作物的害蟲,農業專家開發出了對應的殺蟲劑,剛開始效果很好,但是隨著時間的流逝,害蟲適應了殺蟲劑,產生了抗藥性,這些原有的農藥就越來越難殺死害蟲,必須設計新型的殺蟲劑來對付害蟲。

在軟體測試中這個理論是由《軟體測試技術》一書的作者boris beizer在30年前提出的。

在軟體測試中殺蟲劑效應指的是:

如果你不斷重複相同的測試,那麼軟體會對你的測試產生免疫,多個版本迭代下來,最終這些相同的測試用例將不再能發現新的bug。

這是因為幾輪下來,在這些用例覆蓋的領域,bug已經被修復的差不多了,而且在測試人員發現bug的地方,開發人員也會格外關注和小心,這樣最終軟體對這些測試產生了免疫,就很難再發現新的bug了。

那如何防止殺蟲劑效應呢?

1.      根據產品變更,持續維護和更新你的測試用例

不管是大的變更還是瑣碎的變更,都要及時增加相應的新用例;並分析對已有功能的影響,修改受影響的現有用例。

2.      改變原有測試資料

在實際工作中,我們會發現,有很多生產環境的bug都是和具體資料相關的缺陷,所以在原有測試資料發現缺陷越來越少甚至發現不了缺陷的情況下,應該嘗試去增加或者更新一下舊的測試資料。

3.      同行測試

讓同行,可以是測試同行、也可以是產品經理、運維人員、甚至是新人等,參與進來進行測試,他們會從一些新的視角,嘗試一些新測試場景,發現一些新的bug。

4.      減少已經有殺蟲劑效應的測試用例或者降低它們的優先順序

比如對於一些用例來說,他們在10次回歸測試中都沒有發現bug,這個時候就要review評審一下這些用例,說明系統已經對它們產生了殺蟲劑效應,除了冒煙測試級別的用例外,就要適當減少這些用例的數量,或者降低這些用例的執行優先順序。

因為隨著時間推移,系統逐漸變的龐大,這些用例的數量也將越積累越多,他們在每次回歸中可能都會占用很大比例的執行時間,一般來說如果這些用例在5次回歸執行中都沒有發現缺陷,就要考慮減少他們的數量或者降低它們的執行優先順序,以提公升測試執行的效率,同時保證測試質量。

金字塔模型:

金字塔模型大約是在10年前,隨著敏捷流程的出現,由敏捷專家mike cohn提出的。

金字塔模型是對整個軟體開發過程中所有測試工作的乙個理想指導模型,不僅涉及測試工程師的測試工作,同樣涉及開發人員的測試相關工作,尤其適用於當前敏捷模式中的自動化測試。

金字塔模型把整個開發流程中的所有測試由底到上分成了三大型別:

單元測試是基於**層面的測試,重點在於驗證某個**單元的功能是否正確,屬於白盒測試範疇,一般由開發人員自己進行。

整合測試的重點是測試元件與元件之間,模組與模組之間,或者更大的系統與系統之間的整合情況,屬於灰盒測試的範疇,根據情況一部分可以由開發人員進行,一部分可以由測試人員進行。

ui測試的重點在於在ui層模仿使用者使用系統,驗證系統是否符合使用者需求,屬於黑盒測試的範疇,一般由測試人員進行。

金字塔模型給出了在整個專案開發中,這三大測試型別的理想佔比:

單元測試的比重應該佔70%以上,

整合測試的比重佔20%左右,

ui層測試的比重小於10%。

這種佔比的金字塔模型體現了兩個原則:

一、 缺陷越早被發現,解決的成本越低

有乙個不同階段發現缺陷解決成本的統計:

如果單元測試階段發現缺陷解決成本為1的話,那麼整合測試階段發現缺陷的解決成本就是10,到了ui層解決成本就是100. 

所以從成本考慮,應該更多的進行單元測試和整合測試。

二、 越底層的測試執行效率越高

執行乙個單元測試,需要的時間可能是毫秒級別,而執行乙個ui層的測試,連最簡單的登入驗證都需要幾秒鐘的時間,乙個下單流程需要幾分鐘的時間,而乙個複雜的end 2 end的流程可能需要幾個小時的時間。

而在當前的敏捷模式下,頻繁的版本發布需要配合頻繁的測試驗證工作,如果ui層測試的佔比很大,每次驗證就會花很多的時間,勢必影響測試執行和專案發布的效率。所以從這個層面考慮,也應該更多的進行單元測試和整合測試。

好了,這就是給大家介紹的殺蟲劑效應和金字塔模型,希望這兩個測試指導原則,可以對大家在現實中的測試工作有所指導和幫助,至少能了解到這兩個原則,不至於說在面試中被面試官問到或者和同行聊到的時候,完全沒聽過。^_^

軟體測試 殺蟲劑怪事

殺蟲劑怪事 一詞由borisbeizer在其編著的 軟體測試技術 第二版中提出。用於描述測試人員對同一測試物件進行的測試次數越多,發現的缺陷就會越來越少的現象。就像老用一種農藥,害蟲就會有免疫力,農藥發揮不了效力。這種現象的根本原因就是測試人員對測試軟體過於熟悉,形成思維定勢。所以有一些公司底層的軟...

測試開發中的蟲劑悖論

1 初識蟲劑悖論 提到 蟲劑悖論 pesticide paradox 我相信很多人都沒聽說的,除非是生物學專業的同學或者磚家。蟲劑悖論描述的是重複使用某種農藥殺滅害蟲,時間越久,殺蟲的效果就越差。之所以這樣,是因為出現抗藥性,也就是說害蟲發生了進化,對這種殺蟲藥免疫了。為了保證農藥的殺蟲效果,我們必...

現實世界中的敏捷軟體 響應與計畫

響應計畫變更 敏捷宣言 防止過多的計畫。計畫軟體專案很困難。我們每個人都想知道他們會成功就啟動專案,但是我們如何確定呢?客戶是否真的想要此產品或功能?我們可以在需要的時候生產產品嗎?如果計畫合理,我們可以預見產品中是否存在技術複雜性?我們完成交易時市場會發生變化嗎?一些企業嘗試在開始乙個專案之前回答...