編碼錯誤檢測

編碼錯誤檢測

編碼錯誤檢測是指檢測編碼過程或傳輸過程中出現的錯誤。在通信領域中,編碼錯誤檢測是指檢測發射機到接收機的傳輸期間由噪聲或其他原因所致的錯誤;在程式設計中,編碼錯誤檢測是對編碼階段的語法錯、語義錯、運行錯進行查找的代碼執行活動。

基本介紹

  • 中文名:編碼錯誤檢測
  • 外文名:coded error detection
  • 學科:計算機
  • 定義:檢測編碼過程的錯誤
  • 有關術語:編碼
  • 領域:程式設計
簡介,編碼,程式測試,灰盒測試,白盒測試,黑盒測試,通信中編碼錯誤檢測,重複編碼,奇偶校驗位,校驗和,循環冗餘校驗(CRC),

簡介

編碼錯誤檢測是指檢測編碼過程或編碼傳輸過程中出現的錯誤。在程式設計中,編碼錯誤檢測也稱為程式測試,即查找編寫代碼階段的錯誤。在通信中,編碼錯誤檢測是指檢測編碼傳輸過程中的錯誤,通常使用適合的散列函式(或校驗和 算法)實現。

編碼

編碼是信息從一種形式或格式轉換為另一種形式的過程。用預先規定的方法將文字、數字或其它對象編成數碼,或將信息、數據轉換成規定的電脈衝信號。編碼在電子計算機電視、遙控和通訊等方面廣泛使用。編碼是信息從一種形式或格式轉換為另一種形式的過程。編碼也可以是指用規定的一組代碼表示電腦程式的指令或信息的過程,即為計算機編寫程式。

程式測試

程式測試(program testing)是指對一個完成了全部或部分功能、模組的電腦程式在正式使用前的檢測,以確保該程式能按預定的方式正確地運行。軟體的正確性尚未得到根本的解決,軟體測試仍是發現軟體錯誤和缺陷的主要手段。為了發現系統中的錯誤,應竭力設計能暴露錯誤的測試用例。測試用例是有測試數據和預期結果構成的。一個好的測試用例是極有可能發現至今為止尚未發現的錯誤的測試用例。測試方法有灰盒測試、白盒測試、黑盒測試。

灰盒測試

灰盒測試,確實是介於白盒測試與黑盒測試之間的,可以這 樣理解,灰盒測試關注輸出對於輸入的正確性,同時也關注內部表現,但這種關注不象白盒那樣詳細、完整,只是通過一些表征性的現象、事件、標誌來判斷內部的運行狀態,有時候輸出是正確的,但內部其實已經錯誤了,這種情況非常多,如果每次都通過白盒測試來操作,效率會很低,因此需要採取這樣的一種灰盒的方法。

白盒測試

白盒測試,又稱結構測試。他的前提是可以把程式看成在一個透明的白盒子裡,測試者完全知道程式的結構和處理算法。這種方法按照程式內部邏輯設計測試用例,檢測程式中的主要執行通路是否能按照預定要求正確工作。白盒測試根據軟體的內部邏輯設計設施用例,常用的技術是邏輯覆蓋,即考察用測試數據運行被測程式是對程式邏輯的覆蓋程度。主要的覆蓋標準有:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合條件覆蓋和路徑覆蓋。

黑盒測試

黑盒測試根據關鍵需求說明書所規定的功能來設計測試用例,它不考慮軟體的內部結構和處理算法。常用的黑盒測試技術包括等價類劃分、邊值分析、錯誤推測和因果圖等。

通信中編碼錯誤檢測

錯誤檢測通常使用適合的散列函式(或校驗和算法)實現。散列算法添加定長的標籤到訊息,從而使接收者能通過計算標籤並與所提供的標籤比較來驗證傳遞的訊息。散列函式存在多種多樣的設計。其中一部分因其簡單性或適合檢測某些類型的錯誤(例如循環冗餘校驗的性能優勢 為檢測突發錯誤而使用)而被廣泛使用。
一個隨機前向糾錯基於最小距離編碼的可以對可檢測誤差的數量提供嚴格保證,但它可能不能防禦原像攻擊。下面章節中描述的重複編碼就是糾錯碼的一種特殊案例。雖然相當低效,但由於其簡單性,重複編碼適合部分糾錯與檢測的套用。

重複編碼

重複編碼是在信道上重複比特信息以實現無差錯通信的編碼方案。首先將要傳送的數據流劃分為比特塊,然後將每個傳輸預定的次數。例如,要傳送比特“1011”,四比特塊{{what}}則再重複三次而產生“1011 1011 1011”。但是,如果此例中收到12位信息為“1010 1011 1011”,其中第一個塊不同於其他兩個,則可以確定已經發生錯誤。重複編碼非常低效,並且如果錯誤在每個組的完全相同的地方發生,則很容易出現問題(例如上例中正巧錯誤為“1010 1010 1010”,將被檢測為傳輸無誤)。重複編碼的優點是它非常簡單,並實際上用於某些數字電台的傳輸。

奇偶校驗位

奇偶校驗位(parity bit)是一種非常簡單的方案,可以用於檢測任何奇數個錯誤的發生。但如果發生的錯誤數量為偶數,則奇偶效驗位看上去是正確的。對奇偶效驗位的擴展和改變有縱向冗餘校驗、垂直冗餘檢查,以及雙或對角奇偶(在RAID-DP中使用)。

校驗和

訊息的校驗和是固定字長(例如位元組值)的位元組碼的模算數和。和可能在傳輸前用一補數以檢測全零訊息出現的錯誤。
校驗和方案包括奇偶校驗位校驗碼縱向冗餘校驗。部分校驗和方案如Damm算法、Luhn算法和Verhoeff算法在設計上是專門用於檢測人類書寫或記錄數字時常出現的錯誤。

循環冗餘校驗(CRC)

循環冗餘校驗(CRC)是一個非安全的散列函式,旨在檢測計算機網路中數字數據的意外變化。因此,它不適合檢測惡意引入的錯誤。
循環碼有著非常適合檢測突發錯誤的有利特性。CRC尤其容易在硬體中實現,兵器因此常用在數字網路和諸如硬碟等存儲設備中。
奇偶校驗是循環冗餘校驗的特殊案例,其中單比特CRC由除數x + 1生成。

相關詞條

熱門詞條

聯絡我們