如何尋找軟體測試Bug 100 畢現的規律?

2021-06-04 17:16:59 字數 1950 閱讀 3752

引子:

在實際工作中我們會看到這樣2個現象:

1、同樣的bug,不同的測試描述出來,解決的結果不同。

2、一些無法被解決的偶現bug在好幾個版本過後又得到了解決。(解決後跟開發的溝通中了解到,是因為當時沒有找到畢現的規律所以無法解決。)

通過這兩個現象告訴我乙個道理,那就是:讓bug 100%畢現很有必要。

今天我們就來討論下如何找到能讓bug 100%畢現的規律。這種能力是我們測試所需要的。

bug畢現的重要性:

測試人員復現bug的步驟可以幫助開發迅速、有效的定位、解決bug,從而提高生產產品的效率,更好的保證質量。雖然我們不知道**是如何設計的,但是我們可以幫助開發找到觸發bug的條件。

我們都知道,目前在工作中,bug是以100%畢現和非畢現(經常復現和偶爾復現)兩種狀態存在的。但我始終堅信:沒有非畢現的bug,只是我們沒有找到能夠讓他100%畢現的規律

bug畢現的3中方法

一、逆向推理法

首先要做的就是逆向推理,從時間最近的一次開始逆推,回想這段時間發生的事情(自己的操作,以及在操作期間其他程式或功能對其的影響),而不僅僅只是自己的操作。盡量在最短的時間將現場還原(這就需要在測試的過程中要「用心」,)

可能有人問了,回想的「這段時間」是多久?

1、容易復現的bug,一般從本條用例開始操作到bug出現就可以找到畢現的規律。

2、較難復現的bug,一般就需要追溯到上一條用例執行的操作或者結果。

除了回想自己的操作,為什麼還要留意一些別的事情?

根據經驗而言,一般不容易復現的bug就是因為在復現bug的同時忽略掉了其他程式對其本身操作的影響

注:要想在最短的時間將現場還原,一定要注意細節,不要放過任何乙個可能的細節。

二、反覆嘗試法

在經歷了逆向推理之後,我們要做的就是「不斷嘗試」。

為什麼要不斷的嘗試呢?根據逆向推理嘗試一兩次不行嗎?我想說的是:如果你能保證操作過程中的任何乙個細節都考慮到了,並且都嘗試了,那麼就不用不斷嘗試了,嘿嘿!

1、不斷的嘗試是對現場還原的一種幫助,有的時候我們記憶的時候對細節記憶的不是很清晰,只有不斷的嘗試,不斷的找感覺,才能真正的做到現場還原。

2、避免被表面現象所迷惑,發現乙個bug之後不要立即就提交bug,可以反覆多試幾次,看看按照自己的操作是否可以100%畢現,如果可以畢現,說明我們找到了此bug畢現的規律。(反覆嘗試可以幫助我們抓住bug產生的本質性原因)

我的原則是:提交的bug盡量讓其100%畢現,這樣才能更好的幫助開發更快、更準的定位、解決問題

三、判斷猜測法

判斷猜測法需要建立在對產品的深度理解的基礎上。我們需要根據對產品的深度理解,再結合相關測試經驗進行「關聯猜測」,然後根據猜測的操作進行實踐。

猜測點:模組互動部分(一級模組之間的互動、子模組與一級模組之間的互動均需考慮)、狀態改變部分、使用者角色轉換部分等

總之:只要是有變化的部分,就要考慮其變化對程式帶來的影響

經過以上3種方法之後,bug應該會「水落石出」啦,接下來的的任務就是提交bug,跟蹤bug,直到bug解決,再對bug進行驗證

經驗:

1、我們的最佳記憶時間範圍是有限的,盡量在bug剛剛出現的時候去尋找他的規律,而不要等到自己閒下來的時候再去做這樣的事情,等自己閒下來的時候有可能操作細節(細節操作很重要)、以及環境都已經改變,不利於bug的復現

2、為了保證測試進度按照計畫進行,在尋找難度極大的偶現bug的規律時最好要為自己限定時間,不要不顧一切的、執著的找下去,這樣就會耽誤整個專案的進度,顧此失彼。

3、對於復現難度極大的bug,我們可以在進行專案總結的時候拿出幾個bug讓大家集體來試試,人多力量大,你想不到的有可能正好是別人所能想到的。(團隊協作很重要)

如何尋找多執行緒程式的bug

3.縮小錯誤範圍 4.總結 確保程式以單執行緒方式執行時沒有錯誤。這是找bug的基礎。可能原因1 對mutex使用lock後忘記解鎖 例如 沒有對每一種可能的情況進行unlock。mutex m1 thread1 m1.unlock return 可能原因2 發生死鎖 例如 使用普通鎖對遞迴程式加鎖...

軟體測試總結之bug處理

軟體測試工程師的職責是找bug。當然了也不能說只是找bug,高大上一點應該還 功能的健壯性,但是回歸到本質,碰到bug怎麼處理呢?1.記錄問題 1.1 bug的標題,即一句話簡要的概括bug 1.2 bug的描述,詳細的描述bug,是否是相容問題 1.3 bug的復現,記錄bug的復現步驟 1.4 ...

測試人員應該如何報bug?

首先,確保你所發現的問題是確實是乙個bug,不要出現因為測試人員操作錯誤或配置錯誤所引起的 bug 這樣會降低你在開發人員心中的可信度。在測試的時候,如果發現測試的實際結果與預期測試結果不符時,不要著急馬上報bug,先想想為什麼會出現錯誤。作為專業的測試人員,應該能夠對出現的問題進行跟蹤,確認了在配...