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

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

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

3天內不再提示

代碼的黑盒測試(下)|?庫接口測試Library Interface Testing

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

掃碼添加小助手

加入工程師交流群

書接上回:代碼的黑盒測試(上)|目標文件測試Object File Testing,我們首先介紹了編譯的基本過程——預處理(Prepressing)、編譯(compile)、匯編(Assembly)和鏈接(Linking),然后著重介紹了代碼黑盒測試的第一種方法——VectorCAST/C++的目標文件的測試方法,解決了在無可用源代碼的情況下,對其相應目標文件的測試。

其實一個代碼工程除了開發(fā)人員手寫代碼外,還包含了很多庫文件,甚至有的庫文件或是經過開發(fā)人員修改或是直接由開發(fā)人員編寫的。那么對于這些文件又該如何測試呢?請看如下分解!

一、庫接口測試

(一)庫文件

這里的“庫”,就是庫文件,一般是指編譯好的二進制文件,用于在鏈接階段與目標文件一起生成可執(zhí)行文件,或者運行可執(zhí)行文件的時候被加載,以便調用庫文件中的某段代碼。

與可執(zhí)行文件不同的是,庫文件無法直接執(zhí)行。直觀上來看,庫文件的源代碼中沒有main函數(shù),而只是一些函數(shù)模塊的定義和實現(xiàn),沒有運行的入口主函數(shù),無法直接執(zhí)行。

(二)靜態(tài)庫與動態(tài)庫

庫文件可分為靜態(tài)庫和動態(tài)庫。它們區(qū)別主要體現(xiàn)在程序的鏈接階段——靜態(tài)庫的代碼是在編譯過程中被載入程序中的,這就說明,只要程序編譯完成,程序就不受靜態(tài)庫的影響;動態(tài)庫的代碼在編譯的時候并沒有被編譯進入程序中,只是在程序運行時根據(jù)程序需要動態(tài)的加載到內存中。

(三)相關文件的一些擴展名

  1. win32平臺下,靜態(tài)庫通常后綴為.lib,動態(tài)庫為.dll。
  2. Linux平臺下,靜態(tài)庫通常后綴為.a,動態(tài)庫為.so。

從本質上來說,由同一段程序編譯出來的靜態(tài)庫和動態(tài)庫,在功能上是沒有區(qū)別的;不同之處僅僅在于其名字上,也就是“靜態(tài)”和“動態(tài)”。開發(fā)人員只需要將.h/.hpp頭文件和.lib/.so文件提交給其他開發(fā)人員,他們就可以直接使用.lib/.so文件中定義的函數(shù)了。靜態(tài)庫和動態(tài)庫的具體使用由開發(fā)人員決定。

(四)庫接口測試

庫接口測試允許客戶在沒有可用源代碼的情況下,對現(xiàn)有庫文件創(chuàng)建測試。在測試時,可以將第三方庫或者被修改的第三方庫作為一個對象庫文件和API定義(頭文件)??梢詾锳PI創(chuàng)建測試用例,來驗證應用程序庫函數(shù)的正確性,而無需訪問源代碼。

在代碼開發(fā)中,通常會將一些常用的函數(shù)封裝成一個庫,提供接口給其它程序文件調用,省去重復寫該函數(shù)接口。當使用該函數(shù)時,只需要直接將所需要的文件鏈接到程序中即可,大大提高了開發(fā)效率。依照這個原理,我們也可以針對一些代碼程序根據(jù)測試需要,將某些源代碼編譯生成相應的靜態(tài)庫文件或動態(tài)庫文件,以完成代碼功能測試。

二、利用VectorCAST/C++進行庫接口測試

對于如何使用VectorCAST/C++進行靜態(tài)庫或者動態(tài)庫的單元測試,下面我們仍使用上篇文章中的點餐服務程序(采用GCC編譯鏈),來具體說明。

(一)點餐服務程序的結構內容及說明

poYBAGLrOgiASp3RAAB36SL_x2w424.png

poYBAGLrOhCAF5n2AACE58UQyqM954.png

圖 1點餐服務程序的結構內容及說明

(二)利用VectorCAST/C++進行靜態(tài)庫接口測試

1、靜態(tài)庫文件的生成

對于這個點餐主程序manager_driver.c,我們可以將manager.c和database.c分別作為一個調用的庫文件來使用,也可以一起作為一個調用的庫文件來使用。本例中,將manager.c和database.c一起作為一個調用的庫文件來使用。

使用一個BAT腳本生成靜態(tài)庫文件,腳本內容如下:

set path=%VECTORCAST_DIR%\mingw\bin;%PATH%

gcc -c manager.c

gcc -c database.c

ar rcs manager_driver.lib manager.o database.o

說明:無論靜態(tài)庫,還是動態(tài)庫,都是在*.o目標文件基礎上生成的。

2、環(huán)境構建基本過程

VectorCAST環(huán)境構建的基本過程在代碼的黑盒測試(上)|目標文件測試Object File Testing有詳細說明,這里不再贅述,對于不同的以及需要注意的地方,有如下說明:

本例中,我們是利用manager.c和database.c一起生成靜態(tài)庫文件manager_driver.lib的,所以在構建測試環(huán)境的第3步需要選擇“庫接口測試方法”并在“Link Options”添加該文件及所在路徑,如圖2所示。同時在構建測試環(huán)境的第6步添加需要的頭文件,有manager.h和database.h,如圖3所示。

pYYBAGLrOi-AB43LAAGSTnfVKnk986.png

圖2選擇添加靜態(tài)庫文件manager_driver.lib

poYBAGLrOjWAdYEGAADByjzH0Gc062.png

圖3選擇添加頭文件manager.h或database.h

3、測試用例編寫與執(zhí)行

按照上述說明成功構建測試環(huán)境。編寫測試用例及執(zhí)行測試用例,結果如下圖4所示。

poYBAGLrOlSAEjWuAABhkE54dEQ448.png

pYYBAGLrOl2AQHHJAAEKsv_XNSM597.png

圖4測試用例編寫與執(zhí)行

細心的小伙伴可以注意到上圖左邊部分只有顯示了執(zhí)行狀態(tài)圖標,因為我們采用的該種測試屬于黑盒測試方法,所以我們在構建環(huán)境的第4步,沒有勾選“Whitebox”前面的復選框,自然也沒有結構覆蓋度圖標。

(三)利用VectorCAST/C++進行動態(tài)庫接口測試

1、動態(tài)庫文件的生成

與靜態(tài)庫文件生成類似,將manager.c和database.c一起作為一個調用的動態(tài)庫文件來使用。

使用一個BAT腳本生成動態(tài)庫文件,腳本內容如下:

set path=%VECTORCAST_DIR%\mingw\bin;%PATH%

gcc -c -fPIC manager.c -o manager_dyn.o

gcc -c -fPIC database.c -o database_dyn.o

gcc manager_dyn.o database_dyn.o -shared -o libmanager_drive.dll

2、環(huán)境構建基本過程

動態(tài)庫接口測試與靜態(tài)庫接口測試基本一致,不同的地方如下說明:

此例中,我們仍利用manager.c和database.c一起生成動態(tài)庫文件manager_driver.dll,所以在構建測試環(huán)境的第3步選擇“庫接口測試方法”并在“Link Options”添加該動態(tài)庫dll文件,如圖5所示。后面的操作與靜態(tài)庫接口測試一致,故不在贅述。

poYBAGLrOoWAQ7btAAEuGA59J2E457.png

圖5選擇添加動態(tài)庫文件manager_driver.dll

三、總結

本文提供了代碼黑盒測試的第二種方法——庫接口測試,可以利用工具為API創(chuàng)建測試用例,來驗證應用程序庫函數(shù)的正確性,而無需訪問源代碼,感興趣的同學可以嘗試下。

VectorCAST/C++作為Vector公司的代碼動態(tài)測試工具,支持自動生成測試用例,提供完善的覆蓋度信息,還可以與Git/SVN/Jekins等工具集成等等;后續(xù)也會為大家?guī)砀嗷赩ectorCAST/C++的動態(tài)測試相關內容;同時也歡迎垂詢和溝通,共同探討測試相關問題。

北匯信息作為Vector中國的合作伙伴,始終專注于汽車電子領域的新技術和新產品,為整車廠和零部件企業(yè)提供完整的研發(fā)、測試解決方案,為工程師在汽車領域提供“趁手裝備“!

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

    關注

    9

    文章

    6192

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Labview接口interface)的工作過程

    UI actor, 用來做數(shù)據(jù)和狀態(tài)顯示 3、創(chuàng)建一個random Actor,用來產生隨機數(shù)據(jù)。 4、創(chuàng)建一個.Livb,在庫中,創(chuàng)建一個接口對象interface。 注:接口對象
    發(fā)表于 02-03 11:07

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

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

    使用AXI4接口IP核進行DDR讀寫測試

    本章的實驗任務是在 PL 端自定義一個 AXI4 接口的 IP 核,通過 AXI_HP 接口對 PS 端 DDR3 進行讀寫測試,讀寫的內存大小是 4K 字節(jié)。
    的頭像 發(fā)表于 11-24 09:19 ?3725次閱讀
    使用AXI4<b class='flag-5'>接口</b>IP核進行DDR讀寫<b class='flag-5'>測試</b>

    創(chuàng)建一個Library工程

    -&gt; Empty Project,工具鏈選擇RISC-V Cross GCC,具本如下圖 創(chuàng)建一個Library工程工程 將Library文件放入工程中,并點擊工程,右鍵 在設置
    發(fā)表于 10-20 09:30

    淘寶商品的API接口測試

    前兩天我們簡單的說了一些現(xiàn)有的幾大電商平臺,現(xiàn)在我們來介紹API接口測試操作。 使用說明: 首先需要開放平臺注冊賬號并創(chuàng)建應用,獲取 App Key 和 App Secret 將代碼
    的頭像 發(fā)表于 10-08 09:22 ?243次閱讀

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

    。專業(yè)工具通過虛擬化硬件接口(如GPIO、CAN總線),允許開發(fā)者在早期驗證代碼邏輯,實現(xiàn)軟硬件并行開發(fā)。例如,硬件在環(huán)(HIL)測試通過FPGA模擬硬件時序,盡管設備成本較高,但能顯著提高
    發(fā)表于 09-28 17:42

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

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

    Simulink模型測試典型問題分享-接口定義不完整

    典型測試問題分享-接口定義不完整 問題描述: ?計算模塊未定義數(shù)值范圍,存在越界風險。 ?信號未規(guī)定精度和誤差范圍,導致背靠背測試未通過。
    的頭像 發(fā)表于 09-22 15:40 ?1121次閱讀
    Simulink模型<b class='flag-5'>測試</b>典型問題分享-<b class='flag-5'>接口</b>定義不完整

    邊聊安全 | 軟件單元測試的設計方法

    上海磐時PANSHI“磐時,做汽車企業(yè)的安全智”軟件單元測試的設計方法寫在前面:軟件單元測試的設計是一個系統(tǒng)化的過程,旨在驗證代碼的最小可測試
    的頭像 發(fā)表于 09-05 16:18 ?7391次閱讀
    邊聊安全 | 軟件單元<b class='flag-5'>測試</b>的設計方法

    芯片硬件測試用例

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

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

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

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

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

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

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

    絕緣電阻測試儀使用方法

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

    STM32U5驅動從1.6.0更新至1.7.0后,LPBAM的一個接口返回錯誤是怎么回事?

    LPBAM的一個接口返回錯誤導致出錯,我通過反復對比,使用舊代碼工程沒問題,只要聽從提示更新代碼后重新生成就出現(xiàn)此問題,
    發(fā)表于 03-07 07:35