關 閉

新聞中心

EEPW首頁 > 工控自動化 > 設計應用 > 覆蓋測試中高效代碼插樁技術的研究

覆蓋測試中高效代碼插樁技術的研究

作者: 時間:2010-12-21 來源:網絡 收藏

摘要:插樁是實現覆蓋的關鍵技術之一,而高效的插樁技術對于嵌入式軟件的來說又是至關重要的。文章在對CodeTeST 中插樁技術研究的基礎上,以GCC 作為開發(fā)平臺,應用并實現了新的插裝器,采用增加一個詞法語法分析器的方法,提高了插樁的效率。經過實驗證明新的插裝器具有膨脹率小,插樁速度塊的優(yōu)點,在一定程度上做到了高效插樁。

引言

在實現覆蓋的過程中,往往需要知道某些信息,如:程序中可執(zhí)行語句被執(zhí)行(即被覆蓋)的情況,程序執(zhí)行的路徑,變量的引用、定義等。要想獲取這類信息,需要跟蹤被測程序的執(zhí)行過程,或者是由計算機在被測程序執(zhí)行的過程中自動記錄。前者需要人工進行,效率低下且枯燥乏味;后者則需要在被測程序中插入完成相應工作的,即代碼插樁技術。如今大多數的覆蓋測試工具均采用代碼插樁技術。

在對普通應用的軟件進行測試時,由于現在電腦的配置越來越高,電腦的運行速度越來越快,代碼插樁所引起的問題還不是很明顯或者說是在可以接受的范圍之內。但是對于嵌入式軟件來說這卻是致命的問題。因為嵌入式軟件的系統(tǒng)資源有限(內存較小、I/O 通道較少等),過大的代碼膨脹率將使得程序不能在嵌入式系統(tǒng)中運行;同時嵌入式軟件通常具有很強的實時性,程序的輸出只在有限的時間內有效,遲到的“正確的”結果是無用的甚至會變成錯誤的、有害的。

代碼插樁技術會破壞程序的時間特性等,導致軟件執(zhí)行的錯誤。因此我們需要更高效的代碼插樁技術來完成覆蓋測試,尤其是嵌入式軟件的覆蓋測試。

1 插樁技術概述

程序插樁技術最早是由J.C. Huang 教授提出的, 它是在保證被測程序原有邏輯完整性的基礎上在程序中插入一些探針(又稱為“探測儀”),通過探針的執(zhí)行并拋出程序運行的特征數據,通過對這些數據的分析,可以獲得程序的控制流和數據流信息,進而得到邏輯覆蓋等動態(tài)信息,從而實現測試目的的方法。

1.1 插樁方式比較

由于程序插樁技術是在被測程序中插入探針,然后通過探針的執(zhí)行來獲得程序的控制流和數據流信息,以此來實現測試的目的。因此,根據探針插入的時間可以分為目標代碼插樁和源代碼插樁。

(1)目標代碼插樁的前提是對目標代碼進:

行必要的分析以確定需要插樁的地點和內容。由于目標代碼的格式主要和操作系統(tǒng)相關,和具體的編程語言及版本無關,所以得到了廣泛的應用,尤其是在需要對內存進行監(jiān)控的軟件中。但是由于目標代碼中語法、語義信息不完整,而插樁技術需要對代碼詞法語法的分析有較高的要求,故在覆蓋測試工具中多采用源代碼插樁。

(2)源代碼插樁是在對源文件進行完整的:

詞法分析和語法分析的基礎上進行的,這就保證對源文件的插樁能夠達到很高的準確度和針對性。但是源代碼插樁需要接觸到源代碼,使得工作量較大,而且隨著編碼語言和版本的不同需要做一定的修改。在后面我們所提到的程序插樁均指源代碼插樁。

2 程序插樁技術的研究

眾多的覆蓋測試工具中都采用了程序插樁技術,但是各有各的優(yōu)缺點,而市場上認為比較好的嵌入式測試工具有CodeTest,使用CodeTest工具插裝進行測試對目標程序的影響在1%到15%之間。下面對CodeTest 的插樁技術進行的分析。


上一頁 1 2 3 下一頁

關鍵詞: 測試 代碼

評論


相關推薦

技術專區(qū)

關閉