三種bug定位方法

2021-09-10 06:00:25 字數 1621 閱讀 1997

測試用例的執行,基本上是程式執行過程bug產生的開始,若測試結果與期望結果有出入,即出現了錯誤徵兆,定位bug過程首先要找出bug產生的原因,然後對bug進行修正。因此定位bug過程有兩種可能:一種可能是找到了bug產生原因並提給開發去糾正;另一種可能是測試過程中程式產生的bug原因不明,測試或開發人員只得做某種推測,然後再設計測試用例證實這種推測,若一次推測失敗,再做第二次推測,直到發現並糾正bug。

定位查詢bug是乙個相當艱苦的過程,究其原因除了開發人員心理方面的障礙外,還因為隱藏在程式中的錯誤具有下列特殊的性質:

(1)錯誤的外部徵兆遠離引起錯誤的內部原因,對於高度耦合的程式結構此類現象更為嚴重;

(2)糾正乙個bug造成了另一bug現象(暫時)的消失;

(3)某些bug徵兆只是假象;

(4)因操作時疏忽造成的某些bug徵兆不易追蹤;

(5)bug是不是程式引起的;

(6)輸入條件難以精確地再構造(例如,某些實時應用的輸入次序不確定);

(7)bug徵兆時有時無,此現象對嵌入式系統尤其普遍;

(8)bug是由於把任務分布在若干臺不同處理機上執行而造的。

在軟體bug定位過程中,可能遇到大大小小、形形色色的問題,隨著問題的增多,測試人員的壓力也隨之增大,過分地緊張致使開發人員在解決乙個問題的同時又引入更多的新問題。

儘管查詢bug,定位bug不是一門好學的技術(有時人們更願意稱之為藝術),但還是有若干行之有效的方法和策略,下面介紹幾種bug定位方法。

無論採用哪種定位方法,目標只有乙個,即發現並排除引起錯誤的原因,這要求測試人員能把直觀想象與系統評估很好的結合起來。

①原始類(brute force)

②回溯類(backtracking)

③排除類(causeeliminations)

原始類定位方法是最常用也是最低效的方法,只有在萬般無奈的情況下才使用它,主要思想是「通過計算機找錯」。例如輸出儲存器、暫存器的內容,在程式安排若干輸出語句等,憑藉大量的現場資訊,從中找到出錯的線索,雖然最終也能成功,但難免要耗費大量的時間和精力。

回溯法能成功地用於程式的排錯。方法是從出現bug徵兆處開始,人工地沿控制流程往回追蹤,直至發現出錯的根源,不幸的是程式變大後,可能的回溯路線顯著增加,以致人工進行完全回溯到望而不可及。

排除法基於歸納和演繹原理,採用「分治」的概念,首先確定所有與bug出現有關的所有資料,設想乙個導致bug的原因,用這些資料證明或反駁它;或者一次列出所有可能的原因,通過測試一一排除。只要某次測試結果說明某種假設已呈現倪端,則立即精化資料,乘勝追擊。

上述每一類方法均可利用一些測試工具,開發工具。目前,除錯編譯器、動態偵錯程式(「追蹤器」)、測試用例自動生成器、儲存器映象及交叉訪問示圖等到一系列工具已廣為使用。然而,無論什麼工具也替代不了乙個開發人員在對完整的設計文件和清晰的源**進行認真審閱和推敲之後所起的作用。此外,不應省略掉**走查過程中最有價值的乙個資源,那就是開發小組中其他成員的評價和忠告,正所謂「當事者迷,旁觀者清」。

前面有提到,修改一處老問題可能引入幾處新問題,有時程式越改越亂,但若能做到每次糾錯前都捫心自問三個問題,情況將大為改觀:

①導致這個錯誤的原因在程式其他部分還可能存在嗎?

②本次修改可能對程式中相關的邏輯和資料造成什麼影響?引起什麼問題?

③上次遇到的類似問題是如何排除的?為什麼這次又重新出現了?

引自

定位的三種方式

1.wifi定位,ip位址定位,通過ip位址進行查詢實際位址 2.基站定位,訊號塔,基站 手機通訊服務的裝置 訊號的格數決定了手機距離基站遠近,精確度 幾十公尺到幾公里,精確度來自於基站的數量 wifi定位和基站定位侷限性 不能定位海拔 3.gps定位,通過和gps定位衛星通訊進行定位的,使用最少衛...

CSS的三種定位

css的三種引用方式 相對定位 relative 絕對定位 absolute 固定定位 fixed 被看作普通流定位模型的一部分,定位元素的位置相對於它在普通流中的位置進行移動。使用相對定位的元素不管它是否進行移動,元素仍要佔據它原來的位置。移動元素會導致它覆蓋其他的框。lang en charse...

html的三種定位

前端開發中比較常用的定位有三種 相對定位,絕對定位,固定定位。相對定位position relative 1.它可以在四個方向分別或者同時進行偏移 2.定義時它的參照物是父元素 沒有時為瀏覽器本身 3.偏移後元素的原來位置還是被佔著,並沒有空出來 4.當父元素和子元素同時定義時,他們的參照物是父元素...