引子:
在實際工作中我們會看到這樣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,先想想為什麼會出現錯誤。作為專業的測試人員,應該能夠對出現的問題進行跟蹤,確認了在配...