



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Visual Unit用戶使用手冊(cè)第一章軟件介紹11概述VisualUnit是一種可視化、自動(dòng)化、標(biāo)準(zhǔn)化、高效率的C/C+單元測(cè)試工具,主是是提升開(kāi)發(fā)人員代碼的質(zhì)量及開(kāi)發(fā)的效率。功能強(qiáng)大并且易學(xué)易用。1 2軟件特色? 自動(dòng)生成樁代碼、驅(qū)動(dòng)代碼和用例框架? 自動(dòng)生成用例代碼,人工及時(shí)干預(yù)避免生成垃圾;? 自動(dòng)將數(shù)據(jù)移到表格中,支持表格中編輯用例;? 根據(jù)有效值范圍、分段點(diǎn)生成測(cè)試數(shù)據(jù);? 根據(jù)指定組合生成用例;? 無(wú)需編程解決底層函數(shù)不可控、失真、難于初始化;? 無(wú)需編程解決局部靜態(tài)變量的用例中控制,以及中斷模擬;? 用例設(shè)計(jì)器高效找出遺漏用例實(shí)現(xiàn)高覆蓋;? 支持內(nèi)部輸出的自動(dòng)判斷;? 自動(dòng)生成
2、邊界測(cè)試用例。第二章軟件安裝與卸載2.1軟件安裝環(huán)境·軟件運(yùn)行環(huán)境要求:操作系統(tǒng): Windows2000, Windows XP, Windows Server 2003, Windows Vista。內(nèi)存: 128M,推薦 256M。硬盤(pán)空間: 200M。支持語(yǔ)言C/C+ 。測(cè)試IDEVU 采用用戶提供的編譯編輯環(huán)境來(lái)編譯編輯測(cè)試代碼,稱為測(cè)試IDE 包括: VC6.0、 VC 2003、VC 2005 、VC 2008、 Code:Blocks(使用IDE。支持的測(cè)試GCC編譯器 ) 。·對(duì)嵌入式項(xiàng)目的支持自動(dòng)解決各種嵌入式項(xiàng)目的平臺(tái)差異和編譯差異,以及自動(dòng)模擬底層調(diào)
3、用包括操作系統(tǒng) API ,支持各種嵌入式項(xiàng)目及Linux 項(xiàng)目。如果測(cè)試嵌入式項(xiàng)目有困難,可與技術(shù)支持聯(lián)系,技術(shù)支持可以根據(jù)項(xiàng)目特點(diǎn)定制工程模板。 在“幫助”菜單, 單擊“技術(shù)支持信息”,可查看技術(shù)支持聯(lián)系方式。2.2軟件安裝過(guò)程運(yùn)行安裝程序VU27Setup.exe在安裝向?qū)c(diǎn)擊“下一步”按鈕通過(guò)“瀏覽”按鈕選擇軟件的安裝路徑,點(diǎn)擊“下一步”按鈕點(diǎn)擊“安裝”按鈕進(jìn)入軟件安裝過(guò)程軟件安裝進(jìn)度顯示最終顯示軟件安裝成功,選擇是否直接啟動(dòng)該軟件,點(diǎn)擊完成按鈕即可2.3卸載過(guò)程從控制面板 / 添加刪除程序或運(yùn)行“開(kāi)始”菜單下“卸載 Visual Unit 2”程序 卸載 . 出現(xiàn)如下圖對(duì)話框第三章新建
4、工程在主工具欄單擊,或在“工程”菜單單擊“新建工程”,即可打開(kāi)“新建UDT 工程向?qū)А薄?.1 模板選擇一個(gè)項(xiàng)目可以建立任意數(shù)量的UDT工程,建立項(xiàng)目的第一個(gè)UDT工程時(shí),先選擇開(kāi)發(fā) IDE,再在右邊的模板列表中,根據(jù)項(xiàng)目特性選擇合適模板;UDT工程建立后,自動(dòng)保存為模板, 并出現(xiàn)在“或選擇現(xiàn)有項(xiàng)目”框內(nèi), 建立第二個(gè)或更多的 UDT工程時(shí), 可選擇先前的 UDT工程作為模板,通常只需設(shè)定不同的被測(cè)文件和外圍文件。3.2 導(dǎo)入數(shù)據(jù)只有當(dāng)開(kāi)發(fā)IDE 為 VC6.0 時(shí),才會(huì)出現(xiàn)“導(dǎo)入數(shù)據(jù)”頁(yè),可選擇.dsp文件導(dǎo)入項(xiàng)目數(shù)據(jù),也可以直接點(diǎn)擊“下一步”。3.3 常規(guī)信息設(shè)定 UDT工程的基本信息。建
5、立項(xiàng)目的第一個(gè)UDT工程時(shí),通常只需選擇“產(chǎn)品項(xiàng)目根目錄”和填寫(xiě)“ UDT 工程名稱”,建立項(xiàng)目的第二個(gè)或更多的UDT工程時(shí),通常只需填寫(xiě)“ UDT工程名稱”??蓪⑷蝿?wù)簡(jiǎn)寫(xiě)、模塊名稱或負(fù)責(zé)該模塊的開(kāi)發(fā)或測(cè)試人員的姓名,作為“UDT工程名稱”?!罢Z(yǔ)言”、 “開(kāi)發(fā) IDE”及“測(cè)試IDE”不能更改, 如果不正確, 請(qǐng)返回選擇正確的模板。3.4 設(shè)定測(cè)試任務(wù)點(diǎn)擊復(fù)選框,將需測(cè)試的源文件設(shè)為 T,不需測(cè)試但可能要使用的底層或關(guān)聯(lián)源文件設(shè)為 N,設(shè)為 X 的文件將被隔離, 必要時(shí)自動(dòng)打樁。 以后可從工程菜單打開(kāi)“工程屬性”,重設(shè)源文件類(lèi)別或指定新加入的源文件的類(lèi)別。能夠設(shè)為 N 的源文件不要設(shè)為 X,即
6、盡可能減少打樁。作為一種策略,以后可在代碼菜單單擊“屏蔽樁代碼”, 臨時(shí)屏蔽樁代碼, 利用鏈接錯(cuò)誤找出本應(yīng)鏈接的庫(kù)和本應(yīng)鏈接的源文件,以避免不當(dāng)打樁。按住 Shift鍵,點(diǎn)擊前面的加號(hào),可遞歸展開(kāi)設(shè)定完測(cè)試單元后,點(diǎn)擊“下一步”按鈕點(diǎn)擊“下一步”按鈕點(diǎn)擊“下一步”按鈕點(diǎn)擊“完成”,VU 會(huì)自動(dòng)解析代碼,生成樁、底層模擬、測(cè)試驅(qū)動(dòng)、用例框架,然后自動(dòng)啟動(dòng)測(cè)試 IDE,并自動(dòng)打開(kāi)測(cè)試工程。解析過(guò)程中,“系統(tǒng)信息”窗口會(huì)打印錯(cuò)誤及警告信息。由于“工程屬性/ 高級(jí)”頁(yè)未曾設(shè)置,點(diǎn)擊完成后,在VU自動(dòng)解析過(guò)程中,往往會(huì)出現(xiàn)各種鏈接錯(cuò)誤。解決方法是修改工程屬性。點(diǎn)擊主界面工具欄,或在“工程”菜單單擊“工程
7、屬性”,打開(kāi)“工程屬性”對(duì)話框,根據(jù)“系統(tǒng)信息”窗口打印出錯(cuò)誤及警告信息根據(jù)3.5 里的方法進(jìn)行修改。3.5 常見(jiàn)錯(cuò)誤及解決方法·文件 xxx包含的文件 xxx.h未找到常見(jiàn)的原因是頭文件搜索目錄遺漏。與一般編譯器一樣,VU 搜索頭文件時(shí),不搜索子目錄。切換到“頭文件”頁(yè),增加include目錄。 VU具有自動(dòng)搜索頭文件所在目錄的功能,如果認(rèn)為未找到的頭文件可能是庫(kù)頭文件,則點(diǎn)擊“庫(kù)頭文件”右側(cè)的“搜索”按鈕,否則點(diǎn)擊“常規(guī)頭文件”右側(cè)的“搜索”按鈕。打開(kāi)如下圖所示的對(duì)話框,未找到的頭文件已經(jīng)自動(dòng)列出,搜索的起始目錄也已設(shè)好,如果需添加其他起始目錄,請(qǐng)點(diǎn)擊“添加”, 不需要的起始目錄
8、, 可點(diǎn)擊選中后, 再點(diǎn)擊“刪除”。 點(diǎn)擊“查找”, “查找結(jié)果”框中會(huì)列出所有包含這些頭文件的目錄(如果在多個(gè)目錄下有同名頭文件,全部列出),請(qǐng)檢查,并將不正確的目錄刪除。最后點(diǎn)擊“加入”。另一種比較少見(jiàn)的原因是編譯條件遺漏。編譯條件是指產(chǎn)品項(xiàng)目使用了用戶設(shè)定的“預(yù)處理定義”(可在工程Setting中查看,如,VC6.0, Preprocessor Definitions為“WIN32,_DEBUG,_CONSOLE,_MBCS,MY_DEFINE”,則“ MY_DEFINE”就是“編譯條件”),為了讓 VU 的解析結(jié)果以及測(cè)試代碼的編譯結(jié)果與原項(xiàng)目一致,UDT工程和測(cè)試工程也要使用這些“編
9、譯條件”。解決辦法: 切換到“高級(jí)”頁(yè),點(diǎn)擊“預(yù)處理選項(xiàng)”,在“預(yù)處理定義”輸入框中,加入編譯條件。測(cè)試工程的項(xiàng)目Setting中也要加入同樣的編譯條件。錯(cuò)誤:未找到預(yù)編譯頭文件xxx.h解決辦法: 切換到“高級(jí)”頁(yè),點(diǎn)擊“擴(kuò)展”,打開(kāi)“擴(kuò)展”對(duì)話框,選中“不使用預(yù)編譯頭文件”。·警告:引用了同名頭文件可能導(dǎo)致錯(cuò)誤, 如果確認(rèn)引用多個(gè)同名頭文件是沒(méi)必要的,請(qǐng)切換到“頭文件”頁(yè),點(diǎn)擊“詳細(xì)分類(lèi)”,將不使用的頭文件設(shè)為X。警告:引用了同名頭文件可能導(dǎo)致錯(cuò)誤, 如果確認(rèn)引用多個(gè)同名頭文件是沒(méi)必要的,請(qǐng)切換到“頭文件”頁(yè),點(diǎn)擊“詳細(xì)分類(lèi)”,將不使用的頭文件設(shè)為X。·警告:頭文件缺少
10、預(yù)處理“哨兵”預(yù)處理“哨兵”是指:# ifndef XXX# define XXX / 文件內(nèi)容# endif用于防止頭文件被重編譯,重編譯可能產(chǎn)生“標(biāo)識(shí)符重定義”錯(cuò)誤,如果頭文件不需要重編譯,建議在產(chǎn)品項(xiàng)目的頭文件中加上“哨兵”。·警告:預(yù)處理“哨兵”已在其他文件定義可能因代碼未編譯產(chǎn)生“標(biāo)識(shí)符未定義”錯(cuò)誤,建議修改產(chǎn)品代碼,消除不同頭文件的相同預(yù)處理“哨兵”。·警告:在頭文件中定義變量可能產(chǎn)生重定義錯(cuò)誤,建議將產(chǎn)品代碼的變量定義移到源文件,頭文件只保留聲明。·警告:目錄太深或太長(zhǎng)由于 VU會(huì)自動(dòng)處理 #include指令,目錄太深或太長(zhǎng)可能導(dǎo)致#include
11、指令超過(guò)測(cè)試 IDE 的長(zhǎng)度限制, 引起編譯錯(cuò)誤, 建議將項(xiàng)目移到較淺的目錄中并縮短根文件夾名,重建UDT工程。界面總體布局如下圖所示第四章建立用例測(cè)試的目的是檢查程序的功能邏輯是否符合設(shè)計(jì), 即檢測(cè)程序在各種輸入下是否產(chǎn)生了正確的輸出,因此,一個(gè)典型的測(cè)試用例完成以下工作:設(shè)定輸入數(shù)據(jù)、執(zhí)行程序、驗(yàn)證輸出是否符合預(yù)期。4.1 設(shè)定輸入輸出數(shù)據(jù)點(diǎn)擊中間工具欄,打開(kāi)輸入輸出生成器, 如下圖所示,填入要傳入的參數(shù)值,預(yù)計(jì)要輸出的返回值,及用到的成員變量及全局變量。數(shù)據(jù)格式與標(biāo)準(zhǔn)C/C+語(yǔ)言的“文字常量”完全一致,也支持宏和enum。·字符串如:"abcd"·
12、寬字符串如:L"abcd"·字符如: 'a'·寬字符如:L'a'·整數(shù)如: 1234 、0xFF12·單精度浮點(diǎn)數(shù)如:12.00F·雙精度浮點(diǎn)數(shù)如:123.456·宏,如: TRUE/#define TRUE 1· enum,如 E1/enum E1, E2;上圖左下角有個(gè)表格化的選項(xiàng), 如選中, 設(shè)定完成后, 在用例數(shù)據(jù)窗口里將自動(dòng)添加到表格里也可以直接在用例數(shù)據(jù)表格里修改輸入輸出值。4.2 一次設(shè)定多個(gè)用例在“用例數(shù)據(jù)”頁(yè)面里,選中一列,點(diǎn)擊中間的按鈕,可復(fù)制選中的列,
13、再對(duì)其修改輸入輸出值。·批量添加用例數(shù)據(jù)點(diǎn)擊,打開(kāi)“用例生成/ 檢查器”,如下圖。·自動(dòng)生成用例數(shù)據(jù)在如上圖的“用例生成/ 檢查器”中, 點(diǎn)擊“生成數(shù)據(jù)”,打開(kāi)如下對(duì)話框,可以自動(dòng)為數(shù)字類(lèi)型生成數(shù)據(jù)。其中, “有效值內(nèi)的分段點(diǎn)”,是指在有效值范圍內(nèi),可能需分類(lèi)處理的數(shù)據(jù)的分界點(diǎn),例如,一個(gè)表示年齡的整數(shù),有效值范圍為0-200 ,程序需對(duì)不同年齡段做不同的處理:10 歲以下為兒童、20 歲以下為青年、60 歲以上為老人,那么,分段點(diǎn)填寫(xiě) 10,20,60 (用 , 分隔)。如果自動(dòng)生成的數(shù)據(jù)與“用例生成 / 檢查器”中的現(xiàn)有數(shù)據(jù)重復(fù),會(huì)自動(dòng)刪除。 自動(dòng)生成用例數(shù)據(jù)可以提高用
14、例設(shè)計(jì)的效率, 也有利于提高數(shù)據(jù)取值的完整性。下圖是設(shè)定輸入之間的組合, 單擊行首或列首, 可以重置全行或全列。 系統(tǒng)會(huì)保證設(shè)定的組合得于覆蓋。填寫(xiě)預(yù)期輸出用例數(shù)據(jù)生成器只生成用例的輸入,需為每個(gè)用例設(shè)定預(yù)期輸出。表格中,與左邊單元格相同的數(shù)據(jù)可以省略, 如下圖, 用例 2 的預(yù)期輸出與用例 1 相同, 用例 5 的預(yù)期輸出與用例 4 相同,都可以省略。設(shè)定完用例后,點(diǎn)擊中間的工具欄,執(zhí)行測(cè)試代碼。第五章測(cè)試輸出及應(yīng)用測(cè)試輸出信息主要有四個(gè)窗口,如下圖所示:5.1. 數(shù)據(jù)窗口數(shù)據(jù)窗口顯示成員變量、參數(shù)的輸入/ 輸出值,返回值和內(nèi)部輸入,以及內(nèi)部輸出。內(nèi)部輸入是指子函數(shù)所產(chǎn)生的數(shù)據(jù), 如子函數(shù)的
15、返回值、 輸出參數(shù)的結(jié)果值, 內(nèi)部輸入通常由底層模擬設(shè)定;內(nèi)部輸出是指在代碼的任何位置指定輸出的變量或表達(dá)式的值。5.2. 代碼窗口·當(dāng)前用例所執(zhí)行的代碼當(dāng)前用例所執(zhí)行的代碼用黑色顯示,當(dāng)前用例未執(zhí)行的代碼用紅色 顯示。注釋用綠色顯示,其他代碼(流程控制關(guān)鍵字及其括號(hào), ,邏輯操作符,字符和字符串)一概用藍(lán)色顯示。·未覆蓋代碼字體顏色為 紅色 且背景色為淡紅色的代碼是未覆蓋代碼(所有用例均未執(zhí)行) 。語(yǔ)句覆蓋的統(tǒng)計(jì)單位是語(yǔ)句塊,語(yǔ)句塊是指一組語(yǔ)句序列,在該語(yǔ)句序列中,如果第一條語(yǔ)句執(zhí)行了,在未發(fā)生異常的前提下,其他語(yǔ)句也會(huì)執(zhí)行。判定中的每個(gè)條件,按一個(gè)語(yǔ)句塊計(jì)算。語(yǔ)句覆蓋率
16、=已覆蓋語(yǔ)句塊數(shù)/全部語(yǔ)句塊數(shù),請(qǐng)參考信息窗口 。瀏覽當(dāng)前用例所執(zhí)行的代碼,結(jié)合數(shù)據(jù)窗口,程序行為一目了然,可以實(shí)現(xiàn)VTDD,也容易找出錯(cuò)誤原因。·條件覆蓋與MC/DC條件覆蓋的統(tǒng)計(jì)單位是條件的取值(真 / 假)。條件前面的 T 表示該條件的真值未覆蓋, F 表示假值未覆蓋。條件覆蓋率=已覆蓋條件數(shù)/全部條件數(shù)。MC/DC 的核心意思是每個(gè)條件獨(dú)立影響判定結(jié)果,如果某個(gè)條件未獨(dú)立影響判定結(jié)果,將在前面加上 M 。·用例設(shè)計(jì)點(diǎn)擊未覆蓋語(yǔ)句,或條件前面的 T 、 F 、 M ,右鍵菜單選擇“用例設(shè)計(jì)”,即可切換到用例設(shè)計(jì)器,為選中的語(yǔ)句、條件、或MC/DC設(shè)計(jì)覆蓋用例。條件的覆
17、蓋分為三個(gè)層次:最低層次是條件語(yǔ)句的覆蓋、其次是真值和假值的覆蓋、最高層次是MC/DC。由于完成了 T 或 F 覆蓋,條件語(yǔ)句即可完成覆蓋,因此,沒(méi)必要為條件語(yǔ)句覆蓋設(shè)計(jì)用例,未覆蓋的條件語(yǔ)句不能點(diǎn)擊。如果某一語(yǔ)句塊無(wú)法覆蓋 (測(cè)試用例設(shè)計(jì)器中, 待滿足條件和已滿足條件沖突) ,則該語(yǔ)句塊是冗余的,應(yīng)考慮刪除。 100%的語(yǔ)句覆蓋是很容易達(dá)到的,也是必須的。5.3. 信息窗口信息窗口從總體上提供測(cè)試結(jié)果信息。·測(cè)試用例:總的測(cè)試用例數(shù)。·當(dāng)前用例:當(dāng)前顯示的測(cè)試用例編號(hào),從1 開(kāi)始。數(shù)據(jù)窗口、代碼窗口、路徑窗口顯示的都是當(dāng)前用例的數(shù)據(jù)。所有窗口的快捷菜單都可以切換當(dāng)前用例。
18、·語(yǔ)句覆蓋:顯示已覆蓋的語(yǔ)句塊數(shù)/ 全部語(yǔ)句塊數(shù)以及語(yǔ)句覆蓋率。·條件覆蓋:顯示已覆蓋的條件值數(shù)/ 全部條件值數(shù)以及條件覆蓋率。·分支覆蓋:顯示已覆蓋的分支數(shù)/ 全部分支數(shù)以及分支覆蓋率。·C/DC(判定條件覆蓋) :顯未判定條件覆蓋率。·路徑覆蓋:顯示已覆蓋的路徑數(shù)/ 全部路徑數(shù)以及路徑覆蓋率。· MC/DC(修改判定條件覆蓋) :顯示修正判定條件覆蓋率。·測(cè)試斷言:顯示全部斷言數(shù)和失敗斷言數(shù)。斷言數(shù)就是 TEST_ASSERT()的數(shù)量。·測(cè)試狀態(tài):如果測(cè)試斷言全部通過(guò),顯示一個(gè)綠條,否則顯示一個(gè)紅條。
19、3;失敗測(cè)試:如果存在失敗斷言,列出失敗的斷言及其文件名和行號(hào)。如果存在失敗的斷言,表示程序代碼存在錯(cuò)誤或預(yù)期輸出是不正確的。單擊失敗的斷言, 產(chǎn)生失敗斷言的用例成為當(dāng)前用例, 其他窗口將顯示相關(guān)的數(shù)據(jù)。雙擊失敗的斷言,切換到用例數(shù)據(jù)窗口或用編輯器,并選中產(chǎn)生失敗斷言的用例。5.4. 路徑窗口路徑窗口畫(huà)出邏輯結(jié)構(gòu)圖,并標(biāo)示未覆蓋分支和路徑·刪除 / 恢復(fù)分支結(jié)構(gòu)、分支、語(yǔ)句塊、路徑都是可刪除的,如下圖所示,點(diǎn)擊選中某一對(duì)象,從快捷菜單中選擇“刪除”或“恢復(fù)”命令, 即可刪除或恢復(fù)該對(duì)象。 刪除或恢復(fù)一個(gè)對(duì)象時(shí),會(huì)重新統(tǒng)計(jì)程序路徑,信息窗口的相關(guān)數(shù)據(jù)會(huì)發(fā)生變化。·刪除不可達(dá)分
20、支有些分支是明顯不可達(dá)的,如循環(huán)結(jié)構(gòu)形成的分支,如果肯定會(huì)進(jìn)入循環(huán),那么不進(jìn)入循環(huán)的分支就是不可達(dá)的。 為未覆蓋分支設(shè)計(jì)測(cè)試用例時(shí), 如果待滿足條件和已滿足條件沖突,則該分支是不可達(dá)的。不可達(dá)分支刪除后,所有通過(guò)該分支的路徑會(huì)自動(dòng)刪除。·刪除不可覆蓋的路徑:為未覆蓋路徑設(shè)計(jì)測(cè)試用例時(shí),如果待滿足條件和已滿足條件沖突,則該路徑是不可覆蓋的。 被刪除的路徑, 信息窗口視為不存在, 但邏輯結(jié)構(gòu)圖中只是在路徑入口處畫(huà)個(gè)紅X,隨時(shí)可以恢復(fù)。邏輯結(jié)構(gòu)圖在統(tǒng)計(jì)路徑時(shí)仍然把已刪除的路徑計(jì)算在內(nèi),因此,路徑數(shù)量會(huì)與信息窗口不相同。第六章高級(jí)技巧6.1 底層模擬什么是底層模擬底層模擬就是在用例中模擬、
21、控制子函數(shù)的行為, 使底層函數(shù)產(chǎn)生的數(shù)據(jù)像參數(shù)一樣可以在用例中設(shè)置,稱不內(nèi)部輸入,包括: 指定子函數(shù)的返回值;指定子函數(shù)的輸出參數(shù)的結(jié)果值;指定成員變量的值(僅限于C+);指定全局變量的值。為什么要引入底層模擬·解決失真:子函數(shù)未實(shí)現(xiàn)或被隔離,則用自動(dòng)生成的樁函數(shù)來(lái)代替。由于樁函數(shù)通常什么也不做,造成失真, 使測(cè)試無(wú)法進(jìn)行,因此, 調(diào)用隔離函數(shù)時(shí)應(yīng)在用例中設(shè)定其行為,以便模擬真實(shí)的情境。·子函數(shù)不可控或不符合測(cè)試要求:子函數(shù)的行為難于控制,例如調(diào)用一個(gè)通過(guò)硬件取環(huán)境溫度的函數(shù),環(huán)境溫度顯然不能按測(cè)試要求快速變化;再如調(diào)用一個(gè)返回隨機(jī)數(shù)的函數(shù),需要該函數(shù)返回指定值,真實(shí)代碼無(wú)
22、法返回指定值。子函數(shù)從文件或數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),數(shù)據(jù)可能不存在或不符合測(cè)試要求,希望在用例中設(shè)定; 子函數(shù)的某些行為難于出現(xiàn),例如讀取內(nèi)存失敗,連接網(wǎng)絡(luò)失敗等,希望在用例中設(shè)定;程序的某些執(zhí)行邏輯很難通過(guò)改變參數(shù)或其他變量來(lái)覆蓋,希望通過(guò)控制子函數(shù)的輸出來(lái)覆蓋,·難于初始化被測(cè)試函數(shù)的一些輸入可能很復(fù)雜,但僅用于傳遞給底層函數(shù),以便取得一個(gè)簡(jiǎn)單的值,這種情形可以直接設(shè)定底層函數(shù)的輸出,避免復(fù)雜的初始化。對(duì)于一個(gè)函數(shù)來(lái)說(shuō),需要直接讀取的數(shù)據(jù)往往并不多,復(fù)雜的輸入多是傳遞給底層函數(shù)的數(shù)據(jù),巧用底層模擬可以大幅降低用例設(shè)計(jì)的難度。·控制局部靜態(tài)變量局部靜態(tài)變量與全局變量一樣,測(cè)試時(shí)
23、需在用例中控制,但用例中卻無(wú)法訪問(wèn)。·模擬中斷常用于嵌入式測(cè)試,可模擬中斷造成的全局變量修改·“控制測(cè)試”“控制測(cè)試” , 就是測(cè)試程序“在某種條件下,是否做了某個(gè)動(dòng)作”,只需要知道做了沒(méi)有,不需要判斷或無(wú)法判斷輸出數(shù)據(jù)。底層模擬的實(shí)現(xiàn)方法主界面右側(cè)切換到用例代碼窗口,在左側(cè)函數(shù)代碼窗口雙擊子函數(shù)名或參數(shù),即可打開(kāi)“底層模擬器”并自動(dòng)填好初始數(shù)據(jù), 如下圖。 如果被測(cè)試代碼未編寫(xiě), 可用右鍵菜單打開(kāi)“底層模擬器”。·底層模擬器的基本使用在函數(shù)代碼窗口,雙擊子函數(shù)名或參數(shù),即可找開(kāi)“底層模擬器”,并自動(dòng)填好初始數(shù)據(jù),如下圖。如果被測(cè)試代碼未編寫(xiě),可用快捷菜單打開(kāi)“底
24、層模擬器”。控制局部變量和模擬中斷,不需要打開(kāi)底層模擬器“子函數(shù)名 ”編輯框:填寫(xiě)子函數(shù)名,一般會(huì)自動(dòng)填寫(xiě);“不可屏蔽 ”復(fù)選框:如果選中, 那么該底層模擬總是有效, 否則,當(dāng)在“設(shè)定”的“測(cè)試”頁(yè)選中了“屏蔽底層模擬時(shí)”時(shí),底層模擬會(huì)被屏蔽,改為調(diào)用實(shí)際代碼或空樁?!白雍瘮?shù)名”編輯框:填寫(xiě)子函數(shù)名,一般會(huì)自動(dòng)填寫(xiě);“不可屏蔽”復(fù)選框:如果選中,那么該底層模擬總是有效, 否則,當(dāng)在“設(shè)定”的“測(cè)試”頁(yè)選中了“屏蔽底層模擬時(shí)”時(shí),底層模擬會(huì)被屏蔽,改為調(diào)用實(shí)際代碼或空樁?!霸O(shè)定哪個(gè)值? ”單選鈕: 選擇調(diào)用該子函數(shù)后, 需要設(shè)定數(shù)值的目標(biāo)對(duì)象, 如果選中“僅判斷調(diào)用次數(shù)”,則不設(shè)定任何數(shù)據(jù),僅判
25、斷子函數(shù)的調(diào)用次數(shù)是否符合預(yù)期。“預(yù)期調(diào)用次數(shù) ”單選鈕: 底層模擬功能還可以自動(dòng)計(jì)算子函數(shù)的調(diào)用次數(shù), 不符合預(yù)期時(shí)會(huì)報(bào)告錯(cuò)誤, 缺省值為“忽略”。 此功能一般適用于非表格化的用例, 對(duì)于表格化用例來(lái)說(shuō),由于指定的預(yù)期調(diào)用次數(shù)對(duì)表格中的所有用例有效,而不同用例的實(shí)際調(diào)用次數(shù)可能不同,因此易發(fā)生誤報(bào)。“前置代碼 ”編輯框:如果模擬值是復(fù)雜對(duì)象或?qū)ο笾羔?,在這里定義和初始化該對(duì)象。“模擬值 ”編輯框:設(shè)定模擬目標(biāo)的結(jié)果值,分為四類(lèi):數(shù)字,字符,字符串,對(duì)象。數(shù)字直接填寫(xiě),如1234 或 123.789,字符要加單引號(hào),如'a' ,字符串要加雙引號(hào),如UNIT" ,對(duì)象要
26、先在前置代碼中定義并初始化,然后填寫(xiě)對(duì)象名或指針,如data"VISUAL或 &data ,下圖為返回一個(gè)結(jié)構(gòu)指針:關(guān)閉“底層模擬器”后, 會(huì)自動(dòng)生成底層模擬代碼, 這些代碼也是用例輸入的一部分。 除“僅判斷調(diào)用次數(shù)”外,其他底層模擬代碼均是從第一個(gè)參數(shù)開(kāi)始即為模擬值。·底層模擬數(shù)據(jù)表格化生成代碼后,雙擊數(shù)據(jù)(以下示例的紅色部分),即可實(shí)現(xiàn)表格化。SF_RETURN_DIG(123456.789 , "Return_Double", RUN_TIMES_NOZERO, 1) / 模擬返回值,所以設(shè)定返回值是“數(shù)據(jù)”SF_EXPECT_RUNTIM
27、ES_HARD("Operate1",RUN_TIMES_NOZERO,1)/控制測(cè)試,只判斷子函數(shù)執(zhí)行次數(shù),所以最后的預(yù)期執(zhí)行次數(shù)是“數(shù)據(jù)”表格中忽略個(gè)別用例的底層模擬將單元格的值設(shè)為“ / ”。底層模擬應(yīng)放在輸入的最后底層模擬可以視為內(nèi)部輸入,即函數(shù)內(nèi)部獲取的輸入,放在輸入的最后易于閱讀和理解;對(duì)于 C 語(yǔ)言來(lái)說(shuō), 底層模擬代碼放在最后,還可以避免可執(zhí)行語(yǔ)句之后聲明變量導(dǎo)致編譯錯(cuò)誤。底層模擬調(diào)用了一個(gè)或多個(gè)函數(shù),是普通的執(zhí)行語(yǔ)句,對(duì)于C語(yǔ)言來(lái)說(shuō),這類(lèi)語(yǔ)句后面不能再聲明變量。設(shè)定成員變量、全局變量的值在“設(shè)定哪個(gè)值”中選擇成員變量或全局變量,并填寫(xiě)變量名,其他與設(shè)定返回值
28、一致。這里的成員變量是指被測(cè)試類(lèi)的成員變量,因此,設(shè)定成員變量一般用于子函 數(shù)是被測(cè)試類(lèi)的成員函數(shù),并且它的功能是修改成員變量時(shí)。設(shè)定輸出參數(shù)與設(shè)定返回值有兩點(diǎn)不同:一是通過(guò)雙擊參數(shù)來(lái)打開(kāi)底層模擬器,這樣系統(tǒng)會(huì)自動(dòng)選擇需要模擬的參數(shù);二是填寫(xiě)的模擬值是“值”而不是“地址”,例如:子函數(shù)為: MYSTRUCT1* func(MYSTRUCT* pData);前置代碼: MYSTRUCT data; .如果模擬返回值,則模擬值填寫(xiě):&data ,因?yàn)槲覀円祷氐木褪墙Y(jié)構(gòu)對(duì)象的地址。如果模擬參數(shù)值,則填寫(xiě):data ,因?yàn)槲覀円O(shè)定的不是地址,而是對(duì)象的值,用簡(jiǎn)單類(lèi)型比較容易理解,例如,子函數(shù):int* subfunc(int * ptr);模擬返回值 ( 返回一個(gè)指針) ,要在“前置代碼”中定義一個(gè)變量如intdata=0;,然后返回合法的地址:&data ;模擬輸出參數(shù),則是為了修改ptr所指向的內(nèi)存的數(shù)據(jù),直接填寫(xiě)這個(gè)數(shù)據(jù)就可以了,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年采購(gòu)師(高級(jí))考試試卷:采購(gòu)團(tuán)隊(duì)管理與供應(yīng)鏈協(xié)同效應(yīng)試題
- 2025年地區(qū)公務(wù)員證監(jiān)會(huì)計(jì)類(lèi)專(zhuān)業(yè)試卷:會(huì)計(jì)信息系統(tǒng)與審計(jì)技術(shù)試題
- 全職員工在職表現(xiàn)及信息證明(7篇)
- 十三歲的天空七年級(jí)作文300字9篇
- 2025年初中化學(xué)九年級(jí)上冊(cè)期中測(cè)試卷化學(xué)元素知識(shí)篇
- 我最喜歡的季節(jié)秋作文15篇
- 2025年電氣工程師基礎(chǔ)試題
- 2025年物聯(lián)網(wǎng)智能傳感器在智能家電互聯(lián)互通與控制中的應(yīng)用與發(fā)展報(bào)告
- 電子商務(wù)平臺(tái)的用戶需求分析與產(chǎn)品優(yōu)化
- 個(gè)人養(yǎng)老金制度對(duì)金融市場(chǎng)風(fēng)險(xiǎn)管理法規(guī)的完善與實(shí)施效果評(píng)估報(bào)告
- 食品安全自查、從業(yè)人員健康管理、進(jìn)貨查驗(yàn)記錄、食品安全事故處置等保證食品安全規(guī)章制度
- 完整版2024年注安法規(guī)真題及答案(85題)
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理體系 審核與認(rèn)證機(jī)構(gòu)要求》中文版(機(jī)翻)
- 員工工資表范本
- 醫(yī)院培訓(xùn)課件:《麻醉藥品、精神藥品管理培訓(xùn)》
- 室內(nèi)裝修拆除施工方案
- 天津市濱海新區(qū)2023-2024學(xué)年高一年級(jí)下學(xué)期期末檢測(cè)語(yǔ)文試題(解析版)
- DB12-T 1153-2022 城市軌道交通運(yùn)營(yíng)設(shè)備設(shè)施大修和更新改造技術(shù)規(guī)范
- 北京市海淀區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期期末考試語(yǔ)文試卷(含答案)
- 叉車(chē)裝卸搬運(yùn)合同協(xié)議書(shū)
- 突發(fā)事件應(yīng)對(duì)法考試題庫(kù)
評(píng)論
0/150
提交評(píng)論