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

下載本文檔

版權(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 概述Visual Unit 是一種可視化、自動(dòng)化、標(biāo)準(zhǔn)化、高效率的C/C+單元測(cè)試工具,主是是提升開發(fā)人員代碼的質(zhì)量及開發(fā)的效率。功能強(qiáng)大并且易學(xué)易用。12 軟件特色· 自動(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)變量的用例中控制,以及中斷模擬;&

2、#183; 用例設(shè)計(jì)器高效找出遺漏用例實(shí)現(xiàn)高覆蓋;· 支持內(nèi)部輸出的自動(dòng)判斷;· 自動(dòng)生成邊界測(cè)試用例。第二章 軟件安裝與卸載2.1 軟件安裝環(huán)境·軟件運(yùn)行環(huán)境要求:操作系統(tǒng):Windows2000, Windows XP, Windows Server 2003,Windows Vista。內(nèi)存:128M,推薦256M。硬盤空間:200M。支持語(yǔ)言    C/C+。測(cè)試IDE    VU采用用戶提供的編譯編輯環(huán)境來(lái)編譯編輯測(cè)試代碼,稱為測(cè)試IDE。支持的測(cè)試IDE包括:VC6.0、VC 2003、VC

3、2005、VC 2008、Code:Blocks(使用GCC編譯器)。·對(duì)嵌入式項(xiàng)目的支持    自動(dòng)解決各種嵌入式項(xiàng)目的平臺(tái)差異和編譯差異,以及自動(dòng)模擬底層調(diào)用包括操作系統(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)度顯示最終顯示軟

4、件安裝成功,選擇是否直接啟動(dòng)該軟件,點(diǎn)擊完成按鈕即可2.3 卸載過(guò)程從控制面板/添加刪除程序 或運(yùn)行“開始”菜單下“Visual Unit 2卸載Visual Unit 2”程序 卸載.出現(xiàn)如下圖對(duì)話框第三章 新建工程在主工具欄單擊,或在“工程”菜單單擊“新建工程”,即可打開“新建UDT工程向?qū)А薄?.1模板選擇    一個(gè)項(xiàng)目可以建立任意數(shù)量的UDT工程,建立項(xiàng)目的第一個(gè)UDT工程時(shí),先選擇開發(fā)IDE,再在右邊的模板列表中,根據(jù)項(xiàng)目特性選擇合適模板;UDT工程建立后,自動(dòng)保存為模板,并出現(xiàn)在“或選擇現(xiàn)有項(xiàng)目”框內(nèi),建立第二個(gè)或更多的UDT工程時(shí),可選擇先前的UD

5、T工程作為模板,通常只需設(shè)定不同的被測(cè)文件和外圍文件。3.2導(dǎo)入數(shù)據(jù)    只有當(dāng)開發(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工程的基本信息。建立項(xiàng)目的第一個(gè)UDT工程時(shí),通常只需選擇“產(chǎn)品項(xiàng)目根目錄”和填寫“UDT工程名稱”,建立項(xiàng)目的第二個(gè)或更多的UDT工程時(shí),通常只需填寫“UDT工程名稱”。     可將任務(wù)簡(jiǎn)寫、模塊名稱或負(fù)責(zé)該模塊的開發(fā)或測(cè)試人員的姓名,作為“UDT工程名稱”。  

6、  “語(yǔ)言”、“開發(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)打樁。以后可從工程菜單打開“工程屬性”,重設(shè)源文件類別或指定新加入的源文件的類別。能夠設(shè)為N的源文件不要設(shè)為X,即盡可能減少打樁。作為一種策略,以后可在代碼菜單單擊“屏蔽樁代碼”,臨時(shí)屏蔽樁代碼,利用鏈接錯(cuò)誤找出本應(yīng)鏈接的庫(kù)和本應(yīng)鏈接的源文件,以避免不當(dāng)打樁。按住Shift鍵,點(diǎn)擊前面的加號(hào),可遞歸展開設(shè)定完測(cè)試單元后,點(diǎn)擊“下一

7、步”按鈕點(diǎn)擊“下一步”按鈕點(diǎn)擊“下一步”按鈕點(diǎn)擊“完成”, VU會(huì)自動(dòng)解析代碼,生成樁、底層模擬、測(cè)試驅(qū)動(dòng)、用例框架,然后自動(dòng)啟動(dòng)測(cè)試IDE,并自動(dòng)打開測(cè)試工程。解析過(guò)程中,“系統(tǒng)信息”窗口會(huì)打印錯(cuò)誤及警告信息。由于“工程屬性/高級(jí)”頁(yè)未曾設(shè)置,點(diǎn)擊完成后,在VU自動(dòng)解析過(guò)程中,往往會(huì)出現(xiàn)各種鏈接錯(cuò)誤。解決方法是修改工程屬性。點(diǎn)擊主界面工具欄,或在“工程”菜單單擊“工程屬性”,打開“工程屬性”對(duì)話框,根據(jù)“系統(tǒng)信息”窗口打印出錯(cuò)誤及警告信息根據(jù)3.5里的方法進(jìn)行修改。3.5常見(jiàn)錯(cuò)誤及解決方法·文件xxx包含的文件xxx.h未找到常見(jiàn)的原因是頭文件搜索目錄遺漏。與一般編譯器一樣,VU搜

8、索頭文件時(shí),不搜索子目錄。切換到“頭文件”頁(yè),增加include目錄。VU具有自動(dòng)搜索頭文件所在目錄的功能,如果認(rèn)為未找到的頭文件可能是庫(kù)頭文件,則點(diǎn)擊“庫(kù)頭文件”右側(cè)的“搜索”按鈕,否則點(diǎn)擊“常規(guī)頭文件”右側(cè)的“搜索”按鈕。打開如下圖所示的對(duì)話框,未找到的頭文件已經(jīng)自動(dòng)列出,搜索的起始目錄也已設(shè)好,如果需添加其他起始目錄,請(qǐng)點(diǎn)擊“添加”,不需要的起始目錄,可點(diǎn)擊選中后,再點(diǎn)擊“刪除”。點(diǎn)擊“查找”,“查找結(jié)果”框中會(huì)列出所有包含這些頭文件的目錄(如果在多個(gè)目錄下有同名頭文件,全部列出),請(qǐng)檢查,并將不正確的目錄刪除。最后點(diǎn)擊“加入”。另一種比較少見(jiàn)的原因是編譯條件遺漏。編譯條件是指產(chǎn)品項(xiàng)目使

9、用了用戶設(shè)定的“預(yù)處理定義”(可在工程Setting中查看,如,VC6.0,Preprocessor Definitions為“WIN32,_DEBUG,_CONSOLE,_MBCS,MY_DEFINE”,則“MY_DEFINE”就是“編譯條件”),為了讓VU的解析結(jié)果以及測(cè)試代碼的編譯結(jié)果與原項(xiàng)目一致,UDT工程和測(cè)試工程也要使用這些“編譯條件”。    解決辦法:切換到“高級(jí)”頁(yè),點(diǎn)擊“預(yù)處理選項(xiàng)”,在“預(yù)處理定義”輸入框中,加入編譯條件。測(cè)試工程的項(xiàng)目Setting中也要加入同樣的編譯條件。錯(cuò)誤:未找到預(yù)編譯頭文件xxx.h解決辦法:切換到“高級(jí)”頁(yè),點(diǎn)擊“

10、擴(kuò)展”,打開“擴(kuò)展”對(duì)話框,選中“不使用預(yù)編譯頭文件”。·警告:引用了同名頭文件    可能導(dǎo)致錯(cuò)誤,如果確認(rèn)引用多個(gè)同名頭文件是沒(méi)必要的,請(qǐng)切換到“頭文件”頁(yè),點(diǎn)擊“詳細(xì)分類”,將不使用的頭文件設(shè)為X。警告:引用了同名頭文件    可能導(dǎo)致錯(cuò)誤,如果確認(rèn)引用多個(gè)同名頭文件是沒(méi)必要的,請(qǐng)切換到“頭文件”頁(yè),點(diǎn)擊“詳細(xì)分類”,將不使用的頭文件設(shè)為X。·警告:頭文件缺少預(yù)處理“哨兵”    預(yù)處理“哨兵”是指:    #ifndef XXX 

11、0;  #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)品代碼的變量定義移

12、到源文件,頭文件只保留聲明。·警告:目錄太深或太長(zhǎng)    由于VU會(huì)自動(dòng)處理#include指令,目錄太深或太長(zhǎng)可能導(dǎo)致#include指令超過(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)擊中間工具欄,打開輸入輸出生成器,如下圖所示,填入要傳入的參數(shù)值,預(yù)計(jì)要輸出的返回值,

13、及用到的成員變量及全局變量。數(shù)據(jù)格式與標(biāo)準(zhǔn)C/C+語(yǔ)言的“文字常量”完全一致,也支持宏和enum。 ·字符串如:"abcd"       ·寬字符串如:L"abcd" ·字符如:'a' ·寬字符如:L'a' ·整數(shù)如:1234、0xFF12 ·單精度浮點(diǎn)數(shù)如:12.00F ·雙精度浮點(diǎn)數(shù)如:123.456 ·宏,如:TRUE&

14、#160; /#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ù)制選中的列,再對(duì)其修改輸入輸出值。·批量添加用例數(shù)據(jù)點(diǎn)擊,打開“用例生成/檢查器”,如下圖。·自動(dòng)生成用例數(shù)據(jù)    在如上圖的“用例生成/檢查器”中,點(diǎn)擊“生成數(shù)據(jù)”,打開如下對(duì)話框,可以自動(dòng)為數(shù)字類型生成數(shù)據(jù)。其

15、中,“有效值內(nèi)的分段點(diǎn)”,是指在有效值范圍內(nèi),可能需分類處理的數(shù)據(jù)的分界點(diǎn),例如,一個(gè)表示年齡的整數(shù),有效值范圍為0-200,程序需對(duì)不同年齡段做不同的處理:10歲以下為兒童、20歲以下為青年、60歲以上為老人,那么,分段點(diǎn)填寫10,20,60(用,分隔)。如果自動(dòng)生成的數(shù)據(jù)與“用例生成/檢查器”中的現(xiàn)有數(shù)據(jù)重復(fù),會(huì)自動(dòng)刪除。自動(dòng)生成用例數(shù)據(jù)可以提高用例設(shè)計(jì)的效率,也有利于提高數(shù)據(jù)取值的完整性。下圖是設(shè)定輸入之間的組合,單擊行首或列首,可以重置全行或全列。系統(tǒng)會(huì)保證設(shè)定的組合得于覆蓋。填寫預(yù)期輸出    用例數(shù)據(jù)生成器只生成用例的輸入,需為每個(gè)用例設(shè)定預(yù)期輸出。表

16、格中,與左邊單元格相同的數(shù)據(jù)可以省略,如下圖,用例2的預(yù)期輸出與用例1相同,用例5的預(yù)期輸出與用例4相同,都可以省略。設(shè)定完用例后,點(diǎn)擊中間的工具欄,執(zhí)行測(cè)試代碼。第五章 測(cè)試輸出及應(yīng)用測(cè)試輸出信息主要有四個(gè)窗口,如下圖所示:數(shù)據(jù)窗口顯示成員變量、參數(shù)的輸入/輸出值,返回值和內(nèi)部輸入,以及內(nèi)部輸出。內(nèi)部輸入是指子函數(shù)所產(chǎn)生的數(shù)據(jù),如子函數(shù)的返回值、輸出參數(shù)的結(jié)果值,內(nèi)部輸入通常由底層模擬設(shè)定;內(nèi)部輸出是指在代碼的任何位置指定輸出的變量或表達(dá)式的值。·當(dāng)前用例所執(zhí)行的代碼    當(dāng)前用例所執(zhí)行的代碼用黑色顯示,當(dāng)前用例未執(zhí)行的代碼用紅色顯示。注釋用綠色顯示

17、,其他代碼(流程控制關(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ǔ)句覆蓋率 = 已覆蓋語(yǔ)句塊數(shù) / 全部語(yǔ)句塊數(shù),請(qǐng)參考信息窗口。    瀏覽當(dāng)前用例所執(zhí)行的代碼,結(jié)合數(shù)據(jù)窗口,程序行為一目了然,可以實(shí)現(xiàn)VTDD,也容易找出錯(cuò)誤原因。·條件覆蓋與M

18、C/DC    條件覆蓋的統(tǒng)計(jì)單位是條件的取值(真/假)。條件前面的T表示該條件的真值未覆蓋,F(xiàn)表示假值未覆蓋。條件覆蓋率 = 已覆蓋條件數(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ì)覆蓋用例。 條件的覆蓋分為三個(gè)層次:最低層次是條件語(yǔ)句的覆蓋、其次是真值和假值的覆蓋、最高層次

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

20、·條件覆蓋:顯示已覆蓋的條件值數(shù)/全部條件值數(shù)以及條件覆蓋率。·分支覆蓋:顯示已覆蓋的分支數(shù)/全部分支數(shù)以及分支覆蓋率。·C/DC(判定條件覆蓋):顯未判定條件覆蓋率。·路徑覆蓋:顯示已覆蓋的路徑數(shù)/全部路徑數(shù)以及路徑覆蓋率。·MC/DC(修改判定條件覆蓋):顯示修正判定條件覆蓋率。·測(cè)試斷言:顯示全部斷言數(shù)和失敗斷言數(shù)。斷言數(shù)就是TEST_ASSERT()的數(shù)量。·測(cè)試狀態(tài):如果測(cè)試斷言全部通過(guò),顯示一個(gè)綠條,否則顯示一個(gè)紅條。·失敗測(cè)試:如果存在失敗斷言,列出失敗的斷言及其文件名和行號(hào)。  

21、  如果存在失敗的斷言,表示程序代碼存在錯(cuò)誤或預(yù)期輸出是不正確的。    單擊失敗的斷言,產(chǎn)生失敗斷言的用例成為當(dāng)前用例,其他窗口將顯示相關(guān)的數(shù)據(jù)。    雙擊失敗的斷言,切換到用例數(shù)據(jù)窗口或用編輯器,并選中產(chǎn)生失敗斷言的用例。路徑窗口畫出邏輯結(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ì)

22、發(fā)生變化。 ·刪除不可達(dá)分支    有些分支是明顯不可達(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)圖中只是在路徑入口處畫個(gè)紅X,隨時(shí)可以恢復(fù)。邏輯結(jié)構(gòu)圖在統(tǒng)計(jì)路徑時(shí)仍然把已刪除的路徑計(jì)算在內(nèi),因此

23、,路徑數(shù)量會(huì)與信息窗口不相同。 第六章 高級(jí)技巧6.1底層模擬什么是底層模擬底層模擬就是在用例中模擬、控制子函數(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)境

24、溫度顯然不能按測(cè)試要求快速變化;再如調(diào)用一個(gè)返回隨機(jī)數(shù)的函數(shù),需要該函數(shù)返回指定值,真實(shí)代碼無(wú)法返回指定值。 子函數(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ù),巧用

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

26、開“底層模擬器”,并自動(dòng)填好初始數(shù)據(jù),如下圖。如果被測(cè)試代碼未編寫,可用快捷菜單打開“底層模擬器”??刂凭植孔兞亢湍M中斷,不需要打開底層模擬器“子函數(shù)名”編輯框:填寫子函數(shù)名,一般會(huì)自動(dòng)填寫;“不可屏蔽”復(fù)選框:如果選中,那么該底層模擬總是有效,否則,當(dāng)在“設(shè)定”的“測(cè)試”頁(yè)選中了“屏蔽底層模擬時(shí)”時(shí),底層模擬會(huì)被屏蔽,改為調(diào)用實(shí)際代碼或空樁?!白雍瘮?shù)名”編輯框:填寫子函數(shù)名,一般會(huì)自動(dòng)填寫;“不可屏蔽”復(fù)選框:如果選中,那么該底層模擬總是有效,否則,當(dāng)在“設(shè)定”的“測(cè)試”頁(yè)選中了“屏蔽底層模擬時(shí)”時(shí),底層模擬會(huì)被屏蔽,改為調(diào)用實(shí)際代碼或空樁?!霸O(shè)定哪個(gè)值?”單選鈕:選擇調(diào)用該子函數(shù)后,需要

27、設(shè)定數(shù)值的目標(biāo)對(duì)象,如果選中“僅判斷調(diào)用次數(shù)”,則不設(shè)定任何數(shù)據(jù),僅判斷子函數(shù)的調(diào)用次數(shù)是否符合預(yù)期?!邦A(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é)果值,分為四類:數(shù)字,字符,字符串,對(duì)象。數(shù)字直接填寫,如1234或123.789, 字符要加單引號(hào),如'a',

28、字符串要加雙引號(hào),如"VISUAL UNIT",對(duì)象要先在前置代碼中定義并初始化,然后填寫對(duì)象名或指針,如data或&data,下圖為返回一個(gè)結(jié)構(gòu)指針:關(guān)閉“底層模擬器”后,會(huì)自動(dòng)生成底層模擬代碼,這些代碼也是用例輸入的一部分。除“僅判斷調(diào)用次數(shù)”外,其他底層模擬代碼均是從第一個(gè)參數(shù)開始即為模擬值。·底層模擬數(shù)據(jù)表格化    生成代碼后,雙擊數(shù)據(jù)(以下示例的紅色部分),即可實(shí)現(xiàn)表格化。    SF_RETURN_DIG(123456.789, "Return_Double",

29、RUN_TIMES_NOZERO, 1) /模擬返回值,所以設(shè)定返回值是“數(shù)據(jù)”    SF_EXPECT_RUNTIMES_HARD("Operate1", RUN_TIMES_NOZERO, 1)        /控制測(cè)試,只判斷子函數(shù)執(zhí)行次數(shù),所以最后的預(yù)期執(zhí)行次數(shù)是“數(shù)據(jù)”    表格中忽略個(gè)別用例的底層模擬將單元格的值設(shè)為“/”。底層模擬應(yīng)放在輸入的最后    底層模擬可以視為內(nèi)部輸入,即函數(shù)內(nèi)部獲取的輸入

30、,放在輸入的最后易于閱讀和理解;對(duì)于C語(yǔ)言來(lái)說(shuō),底層模擬代碼放在最后,還可以避免可執(zhí)行語(yǔ)句之后聲明變量導(dǎo)致編譯錯(cuò)誤。底層模擬調(diào)用了一個(gè)或多個(gè)函數(shù),是普通的執(zhí)行語(yǔ)句,對(duì)于C語(yǔ)言來(lái)說(shuō),這類語(yǔ)句后面不能再聲明變量。設(shè)定成員變量、全局變量的值    在“設(shè)定哪個(gè)值”中選擇成員變量或全局變量,并填寫變量名,其他與設(shè)定返回值一致。這里的成員變量是指被測(cè)試類的成員變量,因此,設(shè)定成員變量一般用于子函 數(shù)是被測(cè)試類的成員函數(shù),并且它的功能是修改成員變量時(shí)。設(shè)定輸出參數(shù)    與設(shè)定返回值有兩點(diǎn)不同:    一是通過(guò)雙擊參

31、數(shù)來(lái)打開底層模擬器,這樣系統(tǒng)會(huì)自動(dòng)選擇需要模擬的參數(shù);    二是填寫的模擬值是“值”而不是“地址”,例如:    子函數(shù)為:MYSTRUCT1* func(MYSTRUCT* pData);    前置代碼:MYSTRUCT data; .    如果模擬返回值,則模擬值填寫:&data,因?yàn)槲覀円祷氐木褪墙Y(jié)構(gòu)對(duì)象的地址。    如果模擬參數(shù)值,則填寫:data,因?yàn)槲覀円O(shè)定的不是地址,而是對(duì)象的值,用簡(jiǎn)單類型比較容易理解,例如,子函數(shù):    int* subfunc(int* ptr);    模擬返回值(返回一個(gè)指針),要在“前置代碼”中定義一個(gè)變量如int data=0;,然后返回合法的地址:&data;    模擬輸出參數(shù),則是為了修改ptr所指向的內(nèi)存的數(shù)據(jù),直接填寫這個(gè)數(shù)據(jù)就可以了,例如,在“模擬值”中填寫0,那么,*ptr就會(huì)設(shè)為0。 

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論