教育行業A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

什么是源代碼插樁?怎樣執行這一操作?

更新時間:2021年12月24日15時15分 來源:傳智教育 瀏覽次數:

源代碼插樁的概念與模型

源代碼插樁是指對源文件進行完整的詞法、語法分析后,確認插樁的位置,植入探針代相比于目標代碼插樁,源代碼插樁具有針對性和精確性。源代碼插樁模型如圖3-4所示。

源代碼插樁模型
圖3-4 源代碼插樁模型

源代碼插樁

從圖3-4可以看出,源代碼插樁是在程序執行之前完成的,因此源代碼插樁在程序運行過程中會產生探針代碼的開銷。相比于目標代碼插樁,源代碼插樁實現復雜程度低。源代碼插樁是源代碼級別的測試技術,探針代碼程序具有較好的通用性,使用同一種編程語言編寫的程序可以使用一個探針代碼程序來完成測試。

上面講解了源代碼插樁的概念與模型,為了讓讀者理解源代碼插樁的使用,下面通過一小案例來講解源代碼插樁。該案例是一個除法運算,代碼如下所示。

 # include < stdio.h > 
 # define ASSERT(y) if (y) {
     printf("出錯文件:%s\n", __FILE__);\
     Printf("在第%d行:\n") __LINE__\);
 printf(” 提示: 除數不能為0!\ n ");\
}   //定義ASSERT(Y)
 int main(){
 int x, y;
 printf( "請輸入被除數:");
 scanf("%d", & x);
 Printf( "請輸入除數:");
 scanf("%d", & y);
 ASSERT(y == 0); //插入的樁(即探針代碼)
 printf("%d", x / y);
 return 0;
 }

為了監視除法運算除數輸入是否正確,在代碼第13行插入宏函數ASSERT(y),當除數為O時打印錯誤原因、出錯文件、出錯行數等信息提示。宏函數ASSERT(y)中使用了C語言標準庫的宏定義“▁FILE▁”提示出錯文件、“▁LINE▁”提示文件出錯位置。程序運行后,提示輸入被除數和除數在輸入除數后,程序宏函數ASSERT(y)判斷除數是否為0,若除數為0則打印錯誤信息,程序運行結束;若除數不為0,則進行除法運算并打印計算結果。根據除法運算規則設計測試用例,如表下表所示。

對插樁后的C源程序進行編譯、鏈接,生成可執行文件并運行,然后輸入表3-8中的測試用例數據,讀者可觀察測試用例的實際執行結果與預期結果是否一致。程序插樁測試方法有效地提高了代碼測試覆蓋率,但是插樁測試方法會帶來代碼膨脹、執行效率低下和HeisenBugs,在一般情況下插樁后的代碼膨脹率在20%~40%,甚至能達到100%導致插樁測試失敗。

小提示:HeisenBugs

HeisenBugs即海森堡Bug,它是一種軟件缺陷,這種缺陷的重現率很低,當人們試圖研究時Bug會消失或改變行為。實際開發軟件測試中,這種缺陷也比較常見,例如,測試人員測試到一個缺陷提交給開發人員后,開發人員執行缺陷重現步驟卻得不到報告的缺陷,因為缺陷已經消失或者出現了其他缺陷。





猜你喜歡:

目標代碼插樁的三種執行模式

怎樣下載和搭建AirTest測試環境?

移動app性能測試的要點有哪些?

決策表如何使用?如何簡化決策表?

傳智教育軟件測試開發培訓

0 分享到:
红豆直播app黄台_红豆直播app下载免费_红豆直播app下载