色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

北匯信息POLELINK ? 2022-08-01 14:16 ? 次閱讀

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

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

目標文件

(一)目標文件是什么

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

pYYBAGLmMnCAX6NAAABuaBg1Fa8320.png

圖1編譯過程

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

(二)目標文件的結構組成簡介

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

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

我們通常使用binutils的工具objdump來查看目標文件內部的結構,以manager.o為例,如下圖2所示。

poYBAGLmMoSALWPKAAMBksiSRDc100.png

圖2 manager.o

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

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

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

目標文件測試就是使用目標文件通過VectorCAST工具生成測試套件而進行的功能測試;庫接口測試方法是指VectorCAST將解析C/C++頭文件中存在的函數和方法的定義,并基于這些創建測試環境,允許在沒有可用源代碼的情況下使用現有庫或DLL創建測試。本次主要講解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(默認在原路徑下生成相應同名的.o文件),如下圖4所示。

poYBAGLmMs-AISSiAAHc2QXxwmc803.png

圖4多個目標文件的生成

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

pYYBAGLmMtqAAl_uAACULBsGP5g441.png

圖5 CodeWarriors IDE生成相應的目標文件

2、修改后的源文件

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

pYYBAGLmMwKAYHfiAAEGIARHjmw831.png

圖6刪去函數具體實現后的“manager.c”

3、需求文檔

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

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

pYYBAGLmMxiATFOtAAB04AImf3g723.png

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

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

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

1、單元測試操作步驟:

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

b.進入創建測試環境(8大步)。

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

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

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

poYBAGLmMzSASxgaAAK6L0TWbOI870.png

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

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

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

Step6:選擇UUTs和樁。

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

Step8:測試環境配置概覽。成功構建測試環境,如下圖8所示。

poYBAGLmM0CAJB3vAADGp0bkhvE147.png

圖8成功構建測試環境

c.構建測試環境后,我們就可以根據測試需求(功能需求,表1中序號1),創建和執行測試用例,如下圖9所示。

poYBAGLmM06ARsfXAAE5MwNVP-8528.png

圖9創建、執行測試用例

2、集成測試

集成測試工程構建內容與單元測試很類似,僅在構建測試環境的第3步和第6步不同。集成測試一般會在第3步將相應的多個.o文件同時加進來;第6步將相應的多個修改后的源文件同時加進來。

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

三、總結

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

當然進行目標文件測試的要求比較高。需要完善的測試需求文檔,對于單元測試來說,一般需要軟件詳細設計文檔以及單元需求文檔等,對于軟件集成測試來說,一般需要軟件架構設計規范文檔及集成需求文檔等。

此外目標文件測試,只能進行功能測試,沒有結構覆蓋度。為了得到覆蓋度信息,我們還是要轉向白盒測試。將之前的測試用例導入到白盒測試工程中的測試環境中去執行,獲取覆蓋度。

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

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

本次為大家簡單介紹了VectorCAST/C++在軟件測試方面的軟件黑盒測試。后續將會為大家帶來更多基于VectorCAST/C++的動態測試相關內容。同時也歡迎垂詢和溝通,共同探討測試相關問題。

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

參考文獻:

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 測試
    +關注

    關注

    8

    文章

    5338

    瀏覽量

    126808
收藏 人收藏

    評論

    相關推薦

    EE-141:ADSP-2106x和ADSP-2116x系列DSP的基準測試C代碼

    電子發燒友網站提供《EE-141:ADSP-2106x和ADSP-2116x系列DSP的基準測試C代碼.pdf》資料免費下載
    發表于 01-07 14:25 ?0次下載
    EE-141:ADSP-2106x和ADSP-2116x系列DSP<b class='flag-5'>上</b>的基準<b class='flag-5'>測試</b>C<b class='flag-5'>代碼</b>

    什么是回歸測試_回歸測試測試策略

    ? 1、什么是回歸測試 回歸測試(Regression testing) 指在發生修改之后重新測試先前的測試以保證修改的正確性。理論
    的頭像 發表于 11-14 16:44 ?314次閱讀

    初探AI測試分析

    在人工智能中,算法不只是用代碼敲出來這么簡單的,而是由訓練數據、標簽和神經網絡的結合產生的,這是機器學習的本質。算法本身沒有直接洞察力,也不能直接像缺陷一樣被修復:它屬于“黑盒開發”。 人工智能系統
    的頭像 發表于 11-12 10:25 ?466次閱讀
    初探AI<b class='flag-5'>測試</b>分析

    環路測試方法有哪幾種

    環路測試(Loop Testing)是一種軟件測試方法,它通過在軟件內部創建循環來驗證程序的循環結構是否正確。這種方法特別適用于測試循環控制結構,如for循環、while循環、do-w
    的頭像 發表于 09-12 14:35 ?696次閱讀

    Linux內核測試技術

    。內核測試技術是實現這一目標的關鍵手段。本文將詳細介紹 Linux 內核測試的各種技術,包括單元測試、集成測試、功能
    的頭像 發表于 08-13 13:42 ?530次閱讀
    Linux內核<b class='flag-5'>測試</b>技術

    IC測試的定義和基本原理

    測試,全稱為集成電路測試(Integrated Circuit Testing),是指對集成電路的性能、功能和可靠性進行測試的過程。IC測試
    的頭像 發表于 07-10 14:45 ?2079次閱讀

    單元測試、集成測試自動化工具

    CoverageMaster winAMS :?適用于嵌入式目標代碼的單元測試/集成測試工具 全面支持嵌入式微機!驗證嵌入式C/C++軟件 實施以模塊為單位的自動化單元
    的頭像 發表于 06-26 13:41 ?465次閱讀
    單元<b class='flag-5'>測試</b>、集成<b class='flag-5'>測試</b>自動化工具

    TS-RadiMation測試軟件如何在序列測試中發揮作用?

    ? 一、測試目的 序列測試目標是在沒有測試工程師干預的情況下依次運行不同(類型)的測試。這些測試
    的頭像 發表于 06-21 10:59 ?246次閱讀
    TS-RadiMation<b class='flag-5'>測試</b>軟件如何在序列<b class='flag-5'>測試</b>中發揮作用?

    接口測試測試什么內容

    接口測試的定義、重要性、測試策略、測試方法、測試工具以及最佳實踐。 一、接口測試的定義 接口測試
    的頭像 發表于 05-30 15:11 ?1302次閱讀

    功能測試覆蓋中最常見的是什么方法

    常見的方法,包括黑盒測試、白盒測試、灰盒測試、等價類劃分、邊界值分析、錯誤推測法、因果圖法、狀態遷移測試、場景法、決策表
    的頭像 發表于 05-30 14:55 ?781次閱讀

    功能測試是白盒還是黑盒測試

    功能測試是軟件測試的一種方法,主要用于驗證軟件的功能是否滿足需求規格說明書中的要求。功能測試可以采用白盒測試黑盒
    的頭像 發表于 05-30 14:53 ?904次閱讀

    功能測試主要做什么 功能測試包含哪些測試

    的主要任務、包含的測試類型以及實施方法。 功能測試的主要任務 需求分析 :理解軟件需求,包括用戶需求和系統需求。 測試計劃制定 :根據需求制定詳細的測試計劃,包括
    的頭像 發表于 05-29 16:05 ?5662次閱讀

    功能測試和性能測試的區別與聯系

    預期執行其功能的過程。功能測試的主要目標是確保軟件滿足所有業務需求和用戶期望。以下是功能測試的一些關鍵特點: 需求驅動 :功能測試通常基于需求文檔進行,確保每個功能都按照設計和規格實現
    的頭像 發表于 05-29 15:40 ?1077次閱讀

    永久鏈路、信道測試的區別

    永久鏈路測試和信道測試是網絡和通信領域中兩個不同的概念,它們通常用于確保網絡和通信系統的可靠性和性能。 永久鏈路測試(Permanent Link Testing): 永久鏈路
    的頭像 發表于 03-25 10:59 ?2720次閱讀

    PCBA測試測試設備都有哪些?

    一站式PCBA智造廠家今天為大家講講 測試PCBA需要哪些儀器設備?PCBA加工所需要用到的檢測設備。PCBA測試(Printed Circuit Board Assembly Testing)是指
    的頭像 發表于 03-11 09:40 ?1073次閱讀
    主站蜘蛛池模板: a视频免费看| 熟妇少妇任你躁在线无码| 老师的快感电影完整版| 青草久久精品亚洲综合专区| 先锋影音av最新资源| 中文字幕亚洲视频| 国产精品久久欧美一区| 里番※琉璃全彩acg奈亚子| 偷上邻居熟睡少妇| 99在线免费| 精品国产午夜肉伦伦影院| 涩涩爱涩涩电影网站| 99久久精品国内| 久久福利影院| 小草观看免费高清视频| 不卡人妻无码AV中文系列APP| 久久国产乱子伦免费精品| 日韩人妻无码精品-专区 | 中文字幕在线久热精品| 国产精品久久久久久人妻香蕉| 免费毛片试看| 在线观看99| 极品少妇高潮啪啪AV无码| 色婷婷AV国产精品欧美毛片| 99婷婷久久精品国产一区二区| 精品一产品大全| 亚洲女人毛片| 国产三级在线免费观看| 宿舍BL 纯肉各种PLAY H| 超碰在线公开视频| 欧美精品做人一级爱免费| 2022精品福利在线小视频| 精品欧美一区二区三区久久久| 小黄文纯肉短篇| 国产精品你懂的在线播放| 日本aa大片| zoovideo人与驴mp4| 欧美.亚洲.日韩.天堂| 67194在线入口免费| 恋夜秀场支持安卓版全部视频国产| 一亲二脱三插|