chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

其實(shí)一個(gè)代碼工程除了開(kāi)發(fā)人員手寫(xiě)代碼外,還包含了很多庫(kù)文件,甚至有的庫(kù)文件或是經(jīng)過(guò)開(kāi)發(fā)人員修改或是直接由開(kāi)發(fā)人員編寫(xiě)的。那么對(duì)于這些文件又該如何測(cè)試呢?請(qǐng)看如下分解!

一、庫(kù)接口測(cè)試

(一)庫(kù)文件

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

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

(二)靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)

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

(三)相關(guān)文件的一些擴(kuò)展名

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

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

(四)庫(kù)接口測(cè)試

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

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

二、利用VectorCAST/C++進(jìn)行庫(kù)接口測(cè)試

對(duì)于如何使用VectorCAST/C++進(jìn)行靜態(tài)庫(kù)或者動(dòng)態(tài)庫(kù)的單元測(cè)試,下面我們?nèi)允褂蒙掀恼轮械狞c(diǎn)餐服務(wù)程序(采用GCC編譯鏈),來(lái)具體說(shuō)明。

(一)點(diǎn)餐服務(wù)程序的結(jié)構(gòu)內(nèi)容及說(shuō)明

poYBAGLrOgiASp3RAAB36SL_x2w424.png

poYBAGLrOhCAF5n2AACE58UQyqM954.png

圖 1點(diǎn)餐服務(wù)程序的結(jié)構(gòu)內(nèi)容及說(shuō)明

(二)利用VectorCAST/C++進(jìn)行靜態(tài)庫(kù)接口測(cè)試

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

對(duì)于這個(gè)點(diǎn)餐主程序manager_driver.c,我們可以將manager.c和database.c分別作為一個(gè)調(diào)用的庫(kù)文件來(lái)使用,也可以一起作為一個(gè)調(diào)用的庫(kù)文件來(lái)使用。本例中,將manager.c和database.c一起作為一個(gè)調(diào)用的庫(kù)文件來(lái)使用。

使用一個(gè)BAT腳本生成靜態(tài)庫(kù)文件,腳本內(nè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

說(shuō)明:無(wú)論靜態(tài)庫(kù),還是動(dòng)態(tài)庫(kù),都是在*.o目標(biāo)文件基礎(chǔ)上生成的。

2、環(huán)境構(gòu)建基本過(guò)程

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

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

pYYBAGLrOi-AB43LAAGSTnfVKnk986.png

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

poYBAGLrOjWAdYEGAADByjzH0Gc062.png

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

3、測(cè)試用例編寫(xiě)與執(zhí)行

按照上述說(shuō)明成功構(gòu)建測(cè)試環(huán)境。編寫(xiě)測(cè)試用例及執(zhí)行測(cè)試用例,結(jié)果如下圖4所示。

poYBAGLrOlSAEjWuAABhkE54dEQ448.png

pYYBAGLrOl2AQHHJAAEKsv_XNSM597.png

圖4測(cè)試用例編寫(xiě)與執(zhí)行

細(xì)心的小伙伴可以注意到上圖左邊部分只有顯示了執(zhí)行狀態(tài)圖標(biāo),因?yàn)槲覀儾捎玫脑摲N測(cè)試屬于黑盒測(cè)試方法,所以我們?cè)跇?gòu)建環(huán)境的第4步,沒(méi)有勾選“Whitebox”前面的復(fù)選框,自然也沒(méi)有結(jié)構(gòu)覆蓋度圖標(biāo)。

(三)利用VectorCAST/C++進(jìn)行動(dòng)態(tài)庫(kù)接口測(cè)試

1、動(dòng)態(tài)庫(kù)文件的生成

與靜態(tài)庫(kù)文件生成類(lèi)似,將manager.c和database.c一起作為一個(gè)調(diào)用的動(dòng)態(tài)庫(kù)文件來(lái)使用。

使用一個(gè)BAT腳本生成動(dòng)態(tài)庫(kù)文件,腳本內(nè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)境構(gòu)建基本過(guò)程

動(dòng)態(tài)庫(kù)接口測(cè)試與靜態(tài)庫(kù)接口測(cè)試基本一致,不同的地方如下說(shuō)明:

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

poYBAGLrOoWAQ7btAAEuGA59J2E457.png

圖5選擇添加動(dòng)態(tài)庫(kù)文件manager_driver.dll

三、總結(jié)

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

VectorCAST/C++作為Vector公司的代碼動(dòng)態(tài)測(cè)試工具,支持自動(dòng)生成測(cè)試用例,提供完善的覆蓋度信息,還可以與Git/SVN/Jekins等工具集成等等;后續(xù)也會(huì)為大家?guī)?lái)更多基于VectorCAST/C++的動(dòng)態(tài)測(cè)試相關(guān)內(nèi)容;同時(shí)也歡迎垂詢和溝通,共同探討測(cè)試相關(guān)問(wèn)題。

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

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

    關(guān)注

    8

    文章

    6016

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    淘寶商品的API接口測(cè)試

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

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

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

    測(cè)試小白3分鐘上手,零代碼自動(dòng)化測(cè)試平臺(tái),15分鐘搭建自動(dòng)化測(cè)試方案

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

    Simulink模型測(cè)試典型問(wèn)題分享-接口定義不完整

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

    邊聊安全 | 軟件單元測(cè)試的設(shè)計(jì)方法

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

    芯片硬件測(cè)試用例

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

    LambdaTest推出全球首個(gè)AI智能體測(cè)試平臺(tái)

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

    Green Testing Lab聯(lián)合CSM開(kāi)展電池溫度測(cè)試

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

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

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

    絕緣電阻測(cè)試儀使用方法

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

    STM32U5驅(qū)動(dòng)庫(kù)從1.6.0更新至1.7.0后,LPBAM的一個(gè)庫(kù)接口返回錯(cuò)誤是怎么回事?

    LPBAM的一個(gè)庫(kù)接口返回錯(cuò)誤導(dǎo)致出錯(cuò),我通過(guò)反復(fù)對(duì)比,使用舊代碼工程沒(méi)問(wèn)題,只要聽(tīng)從提示更新代碼庫(kù)后重新生成就出現(xiàn)此問(wèn)題,
    發(fā)表于 03-07 07:35

    嵌入式軟件測(cè)試的實(shí)戰(zhàn)洞察:從代碼漏洞到安全屏障

    轉(zhuǎn)換邏輯未考慮ARM Cortex-M7芯片在低溫的運(yùn)算精度偏移。這種硬件與代碼的耦合性問(wèn)題,正是傳統(tǒng)測(cè)試方法難以捕捉的“致命暗礁”?? ? ?。 案例解析:芯片特性與代碼的隱秘博弈
    的頭像 發(fā)表于 02-28 13:09 ?611次閱讀

    SDRAM控制器設(shè)計(jì)之control_interface.v代碼解析

    control_interface.v文件里已經(jīng)寫(xiě)了非常詳盡的代碼備注。本文繼續(xù)對(duì)該文件代碼進(jìn)行講解,并給出SignalTap波形輔助讀者理解。
    的頭像 發(fā)表于 02-19 15:31 ?857次閱讀
    SDRAM控制器設(shè)計(jì)之control_<b class='flag-5'>interface</b>.v<b class='flag-5'>代碼</b>解析

    快速上手RK3588常用接口測(cè)試

    前言:在之前的幾期中,我們?cè)敿?xì)介紹了RK3588開(kāi)發(fā)板的大部分基礎(chǔ)功能調(diào)試方法,本期是針對(duì)常用通信接口以及IO口的測(cè)試,主要包括的調(diào)試內(nèi)容有:USB2.0測(cè)試、CAN通信測(cè)試、UART
    的頭像 發(fā)表于 12-26 08:33 ?4244次閱讀
    快速上手RK3588常用<b class='flag-5'>接口</b><b class='flag-5'>測(cè)試</b>