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

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

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

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

北匯信息POLELINK ? 2022-08-04 14:37 ? 次閱讀

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

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

一、庫接口測(cè)試

(一)庫文件

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

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

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

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

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

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

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

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

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

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

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

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

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

poYBAGLrOgiASp3RAAB36SL_x2w424.png

poYBAGLrOhCAF5n2AACE58UQyqM954.png

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

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

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

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

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

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

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

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

本例中,我們是利用manager.c和database.c一起生成靜態(tài)庫文件manager_driver.lib的,所以在構(gòu)建測(cè)試環(huán)境的第3步需要選擇“庫接口測(cè)試方法”并在“Link Options”添加該文件及所在路徑,如圖2所示。同時(shí)在構(gòu)建測(cè)試環(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、測(cè)試用例編寫與執(zhí)行

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

poYBAGLrOlSAEjWuAABhkE54dEQ448.png

pYYBAGLrOl2AQHHJAAEKsv_XNSM597.png

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

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

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

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

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

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

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

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

poYBAGLrOoWAQ7btAAEuGA59J2E457.png

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

三、總結(jié)

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

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

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

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

    關(guān)注

    8

    文章

    5040

    瀏覽量

    126228
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    端到端測(cè)試用例怎么寫

    編寫端到端測(cè)試用例是確保軟件系統(tǒng)從頭到尾能夠正常工作的關(guān)鍵步驟。以下是一個(gè)詳細(xì)的指南,介紹如何編寫端到端測(cè)試用例: 一、理解端到端測(cè)試 端到端測(cè)試(End-to-End
    的頭像 發(fā)表于 09-20 10:29 ?236次閱讀

    接口測(cè)試怎么測(cè)多個(gè)服務(wù)器連接

    接口測(cè)試是軟件開發(fā)過程中的一個(gè)重要環(huán)節(jié),用于驗(yàn)證系統(tǒng)組件之間的交互是否符合預(yù)期。在多服務(wù)器環(huán)境中,接口測(cè)試的復(fù)雜性會(huì)增加,因?yàn)樾枰紤]服務(wù)器之間的連接和通信。本文將詳細(xì)介紹如何在多服務(wù)
    的頭像 發(fā)表于 05-30 15:16 ?308次閱讀

    接口測(cè)試測(cè)試什么內(nèi)容

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

    接口測(cè)試的概念和重點(diǎn)是什么?

    是確保這些交互按照設(shè)計(jì)和規(guī)范進(jìn)行,從而保證整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。 接口測(cè)試主要關(guān)注以下幾個(gè)方面: 功能性:驗(yàn)證接口是否能夠按照預(yù)期執(zhí)行其功能,包括輸入、處理和輸出。 性能:評(píng)估接口
    的頭像 發(fā)表于 05-30 15:08 ?541次閱讀

    接口測(cè)試的工具有哪些種類

    接口測(cè)試是軟件測(cè)試的一個(gè)重要環(huán)節(jié),主要用于驗(yàn)證系統(tǒng)各模塊之間的交互是否符合預(yù)期。隨著軟件行業(yè)的快速發(fā)展,接口測(cè)試工具也不斷涌現(xiàn),為
    的頭像 發(fā)表于 05-30 15:07 ?532次閱讀

    接口測(cè)試測(cè)試點(diǎn)有哪些類型

    接口測(cè)試是軟件測(cè)試的一個(gè)重要組成部分,主要用于驗(yàn)證系統(tǒng)各模塊之間的接口是否按照預(yù)期工作。接口測(cè)試
    的頭像 發(fā)表于 05-30 15:04 ?1551次閱讀

    接口測(cè)試的主要目的是什么

    接口測(cè)試的主要目的是什么? 在軟件開發(fā)過程中,接口測(cè)試是一種重要的測(cè)試方法,用于驗(yàn)證不同模塊、系統(tǒng)或服務(wù)之間的交互是否符合預(yù)期。本文將詳細(xì)探
    的頭像 發(fā)表于 05-30 15:02 ?865次閱讀

    接口測(cè)試的流程和步驟有哪些

    接口測(cè)試是軟件測(cè)試的一個(gè)重要組成部分,主要用于驗(yàn)證系統(tǒng)各模塊之間的交互是否符合預(yù)期。 一、接口測(cè)試概述
    的頭像 發(fā)表于 05-30 14:59 ?2438次閱讀

    接口測(cè)試屬于功能測(cè)試嗎為什么

    接口測(cè)試和功能測(cè)試是軟件測(cè)試中的兩種不同類型,它們之間有一定的聯(lián)系,但也存在明顯的區(qū)別。本文將詳細(xì)討論接口
    的頭像 發(fā)表于 05-30 14:57 ?375次閱讀

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

    常見的方法,包括黑盒測(cè)試、白盒測(cè)試、灰盒測(cè)試、等價(jià)類劃分、邊界值分析、錯(cuò)誤推測(cè)法、因果圖法、狀態(tài)遷移測(cè)試、場(chǎng)景法、決策表
    的頭像 發(fā)表于 05-30 14:55 ?474次閱讀

    功能測(cè)試是白盒還是黑盒測(cè)試

    功能測(cè)試是軟件測(cè)試的一種方法,主要用于驗(yàn)證軟件的功能是否滿足需求規(guī)格說明書中的要求。功能測(cè)試可以采用白盒測(cè)試黑盒
    的頭像 發(fā)表于 05-30 14:53 ?609次閱讀

    功能測(cè)試接口測(cè)試的區(qū)別

    功能測(cè)試接口測(cè)試是軟件測(cè)試的兩個(gè)重要方面,它們?cè)诖_保軟件質(zhì)量和性能方面發(fā)揮著關(guān)鍵作用。本文將詳細(xì)介紹功能測(cè)試
    的頭像 發(fā)表于 05-29 16:02 ?739次閱讀

    什么是接口測(cè)試?如何開展接口測(cè)試

    接口其實(shí)就是前端頁面或APP等調(diào)用與后端做交互用的,有朋友會(huì)問,我的功能測(cè)試都測(cè)好了,為什么還要測(cè)接口呢?
    發(fā)表于 03-14 14:15 ?465次閱讀
    什么是<b class='flag-5'>接口</b><b class='flag-5'>測(cè)試</b>?如何開展<b class='flag-5'>接口</b><b class='flag-5'>測(cè)試</b>

    PCBA測(cè)試測(cè)試設(shè)備都有哪些?

    一站式PCBA智造廠家今天為大家講講 測(cè)試PCBA需要哪些儀器設(shè)備?PCBA加工所需要用到的檢測(cè)設(shè)備。PCBA測(cè)試(Printed Circuit Board Assembly Testing)是指
    的頭像 發(fā)表于 03-11 09:40 ?934次閱讀

    IZYTRONIQ測(cè)試軟件介紹——管理測(cè)試設(shè)備數(shù)據(jù)

    一款完整的用于管理和記錄測(cè)試過程的數(shù)據(jù)軟件IZYTRONIQ
    的頭像 發(fā)表于 01-11 11:11 ?349次閱讀
    IZYTRONIQ<b class='flag-5'>測(cè)試</b>軟件介紹——管理<b class='flag-5'>測(cè)試</b>設(shè)備數(shù)據(jù)<b class='flag-5'>庫</b>