VisualUnit使用手冊范本_第1頁
VisualUnit使用手冊范本_第2頁
VisualUnit使用手冊范本_第3頁
VisualUnit使用手冊范本_第4頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Visual Unit用戶使用手冊第一章軟件介紹11概述VisualUnit是一種可視化、自動化、標(biāo)準(zhǔn)化、高效率的C/C+單元測試工具,主是是提升開發(fā)人員代碼的質(zhì)量及開發(fā)的效率。功能強(qiáng)大并且易學(xué)易用。1 2軟件特色? 自動生成樁代碼、驅(qū)動代碼和用例框架? 自動生成用例代碼,人工及時干預(yù)避免生成垃圾;? 自動將數(shù)據(jù)移到表格中,支持表格中編輯用例;? 根據(jù)有效值范圍、分段點(diǎn)生成測試數(shù)據(jù);? 根據(jù)指定組合生成用例;? 無需編程解決底層函數(shù)不可控、失真、難于初始化;? 無需編程解決局部靜態(tài)變量的用例中控制,以及中斷模擬;? 用例設(shè)計(jì)器高效找出遺漏用例實(shí)現(xiàn)高覆蓋;? 支持內(nèi)部輸出的自動判斷;? 自動生成

2、邊界測試用例。第二章軟件安裝與卸載2.1軟件安裝環(huán)境·軟件運(yùn)行環(huán)境要求:操作系統(tǒng): Windows2000, Windows XP, Windows Server 2003, Windows Vista。內(nèi)存: 128M,推薦 256M。硬盤空間: 200M。支持語言C/C+ 。測試IDEVU 采用用戶提供的編譯編輯環(huán)境來編譯編輯測試代碼,稱為測試IDE 包括: VC6.0、 VC 2003、VC 2005 、VC 2008、 Code:Blocks(使用IDE。支持的測試GCC編譯器 ) 。·對嵌入式項(xiàng)目的支持自動解決各種嵌入式項(xiàng)目的平臺差異和編譯差異,以及自動模擬底層調(diào)

3、用包括操作系統(tǒng) API ,支持各種嵌入式項(xiàng)目及Linux 項(xiàng)目。如果測試嵌入式項(xiàng)目有困難,可與技術(shù)支持聯(lián)系,技術(shù)支持可以根據(jù)項(xiàng)目特點(diǎn)定制工程模板。 在“幫助”菜單, 單擊“技術(shù)支持信息”,可查看技術(shù)支持聯(lián)系方式。2.2軟件安裝過程運(yùn)行安裝程序VU27Setup.exe在安裝向?qū)c(diǎn)擊“下一步”按鈕通過“瀏覽”按鈕選擇軟件的安裝路徑,點(diǎn)擊“下一步”按鈕點(diǎn)擊“安裝”按鈕進(jìn)入軟件安裝過程軟件安裝進(jìn)度顯示最終顯示軟件安裝成功,選擇是否直接啟動該軟件,點(diǎn)擊完成按鈕即可2.3卸載過程從控制面板 / 添加刪除程序或運(yùn)行“開始”菜單下“卸載 Visual Unit 2”程序 卸載 . 出現(xiàn)如下圖對話框第三章新建

4、工程在主工具欄單擊,或在“工程”菜單單擊“新建工程”,即可打開“新建UDT 工程向?qū)А薄?.1 模板選擇一個項(xiàng)目可以建立任意數(shù)量的UDT工程,建立項(xiàng)目的第一個UDT工程時,先選擇開發(fā) IDE,再在右邊的模板列表中,根據(jù)項(xiàng)目特性選擇合適模板;UDT工程建立后,自動保存為模板, 并出現(xiàn)在“或選擇現(xiàn)有項(xiàng)目”框內(nèi), 建立第二個或更多的 UDT工程時, 可選擇先前的 UDT工程作為模板,通常只需設(shè)定不同的被測文件和外圍文件。3.2 導(dǎo)入數(shù)據(jù)只有當(dāng)開發(fā)IDE 為 VC6.0 時,才會出現(xiàn)“導(dǎo)入數(shù)據(jù)”頁,可選擇.dsp文件導(dǎo)入項(xiàng)目數(shù)據(jù),也可以直接點(diǎn)擊“下一步”。3.3 常規(guī)信息設(shè)定 UDT工程的基本信息。建

5、立項(xiàng)目的第一個UDT工程時,通常只需選擇“產(chǎn)品項(xiàng)目根目錄”和填寫“ UDT 工程名稱”,建立項(xiàng)目的第二個或更多的UDT工程時,通常只需填寫“ UDT工程名稱”。可將任務(wù)簡寫、模塊名稱或負(fù)責(zé)該模塊的開發(fā)或測試人員的姓名,作為“UDT工程名稱”。“語言”、 “開發(fā) IDE”及“測試IDE”不能更改, 如果不正確, 請返回選擇正確的模板。3.4 設(shè)定測試任務(wù)點(diǎn)擊復(fù)選框,將需測試的源文件設(shè)為 T,不需測試但可能要使用的底層或關(guān)聯(lián)源文件設(shè)為 N,設(shè)為 X 的文件將被隔離, 必要時自動打樁。 以后可從工程菜單打開“工程屬性”,重設(shè)源文件類別或指定新加入的源文件的類別。能夠設(shè)為 N 的源文件不要設(shè)為 X,即

6、盡可能減少打樁。作為一種策略,以后可在代碼菜單單擊“屏蔽樁代碼”, 臨時屏蔽樁代碼, 利用鏈接錯誤找出本應(yīng)鏈接的庫和本應(yīng)鏈接的源文件,以避免不當(dāng)打樁。按住 Shift鍵,點(diǎn)擊前面的加號,可遞歸展開設(shè)定完測試單元后,點(diǎn)擊“下一步”按鈕點(diǎn)擊“下一步”按鈕點(diǎn)擊“下一步”按鈕點(diǎn)擊“完成”,VU 會自動解析代碼,生成樁、底層模擬、測試驅(qū)動、用例框架,然后自動啟動測試 IDE,并自動打開測試工程。解析過程中,“系統(tǒng)信息”窗口會打印錯誤及警告信息。由于“工程屬性/ 高級”頁未曾設(shè)置,點(diǎn)擊完成后,在VU自動解析過程中,往往會出現(xiàn)各種鏈接錯誤。解決方法是修改工程屬性。點(diǎn)擊主界面工具欄,或在“工程”菜單單擊“工程

7、屬性”,打開“工程屬性”對話框,根據(jù)“系統(tǒng)信息”窗口打印出錯誤及警告信息根據(jù)3.5 里的方法進(jìn)行修改。3.5 常見錯誤及解決方法·文件 xxx包含的文件 xxx.h未找到常見的原因是頭文件搜索目錄遺漏。與一般編譯器一樣,VU 搜索頭文件時,不搜索子目錄。切換到“頭文件”頁,增加include目錄。 VU具有自動搜索頭文件所在目錄的功能,如果認(rèn)為未找到的頭文件可能是庫頭文件,則點(diǎn)擊“庫頭文件”右側(cè)的“搜索”按鈕,否則點(diǎn)擊“常規(guī)頭文件”右側(cè)的“搜索”按鈕。打開如下圖所示的對話框,未找到的頭文件已經(jīng)自動列出,搜索的起始目錄也已設(shè)好,如果需添加其他起始目錄,請點(diǎn)擊“添加”, 不需要的起始目錄

8、, 可點(diǎn)擊選中后, 再點(diǎn)擊“刪除”。 點(diǎn)擊“查找”, “查找結(jié)果”框中會列出所有包含這些頭文件的目錄(如果在多個目錄下有同名頭文件,全部列出),請檢查,并將不正確的目錄刪除。最后點(diǎn)擊“加入”。另一種比較少見的原因是編譯條件遺漏。編譯條件是指產(chǎn)品項(xiàng)目使用了用戶設(shè)定的“預(yù)處理定義”(可在工程Setting中查看,如,VC6.0, Preprocessor Definitions為“WIN32,_DEBUG,_CONSOLE,_MBCS,MY_DEFINE”,則“ MY_DEFINE”就是“編譯條件”),為了讓 VU 的解析結(jié)果以及測試代碼的編譯結(jié)果與原項(xiàng)目一致,UDT工程和測試工程也要使用這些“編

9、譯條件”。解決辦法: 切換到“高級”頁,點(diǎn)擊“預(yù)處理選項(xiàng)”,在“預(yù)處理定義”輸入框中,加入編譯條件。測試工程的項(xiàng)目Setting中也要加入同樣的編譯條件。錯誤:未找到預(yù)編譯頭文件xxx.h解決辦法: 切換到“高級”頁,點(diǎn)擊“擴(kuò)展”,打開“擴(kuò)展”對話框,選中“不使用預(yù)編譯頭文件”。·警告:引用了同名頭文件可能導(dǎo)致錯誤, 如果確認(rèn)引用多個同名頭文件是沒必要的,請切換到“頭文件”頁,點(diǎn)擊“詳細(xì)分類”,將不使用的頭文件設(shè)為X。警告:引用了同名頭文件可能導(dǎo)致錯誤, 如果確認(rèn)引用多個同名頭文件是沒必要的,請切換到“頭文件”頁,點(diǎn)擊“詳細(xì)分類”,將不使用的頭文件設(shè)為X。·警告:頭文件缺少

10、預(yù)處理“哨兵”預(yù)處理“哨兵”是指:# ifndef XXX# define XXX / 文件內(nèi)容# endif用于防止頭文件被重編譯,重編譯可能產(chǎn)生“標(biāo)識符重定義”錯誤,如果頭文件不需要重編譯,建議在產(chǎn)品項(xiàng)目的頭文件中加上“哨兵”。·警告:預(yù)處理“哨兵”已在其他文件定義可能因代碼未編譯產(chǎn)生“標(biāo)識符未定義”錯誤,建議修改產(chǎn)品代碼,消除不同頭文件的相同預(yù)處理“哨兵”。·警告:在頭文件中定義變量可能產(chǎn)生重定義錯誤,建議將產(chǎn)品代碼的變量定義移到源文件,頭文件只保留聲明。·警告:目錄太深或太長由于 VU會自動處理 #include指令,目錄太深或太長可能導(dǎo)致#include

11、指令超過測試 IDE 的長度限制, 引起編譯錯誤, 建議將項(xiàng)目移到較淺的目錄中并縮短根文件夾名,重建UDT工程。界面總體布局如下圖所示第四章建立用例測試的目的是檢查程序的功能邏輯是否符合設(shè)計(jì), 即檢測程序在各種輸入下是否產(chǎn)生了正確的輸出,因此,一個典型的測試用例完成以下工作:設(shè)定輸入數(shù)據(jù)、執(zhí)行程序、驗(yàn)證輸出是否符合預(yù)期。4.1 設(shè)定輸入輸出數(shù)據(jù)點(diǎn)擊中間工具欄,打開輸入輸出生成器, 如下圖所示,填入要傳入的參數(shù)值,預(yù)計(jì)要輸出的返回值,及用到的成員變量及全局變量。數(shù)據(jù)格式與標(biāo)準(zhǔn)C/C+語言的“文字常量”完全一致,也支持宏和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;上圖左下角有個表格化的選項(xiàng), 如選中, 設(shè)定完成后, 在用例數(shù)據(jù)窗口里將自動添加到表格里也可以直接在用例數(shù)據(jù)表格里修改輸入輸出值。4.2 一次設(shè)定多個用例在“用例數(shù)據(jù)”頁面里,選中一列,點(diǎn)擊中間的按鈕,可復(fù)制選中的列,

13、再對其修改輸入輸出值。·批量添加用例數(shù)據(jù)點(diǎn)擊,打開“用例生成/ 檢查器”,如下圖。·自動生成用例數(shù)據(jù)在如上圖的“用例生成/ 檢查器”中, 點(diǎn)擊“生成數(shù)據(jù)”,打開如下對話框,可以自動為數(shù)字類型生成數(shù)據(jù)。其中, “有效值內(nèi)的分段點(diǎn)”,是指在有效值范圍內(nèi),可能需分類處理的數(shù)據(jù)的分界點(diǎn),例如,一個表示年齡的整數(shù),有效值范圍為0-200 ,程序需對不同年齡段做不同的處理:10 歲以下為兒童、20 歲以下為青年、60 歲以上為老人,那么,分段點(diǎn)填寫 10,20,60 (用 , 分隔)。如果自動生成的數(shù)據(jù)與“用例生成 / 檢查器”中的現(xiàn)有數(shù)據(jù)重復(fù),會自動刪除。 自動生成用例數(shù)據(jù)可以提高用

14、例設(shè)計(jì)的效率, 也有利于提高數(shù)據(jù)取值的完整性。下圖是設(shè)定輸入之間的組合, 單擊行首或列首, 可以重置全行或全列。 系統(tǒng)會保證設(shè)定的組合得于覆蓋。填寫預(yù)期輸出用例數(shù)據(jù)生成器只生成用例的輸入,需為每個用例設(shè)定預(yù)期輸出。表格中,與左邊單元格相同的數(shù)據(jù)可以省略, 如下圖, 用例 2 的預(yù)期輸出與用例 1 相同, 用例 5 的預(yù)期輸出與用例 4 相同,都可以省略。設(shè)定完用例后,點(diǎn)擊中間的工具欄,執(zhí)行測試代碼。第五章測試輸出及應(yīng)用測試輸出信息主要有四個窗口,如下圖所示: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)鍵字及其括號, ,邏輯操作符,字符和字符串)一概用藍(lán)色顯示。·未覆蓋代碼字體顏色為 紅色 且背景色為淡紅色的代碼是未覆蓋代碼(所有用例均未執(zhí)行) 。語句覆蓋的統(tǒng)計(jì)單位是語句塊,語句塊是指一組語句序列,在該語句序列中,如果第一條語句執(zhí)行了,在未發(fā)生異常的前提下,其他語句也會執(zhí)行。判定中的每個條件,按一個語句塊計(jì)算。語句覆蓋率

16、=已覆蓋語句塊數(shù)/全部語句塊數(shù),請參考信息窗口 。瀏覽當(dāng)前用例所執(zhí)行的代碼,結(jié)合數(shù)據(jù)窗口,程序行為一目了然,可以實(shí)現(xiàn)VTDD,也容易找出錯誤原因。·條件覆蓋與MC/DC條件覆蓋的統(tǒng)計(jì)單位是條件的取值(真 / 假)。條件前面的 T 表示該條件的真值未覆蓋, F 表示假值未覆蓋。條件覆蓋率=已覆蓋條件數(shù)/全部條件數(shù)。MC/DC 的核心意思是每個條件獨(dú)立影響判定結(jié)果,如果某個條件未獨(dú)立影響判定結(jié)果,將在前面加上 M 。·用例設(shè)計(jì)點(diǎn)擊未覆蓋語句,或條件前面的 T 、 F 、 M ,右鍵菜單選擇“用例設(shè)計(jì)”,即可切換到用例設(shè)計(jì)器,為選中的語句、條件、或MC/DC設(shè)計(jì)覆蓋用例。條件的覆

17、蓋分為三個層次:最低層次是條件語句的覆蓋、其次是真值和假值的覆蓋、最高層次是MC/DC。由于完成了 T 或 F 覆蓋,條件語句即可完成覆蓋,因此,沒必要為條件語句覆蓋設(shè)計(jì)用例,未覆蓋的條件語句不能點(diǎn)擊。如果某一語句塊無法覆蓋 (測試用例設(shè)計(jì)器中, 待滿足條件和已滿足條件沖突) ,則該語句塊是冗余的,應(yīng)考慮刪除。 100%的語句覆蓋是很容易達(dá)到的,也是必須的。5.3. 信息窗口信息窗口從總體上提供測試結(jié)果信息。·測試用例:總的測試用例數(shù)。·當(dāng)前用例:當(dāng)前顯示的測試用例編號,從1 開始。數(shù)據(jù)窗口、代碼窗口、路徑窗口顯示的都是當(dāng)前用例的數(shù)據(jù)。所有窗口的快捷菜單都可以切換當(dāng)前用例。

18、·語句覆蓋:顯示已覆蓋的語句塊數(shù)/ 全部語句塊數(shù)以及語句覆蓋率。·條件覆蓋:顯示已覆蓋的條件值數(shù)/ 全部條件值數(shù)以及條件覆蓋率。·分支覆蓋:顯示已覆蓋的分支數(shù)/ 全部分支數(shù)以及分支覆蓋率。·C/DC(判定條件覆蓋) :顯未判定條件覆蓋率。·路徑覆蓋:顯示已覆蓋的路徑數(shù)/ 全部路徑數(shù)以及路徑覆蓋率。· MC/DC(修改判定條件覆蓋) :顯示修正判定條件覆蓋率。·測試斷言:顯示全部斷言數(shù)和失敗斷言數(shù)。斷言數(shù)就是 TEST_ASSERT()的數(shù)量。·測試狀態(tài):如果測試斷言全部通過,顯示一個綠條,否則顯示一個紅條。

19、3;失敗測試:如果存在失敗斷言,列出失敗的斷言及其文件名和行號。如果存在失敗的斷言,表示程序代碼存在錯誤或預(yù)期輸出是不正確的。單擊失敗的斷言, 產(chǎn)生失敗斷言的用例成為當(dāng)前用例, 其他窗口將顯示相關(guān)的數(shù)據(jù)。雙擊失敗的斷言,切換到用例數(shù)據(jù)窗口或用編輯器,并選中產(chǎn)生失敗斷言的用例。5.4. 路徑窗口路徑窗口畫出邏輯結(jié)構(gòu)圖,并標(biāo)示未覆蓋分支和路徑·刪除 / 恢復(fù)分支結(jié)構(gòu)、分支、語句塊、路徑都是可刪除的,如下圖所示,點(diǎn)擊選中某一對象,從快捷菜單中選擇“刪除”或“恢復(fù)”命令, 即可刪除或恢復(fù)該對象。 刪除或恢復(fù)一個對象時,會重新統(tǒng)計(jì)程序路徑,信息窗口的相關(guān)數(shù)據(jù)會發(fā)生變化。·刪除不可達(dá)分

20、支有些分支是明顯不可達(dá)的,如循環(huán)結(jié)構(gòu)形成的分支,如果肯定會進(jìn)入循環(huán),那么不進(jìn)入循環(huán)的分支就是不可達(dá)的。 為未覆蓋分支設(shè)計(jì)測試用例時, 如果待滿足條件和已滿足條件沖突,則該分支是不可達(dá)的。不可達(dá)分支刪除后,所有通過該分支的路徑會自動刪除。·刪除不可覆蓋的路徑:為未覆蓋路徑設(shè)計(jì)測試用例時,如果待滿足條件和已滿足條件沖突,則該路徑是不可覆蓋的。 被刪除的路徑, 信息窗口視為不存在, 但邏輯結(jié)構(gòu)圖中只是在路徑入口處畫個紅X,隨時可以恢復(fù)。邏輯結(jié)構(gòu)圖在統(tǒng)計(jì)路徑時仍然把已刪除的路徑計(jì)算在內(nèi),因此,路徑數(shù)量會與信息窗口不相同。第六章高級技巧6.1 底層模擬什么是底層模擬底層模擬就是在用例中模擬、

21、控制子函數(shù)的行為, 使底層函數(shù)產(chǎn)生的數(shù)據(jù)像參數(shù)一樣可以在用例中設(shè)置,稱不內(nèi)部輸入,包括: 指定子函數(shù)的返回值;指定子函數(shù)的輸出參數(shù)的結(jié)果值;指定成員變量的值(僅限于C+);指定全局變量的值。為什么要引入底層模擬·解決失真:子函數(shù)未實(shí)現(xiàn)或被隔離,則用自動生成的樁函數(shù)來代替。由于樁函數(shù)通常什么也不做,造成失真, 使測試無法進(jìn)行,因此, 調(diào)用隔離函數(shù)時應(yīng)在用例中設(shè)定其行為,以便模擬真實(shí)的情境。·子函數(shù)不可控或不符合測試要求:子函數(shù)的行為難于控制,例如調(diào)用一個通過硬件取環(huán)境溫度的函數(shù),環(huán)境溫度顯然不能按測試要求快速變化;再如調(diào)用一個返回隨機(jī)數(shù)的函數(shù),需要該函數(shù)返回指定值,真實(shí)代碼無

22、法返回指定值。子函數(shù)從文件或數(shù)據(jù)庫中讀取數(shù)據(jù),數(shù)據(jù)可能不存在或不符合測試要求,希望在用例中設(shè)定; 子函數(shù)的某些行為難于出現(xiàn),例如讀取內(nèi)存失敗,連接網(wǎng)絡(luò)失敗等,希望在用例中設(shè)定;程序的某些執(zhí)行邏輯很難通過改變參數(shù)或其他變量來覆蓋,希望通過控制子函數(shù)的輸出來覆蓋,·難于初始化被測試函數(shù)的一些輸入可能很復(fù)雜,但僅用于傳遞給底層函數(shù),以便取得一個簡單的值,這種情形可以直接設(shè)定底層函數(shù)的輸出,避免復(fù)雜的初始化。對于一個函數(shù)來說,需要直接讀取的數(shù)據(jù)往往并不多,復(fù)雜的輸入多是傳遞給底層函數(shù)的數(shù)據(jù),巧用底層模擬可以大幅降低用例設(shè)計(jì)的難度。·控制局部靜態(tài)變量局部靜態(tài)變量與全局變量一樣,測試時

23、需在用例中控制,但用例中卻無法訪問。·模擬中斷常用于嵌入式測試,可模擬中斷造成的全局變量修改·“控制測試”“控制測試” , 就是測試程序“在某種條件下,是否做了某個動作”,只需要知道做了沒有,不需要判斷或無法判斷輸出數(shù)據(jù)。底層模擬的實(shí)現(xiàn)方法主界面右側(cè)切換到用例代碼窗口,在左側(cè)函數(shù)代碼窗口雙擊子函數(shù)名或參數(shù),即可打開“底層模擬器”并自動填好初始數(shù)據(jù), 如下圖。 如果被測試代碼未編寫, 可用右鍵菜單打開“底層模擬器”。·底層模擬器的基本使用在函數(shù)代碼窗口,雙擊子函數(shù)名或參數(shù),即可找開“底層模擬器”,并自動填好初始數(shù)據(jù),如下圖。如果被測試代碼未編寫,可用快捷菜單打開“底

24、層模擬器”。控制局部變量和模擬中斷,不需要打開底層模擬器“子函數(shù)名 ”編輯框:填寫子函數(shù)名,一般會自動填寫;“不可屏蔽 ”復(fù)選框:如果選中, 那么該底層模擬總是有效, 否則,當(dāng)在“設(shè)定”的“測試”頁選中了“屏蔽底層模擬時”時,底層模擬會被屏蔽,改為調(diào)用實(shí)際代碼或空樁。“子函數(shù)名”編輯框:填寫子函數(shù)名,一般會自動填寫;“不可屏蔽”復(fù)選框:如果選中,那么該底層模擬總是有效, 否則,當(dāng)在“設(shè)定”的“測試”頁選中了“屏蔽底層模擬時”時,底層模擬會被屏蔽,改為調(diào)用實(shí)際代碼或空樁?!霸O(shè)定哪個值? ”單選鈕: 選擇調(diào)用該子函數(shù)后, 需要設(shè)定數(shù)值的目標(biāo)對象, 如果選中“僅判斷調(diào)用次數(shù)”,則不設(shè)定任何數(shù)據(jù),僅判

25、斷子函數(shù)的調(diào)用次數(shù)是否符合預(yù)期?!邦A(yù)期調(diào)用次數(shù) ”單選鈕: 底層模擬功能還可以自動計(jì)算子函數(shù)的調(diào)用次數(shù), 不符合預(yù)期時會報告錯誤, 缺省值為“忽略”。 此功能一般適用于非表格化的用例, 對于表格化用例來說,由于指定的預(yù)期調(diào)用次數(shù)對表格中的所有用例有效,而不同用例的實(shí)際調(diào)用次數(shù)可能不同,因此易發(fā)生誤報?!扒爸么a ”編輯框:如果模擬值是復(fù)雜對象或?qū)ο笾羔槪谶@里定義和初始化該對象。“模擬值 ”編輯框:設(shè)定模擬目標(biāo)的結(jié)果值,分為四類:數(shù)字,字符,字符串,對象。數(shù)字直接填寫,如1234 或 123.789,字符要加單引號,如'a' ,字符串要加雙引號,如UNIT" ,對象要

26、先在前置代碼中定義并初始化,然后填寫對象名或指針,如data"VISUAL或 &data ,下圖為返回一個結(jié)構(gòu)指針:關(guān)閉“底層模擬器”后, 會自動生成底層模擬代碼, 這些代碼也是用例輸入的一部分。 除“僅判斷調(diào)用次數(shù)”外,其他底層模擬代碼均是從第一個參數(shù)開始即為模擬值。·底層模擬數(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)/控制測試,只判斷子函數(shù)執(zhí)行次數(shù),所以最后的預(yù)期執(zhí)行次數(shù)是“數(shù)據(jù)”表格中忽略個別用例的底層模擬將單元格的值設(shè)為“ / ”。底層模擬應(yīng)放在輸入的最后底層模擬可以視為內(nèi)部輸入,即函數(shù)內(nèi)部獲取的輸入,放在輸入的最后易于閱讀和理解;對于 C 語言來說, 底層模擬代碼放在最后,還可以避免可執(zhí)行語句之后聲明變量導(dǎo)致編譯錯誤。底層模擬調(diào)用了一個或多個函數(shù),是普通的執(zhí)行語句,對于C語言來說,這類語句后面不能再聲明變量。設(shè)定成員變量、全局變量的值在“設(shè)定哪個值”中選擇成員變量或全局變量,并填寫變量名,其他與設(shè)定返回值

28、一致。這里的成員變量是指被測試類的成員變量,因此,設(shè)定成員變量一般用于子函 數(shù)是被測試類的成員函數(shù),并且它的功能是修改成員變量時。設(shè)定輸出參數(shù)與設(shè)定返回值有兩點(diǎn)不同:一是通過雙擊參數(shù)來打開底層模擬器,這樣系統(tǒng)會自動選擇需要模擬的參數(shù);二是填寫的模擬值是“值”而不是“地址”,例如:子函數(shù)為: MYSTRUCT1* func(MYSTRUCT* pData);前置代碼: MYSTRUCT data; .如果模擬返回值,則模擬值填寫:&data ,因?yàn)槲覀円祷氐木褪墙Y(jié)構(gòu)對象的地址。如果模擬參數(shù)值,則填寫:data ,因?yàn)槲覀円O(shè)定的不是地址,而是對象的值,用簡單類型比較容易理解,例如,子函數(shù):int* subfunc(int * ptr);模擬返回值 ( 返回一個指針) ,要在“前置代碼”中定義一個變量如intdata=0;,然后返回合法的地址:&data ;模擬輸出參數(shù),則是為了修改ptr所指向的內(nèi)存的數(shù)據(jù),直接填寫這個數(shù)據(jù)就可以了,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論