官术网_书友最值得收藏!

4.3.1 合格/失敗測試

在序列中,最重要的步驟就是測試(Tests),有四種類型的測試步驟:Pass/Fail Test、Numeric Limit Test、Multiple Numeric Limit Test、String Value Test,它們將決定產品是否測試通過。在實際項目中,每個測試步驟對應的就是具體的測試項目,它們的區別在于關鍵屬性的數據類型不同,分別是布爾型、數值型、數值型、字符串型。為了方便掌握測試步驟的使用方法,筆者事先創建了一個動態鏈接庫文件Tests.dll,該DLL中有四個輸出函數,其函數原型如圖4-17所示,它的源代碼位于<Exercises>\Chapter 4\Tests\Tests DLL Project。

首先介紹合格/失敗測試步驟,由于代碼模塊是DLL,所以在插入面板中,適配器類型選擇為C/C++DLL,如圖4-18所示。

圖4-17 測試步驟調用的DLL函數原型

圖4-18 模塊適配器類型選擇為DLL

圖4-19 合格/失敗測試步驟的數據空間

新創建序列文件并保存,然后在主序列中添加合格/失敗測試步驟,選中該步驟之后,觀察變量窗格中Step屬性,它包含了當前步驟的所有數據,除了Step.Result.Error、Step.Result.Status這些所有步驟類型都包含的基本屬性,它的比較重要的屬性有Step.Result.PassFail、Step.DataSource(在TestStand中,屬性下面可以包含子屬性,通過圓點來表示屬性之間的層次關系),如圖4-19所示。

在步驟設置窗格中,合格/失敗測試步驟有兩個特定配置頁:模塊(Module)和數據源(Data Source),如圖4-20所示。

模塊頁面用于聲明代碼模塊,如圖4-20所示。在“Module”下拉框右側單擊瀏覽按鈕,選擇代碼模塊Tests.dll。在TestStand中第一次調用代碼模塊時,如果代碼模塊目錄不在TestStand的搜索路徑列表中且使用的不是絕對路徑,則TestStand會彈出提示文件沒有找到的對話框,要求用戶選擇路徑方式,如圖4-21所示。一般情況下,除非是特殊系統目錄下的文件,否則都會選擇第三種方式——“使用相對路徑”。這樣,一旦序列文件和代碼模塊一起打包到其他計算機或整體移動位置時,序列文件也能正確地加載代碼模塊,不會出現文件丟失的問題。

圖4-20 合格/失敗測試步驟設置窗格

圖4-21 提示文件沒有找到的對話框

選擇好DLL文件之后,在“Function”欄中會自動枚舉出該DLL所有的輸出函數,這里選擇“PassFailTest”函數。由于PassFailTest函數有一個int返回值,在“Value Expression”欄中手動輸入“Step.Result.PassFail”,其含義是將代碼模塊的輸出傳遞給該屬性,如圖4-22所示。

圖4-22 合格/失敗測試步驟特定配置頁(模塊)

接下來查看數據源頁面,TestStand依據數據源決定測試是否通過。對于合格/失敗步驟,一般保持默認的表達式“Step.Result.PassFail”,如圖4-23所示。

圖4-23 合格/失敗測試步驟特定配置頁(數據源)

在范例資源的第4章練習中,附有例程<Exercises>\Chapter 4\Tests\PassFailTest.seq,它所完成的就是上述工作,讀者可以通過菜單命令“ExecuteSingle Pass”運行該范例并觀察結果。

注意:在本章中,因為要了解并掌握TestStand中重要步驟類型的使用方法,筆者特意附上了較多的練習例程。這些例程本身很簡單,建議讀者對照書中內容逐個完成,并測試運行效果。

反復運行這個步驟,會發現它的狀態有時是合格,有時卻是失敗。稍微分析一下這個過程:首先數據源是Step.Result.PassFail,然后模塊頁面中代碼模塊的返回值傳遞給了Step.Result.PassFail,因此代碼模塊的返回值會影響數據源,數據源繼而影響步驟狀態。由于函數PassFailTest隨機地返回“0”或“1”,所以步驟狀態也就時而合格,時而失敗。這里給數據源下一個定義:會對步驟的狀態產生決定作用的數據。在合格/失敗測試步驟中,上述邏輯可以用下面一段偽碼表示:

在正常運行模式下,所有測試步驟類型的共同之處在于:①正常執行完后,其狀態為合格或失敗,沒有中間狀態;②有數據源;③會調用代碼模塊。

關于代碼模塊路徑的問題,這里多探討一下。當第一次加載任何一個代碼模塊時,TestStand會彈出提示文件沒有找到的對話框,要求選擇該文件的路徑方式。但是如圖4-24所示,該對話框會根據當前序列文件是否已保存到確切路徑而有所不同:如果是新建的序列文件并且未保存,該對話框中只有兩個選項;只有當新建的序列文件保存到某個具體路徑下,該對話框中才會有第三個選項——使用相對路徑。因為新建的序列文件在未保存之前是沒有一個確切的路徑的,當給測試步驟聲明代碼模塊時,TestStand無法計算序列文件和代碼模塊之間的相對路徑關系,所以強烈建議用戶先保存序列文件,然后調用代碼模塊時在提示文件沒有找到的對話框中選擇第三種方式——使用相對路徑。

圖4-24 提示文件沒有找到的兩種情況

但是,即使保存了序列文件,仍有可能在文件沒有找到對話框只出現兩個選項。

情況一:序列文件的路徑為E:\PassFailTest.seq,代碼模塊的路徑為E:\Tests DLL Project\Tests.dll。序列文件所在的目錄“E:”是代碼模塊所在目錄“E:\Tests DLL Project”的上一級目錄。這種情況下,提示文件沒有找到的對話框中有三個選項,可以使用相對路徑。

情況二:序列文件的路徑為E:\Temp\PassFailTest.seq,代碼模塊的路徑為E:\Tests DLL Project\Tests.dll。序列文件所在的目錄“E:\Temp”并非代碼模塊所在目錄“E:\Tests DLL Project”的上一級目錄,這種情況下,提示文件沒有找到的對話框中只有兩個選項。

所以一般建議將序列文件所在目錄置于代碼模塊的上一級目錄中,這樣規范化之后利于維護代碼模塊的相對路徑關系。當然,如果有些代碼模塊(如DLL)是第三方開發的且只能在固定的目錄下,這時在提示文件沒有找到的對話框中只有兩個可選項的情況下,除非是特殊系統目錄下的文件,否則選擇第一種方式——將包含文件的目錄添加到搜索路徑列表中。這樣,一旦文件不在原來聲明的位置,TestStand會自動去搜索路徑中尋找。建議在“Module”欄中手動輸入相對路徑關系,如情況二中,序列文件和DLL之間的相對路徑是“..\Tests DLL Project\Tests.dll”,如圖4-25所示。這樣即使序列文件不在代碼模塊的上一級目錄中,把整個更上層的目錄整體打包或復制,也能保證代碼模塊正確加載。

圖4-25 構建相對路徑

主站蜘蛛池模板: 屯昌县| 太原市| 旌德县| 德保县| 余干县| 吉木乃县| 萨嘎县| 长治市| 彰化县| 溧水县| 城口县| 榆林市| 托克托县| 双峰县| 黄平县| 迁西县| 灌南县| 罗甸县| 湟中县| 翁牛特旗| 乳山市| 湄潭县| 托克逊县| 永丰县| 汉阴县| 临猗县| 香港| 将乐县| 蓬莱市| 龙江县| 砀山县| 临沭县| 双城市| 孟村| 桃园市| 贞丰县| 武夷山市| 鱼台县| 伊川县| 乐陵市| 哈密市|