如何復現不可復現的Bug

2021-09-05 08:34:17 字數 1477 閱讀 4728

摘自51testing

從標題來看大家可能會覺得暈,這裡說到的不可復現是指這些bug有時出現,有時候不出現。相信大家在測試過程中肯定遇到過這種bug,不少這種不可復現的 bug定位起來非常困難,可能很長時間都不能得到解決。能否復現這些不可復現的bug成為大家關注的乙個話題,最近國外的測試專家james bach、jonathan kohl等對這個話題進行了一些**,這裡把他們的一些思路理出來和大家分享。

要想復現不可復現的bug,需要先提到乙個概念就是et(exploring test),也就是探索式測試,這種測試方法是由james bach首先提出來的,在所掌握的被測物件的資訊不是很充分的情況下,這是一種很有效的測試方法,如果大家感興趣,我再整理一篇et的文章出來。

在給大家闡述如何復現不可復現的bug的思路之前,先說說為什麼要復現這些不可復現的bug(廢話兩句^_^)。對於整個專案或者產品而言,如果這些不可復現的bug是很嚴重的bug,比如導致系統崩潰等,如果不能及時、準確的定位和解決,最終發布出來的軟體到達使用者手中後,一旦出現勢必會影響軟體已經公司在使用者心中的形象,嚴重的會「迫使」使用者選擇競爭對手的產品,這些顯然都是公司所不願看到的。而對於測試人員而言,出現了這些不可復現的bug,實際上是一次很好的鍛鍊和提高機會,如果只是提交缺陷報告將這個大皮球踢給開發人員,不僅喪失了一次提高測試水平的機會,還有可能破壞和開發人員之間的關係。

1、被測物件的版本資訊

我測試的到底是哪個版本,這主要是有兩個作用:一是確認我測試的是正式的軟體版本,如果不是就先記錄下該問題,然後選擇正式的版本進行測試(開發人員基於嘗試的一次非正規的修改可能會導致不可復現的bug);二是可以和其它版本進行對比,如果其它的版本沒有類似的問題,就可以去對比這兩個版本之間的區別。

2、環境

這裡的環境是指出現不可復現的bug時所對應的測試環境等,比如測試所用的計算機,如果出現不可復現的bug,那我換一台機器是不是還會出現類似的問題,也就是說通過環境的改變來進一步蒐集不可復現bug的相關資訊。

3、模式

這裡的模式是指我對這個bug如何出現的乙個理解,先給這個bug設定乙個模式,比如是不是資料庫通訊中斷,然後再進行測試,收集更多的資訊去修改和完善這個模式,這樣不斷進行,最終直到bug能完全復現為止,這個時候只要使用這個模式就可以復現出bug了。

4、人這裡提到的人有兩個含義:一是測試是由人來進行的,人的操作、人的思維方式會有不同,通過分析這些資訊也有可能找到這些不可復現的bug的蛛絲馬跡;二是想復現不可復現的bug,往往需要多個人之間的相互協作,比如測試人員、開發人員等,通過大家的溝通和協作就能更容易去復現了。

5、測試工具

通過一些debug工具或者log工具等蒐集記憶體等資訊,根據這些資訊來進行分析,找出不同資訊之間的共同點,比如某一塊記憶體始終都會被改寫等,通過這種方式來去復現bug。

上面的五個方面都是和et的思想緊密相關的,通過不斷的測試和不斷的資訊收集和分析,逐步的把模糊的、不確定的測試變成清晰的、確定的測試,這樣就能復現那些不能復現的bug了。考慮資訊時可以從以上五個方面來進行考慮。

[url]

[url] 

如何復現不可復現的Bug

摘自51testing 從標題來看大家可能會覺得暈,這裡說到的不可復現是指這些bug有時出現,有時候不出現。相信大家在測試過程中肯定遇到過這種bug,不少這種不可復現的 bug定位起來非常困難,可能很長時間都不能得到解決。能否復現這些不可復現的bug成為大家關注的乙個話題,最近國外的測試專家jame...

如何復現不可復現的Bug

從標題來看大家可能會覺得暈,這裡說到的不可復現是指這些bug有時出現,有時候不出現。相信大家在測試過程中肯定遇到過這種bug,不少這種不可復現的 bug定位起來非常困難,可能很長時間都不能得到解決。能否復現這些不可復現的bug成為大家關注的乙個話題,最近國外的測試專家james bach jonat...

YOLACT 復現bug記錄

本帖專門記錄一下復現yolact 過程中遇到的python問題,之前遇到的好多問題都忘記寫下來,以後的 復現過程都記錄下來,避免以後踩同樣的坑。runtimeerror cuda runtime error 700 an illegal memory access was encountered a...