九九热在线播放,久久?v无码αv高潮αv喷吹,精选国产一区二区,精品久久久无码中

代碼檢測

在實現覆蓋測試的過程中,通常需要知道某些信息,例如執行可執行語句(即覆蓋)的情況,程序執行的路徑,變量的引用和定義。

為了獲得這樣的信息,有必要跟蹤被測程序的執行過程,或者在執行被測程序期間由計算機自動記錄。

前者需要人工進行,效率低,無聊;后者需要插入代碼來完成被測程序中的相應工作,即代碼插入技術。

今天的大多數覆蓋測試工具都使用代碼堆疊技術。

在測試常見應用程序的軟件時,由于計算機配置越來越高,計算機運行得越來越快,代碼檢測引起的問題并不明顯或在可接受的范圍內。

但對于嵌入式軟件來說,這是一個致命的問題。

由于嵌入式系統具有有限的系統資源(小內存,較少的I / O通道等),過多的代碼擴展速率將使程序無法在嵌入式系統中運行;同時,嵌入式軟件通常具有很強的實時性能。

程序的輸出僅在有限的時間內有效,并且“正確”的輸出僅在有限的時間內有效。

遲到的結果是無用的,甚至變得錯誤和有害。

代碼檢測技術可能破壞程序的時間特性等,從而導致軟件執行錯誤。

因此,我們需要更高效的代碼檢測技術來完成覆蓋測試,尤其是嵌入式軟件的覆蓋測試。

由于程序檢測技術將探針插入到被測程序中,然后通過執行探針獲得程序的控制流程和數據流信息,從而實現了測試的目的。

因此,根據探針插入的時間,可以分為目標代碼檢??測和源代碼檢測。

(1)目標代碼檢??測的前提是轉到目標代碼:執行必要的分析以確定檢測的位置和內容。

由于目標代碼的格式主要與操作系統有關,并且與特定的編程語言和版本無關,因此它已被廣泛使用,特別是在需要監視存儲器的軟件中。

但是,由于目標代碼中的語法和語義信息不完整,并且儀器技術需要對代碼詞法語法的分析有很高的要求,因此源代碼通常用于覆蓋測試工具中。

(2)源代碼檢測是基于對源文件的完整分析:詞法分析和語法分析,確保源文件的檢測能夠實現高精度和針對性。

但是,源代碼檢測需要暴露給源代碼,這會使工作負載變大,并且需要修改,因為編碼語言和版本不同。

在下文中,我們引用了儀器的程序,它指的是源代碼檢測。

(1)儀器的位置:探頭的植入應緊湊,精確,以確保所收集的信息全面無冗余,降低了代碼的擴展速度。

因此,當確定儀器的位置時,程序被分割,并且基本分割方法基于“塊”。

結構體。

根據塊結構的劃分,在以下情況下植入探針:a。

該計劃的第一份聲明;灣分支聲明的開頭; C。

循環語句的開始; d。

下一個條目陳述前的陳述; e。

該計劃的最終聲明; F。

分支聲明的結尾; G。

循環語句的結尾;另外,根據覆蓋測試的要求,儀器的位置,除上述情況外,覆蓋測試要求的變化也有變化。

(2)儀表策略:儀表策略是解決“如何插入”的問題。

傳統的檢測策略是在需要檢測的所有位置插入探針,在程序操作期間收集所有可能的程序信息,并將它們寫入數據庫進行分析和處理。

該方法將導致大量程序的大量工作,低效率和大的代碼擴展速率。

每次根據不同的測試要求插入不同的探針,采用相應的儀器策略,降低了代碼的擴展速度,保證了程序執行的效率。

以下是幾種探針的儀器策略的簡要介紹。

語句覆蓋探測器(基本塊探測器):在基本塊的入口和出口處,分別植入相應的探針以確定在執行程序時是否覆蓋基本塊。

分支覆蓋探測:在C / C ++語言中,分支由分支點確定。

對于每個分支,在開始時植入相應的探針以確定在執行程序時是否覆蓋分支。

條件覆蓋探測:在C / C ++中,if,swich,while,do-while,對于幾個語法結構支持條件決策。

探針被植入用于變量跟蹤的每個條件表達式的布爾表達式中。

取一個值來確定它的涵蓋范圍。

根據不同的測試要求,采用未使用的插入策略,每次在不同的位置植入相應的探頭,每次僅植入有限數量的探頭,大大降低了編碼的擴展比和速度。

插入的樁。

。

使用1000行程序作為待測程序。

使用集成儀器和我們自己開發的工具的工具用于測試結果。

結果表明,前者的時間和代碼擴展率分別為3s和35%。

堆的平均時間和平均代碼擴展率分別為1s和8%,儀器時間顯著提高,代碼擴展率顯著降低。

使用上述程序插入技術,除了通常的覆蓋測試策略外,我們還可以實現MC / DC和LCSAJ測試。

主站蜘蛛池模板: 华坪县| 霍州市| 临湘市| 铜鼓县| 阳朔县| 南开区| 汝南县| 岑溪市| 柳林县| 宁明县| 鹰潭市| 武穴市| 元氏县| 宁都县| 甘德县| 大竹县| 兖州市| 义马市| 兖州市| 长宁县| 涟源市| 尚志市| 明光市| 灵石县| 兰考县| 清流县| 石首市| 七台河市| 视频| 和林格尔县| 利川市| 汉川市| 益阳市| 屏东县| 马龙县| 伊宁县| 中西区| 石河子市| 武邑县| 阿克陶县| 巴彦县|