軟體測試--代碼覆蓋

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   ar   strong   for   檔案   

 

關鍵詞:軟體測試, 代碼覆蓋,品質

測試環境:ubuntu 12.04

 

代碼覆蓋 CFG(Control flow graph)圖。控制流程圖(CFG)是一個有向圖抽象資料結構。它是一個過程或程式的抽象表現。每個在圖形中的節點代表一個基本塊,例如,沒有任何跳躍或跳躍目標的直線代碼塊;跳躍目標以一個塊開始,和以一個塊結束。定向邊緣被用於代表在控制流程中的跳躍。CFG中的每個結點至多隻能有兩個直接後繼。

 

插樁技術

在實現覆蓋測試的過程中,往往需要知道某些資訊,如:程式中可執行語句被執行(即被覆蓋)的情況,程式執行的路徑,變數的引用、定義等。要想擷取這類資訊,需要跟蹤被測程式的執行過程,或者是由電腦在被測程式執行的過程中自動記錄。需要在被測程式中插入完成相應工作的代碼,即代碼插樁技術。如今大多數的覆蓋測試載入器均採用代碼插樁技術。

它是在保證被測程式原有邏輯完整性的基礎上在程式中插入一些探針,通過探針的執行並拋出程式啟動並執行特徵資料,通過對這些資料的分析,可以獲得程式的控制流程和資料流資訊,進而得到邏輯覆蓋等動態資訊,從而實現測試目的的方法。根據探針插入的時間可以分為目標代碼插樁和原始碼插樁。

原始碼插樁

原始碼插樁是在對源檔案進行完整的詞法分析和文法分析的基礎上進行的,這就保證對源檔案的插樁能夠達到很高的準確度和針對性。但是原始碼插樁需要接觸到原始碼,而且隨著編碼語言和版本的不同需要做一定的修改。

 

目標代碼插樁

例如gdb插入到目標機的stub代理,實現嵌入式的遠端偵錯。目標作業系統提供支援遠端偵錯協議的通訊模組和多任務調試介面,並改寫異常處理的有關部分。另外目標作業系統還需要定義一個設定斷點的函數;因為有的硬體平台提供能產生特定調試陷阱異常(debug trap)的斷點指令以支援調試(如X86的INT 3),而另一些機器沒有類似的指令,就用任意一條不能被解釋執行的非法(保留)指令代替。目標作業系統添加的這些模組統稱為"插樁"。

 

 

 

GCOV工具

Gcov is GCC Coverage, 是一個測試程式碼涵蓋範圍的工具, 是一個命令列方式的控制台程式。

 

testcov.c

#include <stdio.h> int main(void){         int i, total;                 total = 0;         for(i=0; i<10; i++){                   total += i;         }                 if (total != 45){                   printf("failure\n");         } else {                   printf("success\n");         }                 return 0;}

 

 

編譯,並執行。

gcc -fprofile-arcs -ftest-coverage -o testcov testcov.c./testcov

 

 

查看testcov程式碼覆蓋情況

$ gcov testcov.cFile ‘testcov.c‘Lines executed:87.50% of 8testcov.c:creating ‘testcov.c.gcov‘

 

 

軟體測試--代碼覆蓋

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.