91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

代碼的黑盒測試(上)--目標文件測試Object File Testing

北匯信息POLELINK ? 2022-08-01 14:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

聽說,VectorCAST又出新功能了?不需要源碼就可以測試?

瞎說,這功能我們一直就有,只不過哥不在江湖,江湖不多聞而已。

目標文件

(一)目標文件是什么

我們都知道,一個C源程序manager.c(是一個點餐demo程序,且本文對manager.c的相關(guān)操作都是在Windows平臺實現(xiàn)的。)變成可執(zhí)行程序manager.exe,一般經(jīng)歷四個過程,分別是預(yù)處理(Prepressing)、編譯(Compilation)、匯編(Assembly)和鏈接(Linking),如下圖所示:

pYYBAGLmMnCAX6NAAABuaBg1Fa8320.png

圖1編譯過程

目標文件是源代碼在經(jīng)過預(yù)處理、編譯、匯編過程后輸出的文件(源代碼編譯后但未進行鏈接的中間文件),其內(nèi)容至少包含機器指令代碼,數(shù)據(jù)以及鏈接時所須要的一些信息。

(二)目標文件的結(jié)構(gòu)組成簡介

目標文件中的內(nèi)容信息一般按照不同的屬性,以“節(jié)”(Section)的形式存儲,也叫“段”(Segment),它們都表示一個一定長度的區(qū)域。

目標文件的結(jié)構(gòu)組成主要包含:代碼段 .text(存放機器指令代碼)、數(shù)據(jù)段 .data(存放已初始化的全局變量和局部靜態(tài)變量的數(shù)據(jù))、.bss段(存放未初始化的全局變量和局部靜態(tài)變量)。

我們通常使用binutils的工具objdump來查看目標文件內(nèi)部的結(jié)構(gòu),以manager.o為例,如下圖2所示。

poYBAGLmMoSALWPKAAMBksiSRDc100.png

圖2 manager.o

二、使用VectorCAST/C++進行目標文件測試

VectorCAST/C++ 是Vector公司旗下一款集成的軟件測試解決方案,可顯著減少驗證安全關(guān)鍵型和任務(wù)關(guān)鍵型嵌入式系統(tǒng)所需的測試C/C++軟件組件的時間、精力和成本。

VectorCAST/C++ 不僅支持白盒下的功能測試和結(jié)構(gòu)覆蓋測試,也支持黑盒下的軟件功能測試——目標文件測試(Object File Testing)和庫接口測試(Library Interface Testing)。

目標文件測試就是使用目標文件通過VectorCAST工具生成測試套件而進行的功能測試;庫接口測試方法是指VectorCAST將解析C/C++頭文件中存在的函數(shù)和方法的定義,并基于這些創(chuàng)建測試環(huán)境,允許在沒有可用源代碼的情況下使用現(xiàn)有庫或DLL創(chuàng)建測試。本次主要講解VectorCAST/C++的目標文件測試方案,以manager.c源文件為操作對象,使用GCC編譯器進行編譯。

(一)測試輸入物

1、目標文件

a.單個.obj/.o文件生成方式

前提條件:該.c文件“涉及”到的.h文件都能正確引用

gcc -c source.c(默認在原路徑下生成一個同名的.o文件),如下圖3所示。

pYYBAGLmMrmAVLDkAAHa6IA917w362.png

圖3單個文件manager.o的生成

b.多個.obj/.o文件生成方式

前提條件:每個.c文件“涉及”到的.h文件都能正確引用

gcc -c source1.c source2.c source3.cgcc -c *.c(默認在原路徑下生成相應(yīng)同名的.o文件),如下圖4所示。

poYBAGLmMs-AISSiAAHc2QXxwmc803.png

圖4多個目標文件的生成

對于其他編譯鏈,可以通過IDE(集成開發(fā)環(huán)境)生成項目的目標文件。如CodeWarrior,其一般可以通過其IDE生成相應(yīng)的目標文件,如下圖5所示。

pYYBAGLmMtqAAl_uAACULBsGP5g441.png

圖5 CodeWarriors IDE生成相應(yīng)的目標文件

2、修改后的源文件

是指刪除了函數(shù)具體實現(xiàn)的源碼文件(仍包含完整的.h文件),如下圖6所示。

pYYBAGLmMwKAYHfiAAEGIARHjmw831.png

圖6刪去函數(shù)具體實現(xiàn)后的“manager.c”

3、需求文檔

由于目標文件測試屬于一種軟件黑盒測試,所以對于單元測試級別的需求文檔的細致程度可能要達到詳細設(shè)計文檔的程度,甚至更細致。

如上int Add_Included_Dessert(struct order_type* Order)函數(shù),對于目標文件測試的單元需求可能這樣描述:

pYYBAGLmMxiATFOtAAB04AImf3g723.png

表 1 Add_Included_Dessert(struct order_type* Order)的單元需求說明示例

即需要明確給出了Add_Included_Dessert(struct order_type* Order)函數(shù)的輸入與輸出值。

(二)VectorCAST/C++ 進行目標文件測試

1、單元測試操作步驟:

a.啟動工具,設(shè)置工作路徑,創(chuàng)建新工程并命名,選擇正確的編譯鏈(以GCC編譯鏈為例);

b.進入創(chuàng)建測試環(huán)境(8大步)。

Step1:選擇編譯器,已在前面配置好了,直接跳過。

Step2:命名測試環(huán)境(默認字母大寫,空格為下劃線)。

Step3:測試方式。選擇目標文件測試方式,然后選擇待測目標文件manager.o。如下圖7所示。

poYBAGLmMzSASxgaAAK6L0TWbOI870.png

圖7選擇待測目標文件“manager.o”

Step4:構(gòu)建選項。要選擇Code Coverage為None,VectorCAST才會使用之前編譯的目標文件。

Step5:本地源代碼文件。使用雙加號添加包含修改后的源文件所在路徑。

Step6:選擇UUTs和樁。

Step7:User Code可選選項。本實例不需要,直接跳過。

Step8:測試環(huán)境配置概覽。成功構(gòu)建測試環(huán)境,如下圖8所示。

poYBAGLmM0CAJB3vAADGp0bkhvE147.png

圖8成功構(gòu)建測試環(huán)境

c.構(gòu)建測試環(huán)境后,我們就可以根據(jù)測試需求(功能需求,表1中序號1),創(chuàng)建和執(zhí)行測試用例,如下圖9所示。

poYBAGLmM06ARsfXAAE5MwNVP-8528.png

圖9創(chuàng)建、執(zhí)行測試用例

2、集成測試

集成測試工程構(gòu)建內(nèi)容與單元測試很類似,僅在構(gòu)建測試環(huán)境的第3步和第6步不同。集成測試一般會在第3步將相應(yīng)的多個.o文件同時加進來;第6步將相應(yīng)的多個修改后的源文件同時加進來。

然后使用組合測試功能,將單體測試用例按照一定的邏輯功能進行排列,執(zhí)行組合測試用例。

三、總結(jié)

目標文件測試過程中,使用修改后的源代碼進行測試,可以將一些核心算法的代碼實現(xiàn)部分進行刪除,能夠較大程度的避免直接使用源代碼,更好的保護客戶代碼。

當(dāng)然進行目標文件測試的要求比較高。需要完善的測試需求文檔,對于單元測試來說,一般需要軟件詳細設(shè)計文檔以及單元需求文檔等,對于軟件集成測試來說,一般需要軟件架構(gòu)設(shè)計規(guī)范文檔及集成需求文檔等。

此外目標文件測試,只能進行功能測試,沒有結(jié)構(gòu)覆蓋度。為了得到覆蓋度信息,我們還是要轉(zhuǎn)向白盒測試。將之前的測試用例導(dǎo)入到白盒測試工程中的測試環(huán)境中去執(zhí)行,獲取覆蓋度。

北匯信息專注于汽車電子測試,提供專業(yè)的汽車電子測試系統(tǒng)搭建及測試咨詢服務(wù);提供完整的汽車新能源測試服務(wù);提供完整的軟件生命周期的軟件測試服務(wù)。

VectorCAST/C++作為Vector公司的代碼動態(tài)測試工具,支持自動生成測試用例,提供完善的覆蓋度信息視圖,還可以與Git/SVN/Jekins等工具集成等等。

本次為大家簡單介紹了VectorCAST/C++在軟件測試方面的軟件黑盒測試。后續(xù)將會為大家?guī)砀嗷赩ectorCAST/C++的動態(tài)測試相關(guān)內(nèi)容。同時也歡迎垂詢和溝通,共同探討測試相關(guān)問題。

文中圖片來源于VectorCAST/C++工具截圖。

參考文獻:

[1]《程序員的自我修養(yǎng)—鏈接、裝載與庫》

[2] VectorCAST/C++工具幫助文檔

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 測試
    +關(guān)注

    關(guān)注

    9

    文章

    6201

    瀏覽量

    131347
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    單元測試工具TESSY:如何科學(xué)估算與跟蹤測試工作量?

    在嵌入式軟件開發(fā)中,每個測試對象(Test Object)因復(fù)雜度不同,所需工時也大相徑庭。如何精準預(yù)估并實時監(jiān)控進度?本系列教程由TESSY授權(quán)分銷商——龍智翻譯制作,帶您深入了解 TESSY 強大的測試時間估算與跟蹤功能。
    的頭像 發(fā)表于 02-27 15:34 ?75次閱讀
    單元<b class='flag-5'>測試</b>工具TESSY:如何科學(xué)估算與跟蹤<b class='flag-5'>測試</b>工作量?

    半導(dǎo)體通用測試文件標準STDF介紹

    對于半導(dǎo)體測試特別是集成了復(fù)雜IP的芯片,要完整記錄各項DC,AC,功能性測試等等生成的龐大數(shù)據(jù),還要和芯片的生產(chǎn)批次,生成時間,測試機臺等信息組合起來,那不能無序簡單地堆砌成一個文件
    的頭像 發(fā)表于 02-06 10:02 ?187次閱讀
    半導(dǎo)體通用<b class='flag-5'>測試</b><b class='flag-5'>文件</b>標準STDF介紹

    Include File解鎖Vector Logger Suite高階功能

    Include File(inc文件)是Vector Logger Suite(VLS)中使用LTL代碼片段的關(guān)鍵機制。通過Include File,用戶可以在LTL
    的頭像 發(fā)表于 12-30 09:44 ?356次閱讀
    Include <b class='flag-5'>File</b>解鎖Vector Logger Suite高階功能

    代碼ATE測試系統(tǒng),輕松完成LED電源模塊的自動化測試

    一、案例概述 零代碼ATE測試系統(tǒng)賦能湖南某電子科技公司,針對其 LED 電源研發(fā)測試階段 “手動測試效率低、方案調(diào)整不靈活、數(shù)據(jù)分析需求迫切” 的核心問題,提供定制化自動化
    的頭像 發(fā)表于 12-22 19:50 ?302次閱讀
    零<b class='flag-5'>代碼</b>ATE<b class='flag-5'>測試</b>系統(tǒng),輕松完成LED電源模塊的自動化<b class='flag-5'>測試</b>

    嵌入式軟件測試與專業(yè)測試工具的必要性深度解析

    。提升測試效率與覆蓋率專業(yè)工具通過以下方式優(yōu)化測試過程: ?靜態(tài)代碼分析?:通過MISRA-C等規(guī)則檢查防止緩沖區(qū)溢出等隱患 ?動態(tài)符號執(zhí)行?:自動探索代碼路徑生成
    發(fā)表于 09-28 17:42

    測試小白3分鐘上手,零代碼自動化測試平臺,15分鐘搭建自動化測試方案

    還在為不懂代碼、搭建測試方案耗時久而發(fā)愁?ATECLOUD 零代碼自動化測試平臺,專為自動化測試量身打造,小白3 分鐘就能輕松上手,15 分
    的頭像 發(fā)表于 09-22 17:52 ?844次閱讀
    <b class='flag-5'>測試</b>小白3分鐘上手,零<b class='flag-5'>代碼</b>自動化<b class='flag-5'>測試</b>平臺,15分鐘搭建自動化<b class='flag-5'>測試</b>方案

    芯片硬件測試用例

    用例是項目開始的關(guān)鍵,利用白盒和黑盒覆蓋,保證產(chǎn)品質(zhì)量。根據(jù)芯片功能,目標市場,進行測試立項:依據(jù)BRD/MRD/PRD;計劃:測試需求分析、人力資源時間線;
    的頭像 發(fā)表于 09-05 10:04 ?956次閱讀
    芯片硬件<b class='flag-5'>測試</b>用例

    LambdaTest推出全球首個AI智能體測試平臺

    領(lǐng)先的AI原生測試平臺LambdaTest已推出其智能體對智能體測試(Agent-to-Agent Testing)平臺的封閉測試版。這是全球首個專為驗證與評估AI智能體而設(shè)計的平臺。
    的頭像 發(fā)表于 08-26 17:37 ?946次閱讀

    Green Testing Lab聯(lián)合CSM開展電池溫度測試

    ,奧地利的Green Testing Lab聯(lián)合CSM,在此類極端工況下開展電池溫度測試,致力于在開發(fā)早期提出改進措施,有效降低潛在安全風(fēng)險。
    的頭像 發(fā)表于 08-26 11:46 ?962次閱讀

    什么是ce lvd測試報告?

    CELVD測試報告,是指依據(jù)歐盟《低電壓指令》2014/35/EU(LowVoltageDirective,簡稱LVD)相關(guān)安全標準,對電子電氣產(chǎn)品進行安全測試后出具的合規(guī)性測試文件
    的頭像 發(fā)表于 07-16 16:57 ?2171次閱讀
    什么是ce lvd<b class='flag-5'>測試</b>報告?

    HarmonyOS AI輔助編程工具(CodeGenie)代碼測試

    放置于方法名稱或框選完整的待測試方法代碼塊,右鍵選擇CodeGenie > Generate UT,開始生成單元測試用例。 說明 最多支持解讀20000字符以內(nèi)的
    發(fā)表于 07-14 17:33

    “System Level EOS Testing Method”可以翻譯為: “系統(tǒng)級電性過應(yīng)力測試方法”

    “System Level EOS Testing Method”可以翻譯為: “系統(tǒng)級電性過應(yīng)力測試方法”
    的頭像 發(fā)表于 05-05 15:55 ?933次閱讀
    “System Level EOS <b class='flag-5'>Testing</b> Method”可以翻譯為: “系統(tǒng)級電性過應(yīng)力<b class='flag-5'>測試</b>方法”

    S32K311如何在Flash測試ECC?

    我有一些與目標 S32K311 的 Flash ECC 相關(guān)的問題 - ERM 是否負責(zé) Code Flash 和 Data Flash ECC 中斷通知? - 我們?nèi)绾卧?Flash
    發(fā)表于 04-14 08:47

    絕緣電阻測試儀使用方法

    緣電阻測試儀(Insulationresistance testing instrument)又稱數(shù)字絕緣電阻測試儀、兆歐表、智能絕緣電阻測試儀等,是一種常用的儀器設(shè)備,用于測量電氣設(shè)
    的頭像 發(fā)表于 04-12 10:53 ?4665次閱讀
    絕緣電阻<b class='flag-5'>測試</b>儀使用方法

    局部放電與耐壓測試

    耐壓測試,也稱為絕緣強度測試或hi-pot測試,是一項評估電氣產(chǎn)品或組件的電絕緣部分是否具有“足夠的絕緣強度”以處理電壓的測試。在規(guī)定的時間內(nèi)施加高于通常施加到絕緣部分的電壓的電壓,以
    的頭像 發(fā)表于 04-07 09:51 ?1969次閱讀
    局部放電與耐壓<b class='flag-5'>測試</b>(<b class='flag-5'>上</b>)