- TestStand工業自動化測試管理(典藏版)
- 胡典鋼編著
- 2367字
- 2022-05-05 21:21:03
5.3.2 運行時(RunState)屬性
RunState容器中包含很多子屬性,序列執行過程中的實時信息都存儲在RunState中,這也是它的名稱由來。在圖5-10所示變量窗格中(先不關注“Object Reference”對象引用數據類型),很多子屬性是非常直觀的,如“IsProcessModel”表示當前執行序列是否屬于過程模型,“Tracing”表示是否使能了追蹤功能,“SequenceFailed”表示序列狀態,子屬性保存了序列執行時的狀態,讀者可以逐個查看,這里不再逐一介紹。其中,RunState.SequenceFile、RunState.Sequence、RunState.Step包含的信息較多,它們分別代表序列文件、序列和步驟。

圖5-10 運行時(RunState)屬性
1.RunState.SequenceFile
RunState.SequenceFile代表的是一個序列文件對象,它表示正在執行的序列所在的序列文件,通過它可以獲取序列文件的很多信息。RunState.SequenceFile的子屬性RunState.SequenceFile.Data.Seq則包含了該序列文件中的所有序列,是一個序列數組,但任何時候它一直保存的是所有序列的默認值,即序列在編輯狀態時的值,即使序列中的變量、屬性在執行過程中被更新,也不會反映到RunState.SequenceFile.Data.Seq中。RunState.SequenceFile還有其他子屬性,列舉在表5-1中。
表5-1 RunState.SequenceFile包含的子屬性

2.RunState.Sequence
RunState.Sequence代表的是一個序列對象,它表示當前正在被執行的序列,包括了局部變量、參量、序列中的所有步驟。RunState.Sequence其實是RunState.SequenceFile.Data.Seq序列數組中某個序列元素的運行時拷貝,它保存了序列執行的實時信息,例如某個變量在執行過程中被更新了,那么在RunState.Sequence的子屬性RunState.Sequence.Locals中就立刻保存了該變量的最新值。RunState.Sequence包含的子屬性列舉在表5-2中。
表5-2 RunState.Sequence包含的子屬性

續表

3.RunState.Step
RunState.Step代表的是一個步驟對象,它表示當前正在執行的步驟。RunState.Step其實是RunState.Sequence中某個步驟組的步驟,只是TestStand為了方便用戶的訪問,將當前步驟用一個單獨的屬性RunState.Step表示。如果用數學中集合的概念來描述RunState.Sequence和RunState.Step之間的關系,則RunState.Step是RunState.Sequence的一個子集。RunState.Step有很多子屬性,這些子屬性因步驟類型而異,但都會包含Result容器,Result容器下面包含Error、Status、ReportText等通用屬性,這些信息已經在前面介紹過。
4.動態屬性
RunState容器中有一類特殊的屬性,數據類型是“Object Reference”(對象引用),類似于C語言中的指針,對象引用默認為空(Nothing),只有在序列執行時,才會給它們分配對象引用,這時這些屬性才有意義,而在序列執行結束后,TestStand又會釋放對象引用,這類屬性稱為動態屬性。如圖5-11所示,其中的Engine、Root、Main、Caller、Calling Step、Report、Execution、Thread就屬于動態屬性,它們的數據類型都是對象引用,且除Engine以外,其他的初始值都為空。還有一個動態屬性RunState.ProcessModelClient,在序列未執行時,它甚至是不可見的。

圖5-11 RunState容器中包含的動態屬性
以RunState.Main屬性為例,它指向最少嵌套的序列,并且必須不是過程模型中的序列。假如創建了客戶端序列文件且使用了過程模型,那么RunState.Main一般是指客戶端序列文件的主序列。在序列未執行或處于編輯狀態時,RunState.Main值為空;而序列執行時,TestStand將主序列的上下文信息(Sequence Context數據類型)作為對象引用傳遞給它,此時動態屬性就有了實際意義且可以被訪問了,它包含了主序列的所有當前信息,如圖5-12所示。

圖5-12 序列執行時RunState.Main動態屬性的值
提示:讀者目前只需要對動態屬性有初步的了解,關于每個動態屬性的描述說明請參考TestStand幫助文檔,在索引中輸入關鍵詞“RunState Subproperties”。
【練習5-3】TestStand中的屬性訪問。
在本練習中,模擬測試一個多媒體器件,包含音頻測試和視頻測試,在某些步驟中訪問步驟屬性或運行時屬性,并且觀察這些屬性如何對序列的執行產生影響。
(1)打開序列編輯器,新建一個序列文件并將其保存為<Exercises>\Chapter 5\Step Property and RunState Property.seq。
(2)在插入面板中,選擇模塊適配器為“None”。
(3)在主序列中添加一個數值限度測試步驟,命名為“Audio Test”。在屬性配置頁表達式面板的“Pre-Expression”中輸入“Step.Limits.Low=-1”,其他設置保持默認,如圖5-13所示。
(4)在Audio Test步驟之后添加一個數值限度測試步驟,命名為“Video Test”。在其屬性配置頁先決條件中輸入“RunState.PreviousStep.Result.Status!="Failed"”,其他設置保持默認,如圖5-14所示。
(5)在Video Test步驟之后添加If步驟,在“Conditional Expression”中輸入“PropertyExists("RunState.ProcessModelClient")”,如圖5-15所示。PropertyExists函數用來驗證某個屬性是否存在。這里要驗證的屬性就是RunState.ProcessModelClient,它表示客戶端序列文件對象引用,只有通過過程模型執行序列時該屬性才存在。

圖5-13 Audio Test步驟設置“Pre-Expression”

圖5-14 Video Test步驟的先決條件設置

圖5-15 If步驟的條件表達式
(6)創建If步驟時,TestStand會自動添加對應的End步驟。在If&End之間添加一個消息對話框,消息表達式中輸入“"You are running within a process mode\n"+"Model Path:"+RunState.Root.RunState.SequenceFile.Path”。主序列現在看起來應該如圖5-16所示。

圖5-16 主序列
(7)執行菜單命令“ConfigureResult Processing”,在彈出的對話框中,確認“Report”欄中“Enabled”選項是選中的,且報表格式是“XML”(這是完成TestStand 2013安裝時的默認配置),如圖5-17所示。

圖5-17“Result Processing”對話框中報表欄的設置
(8)保存序列文件,通過菜單命令“ExecuteSingle Pass”執行序列。在序列執行完成后會生成XML報表,注意觀察報表中Audio Test步驟和Video Test步驟的結果,如圖5-18所示。

圖5-18 Audio Test步驟和Video Test步驟的結果報表
(9)如果將Audio Test步驟中的“Pre Expression”刪除,然后通過菜單命令“ExecuteSingle Pass”重新執行序列,在報表中觀察“Video Test”的狀態。
在步驟(3)中,Audio Test步驟的“Pre-Expression”中輸入“Step.Limits.Low=-1”,這是對步驟屬性的訪問,并對Step.Limits.Low的值進行了更新,因此雖然Measurement值為0,但它處于上下限范圍之內,Audio Test步驟的狀態是“Passed”。在步驟(4)中,Video Test步驟的先決條件是前一步驟的狀態不能是“Failed”,所以在將Audio Test步驟中的“Pre-Expression”刪除后,Audio Test步驟的狀態將變成“Failed”,那么Video Test步驟的先決條件不滿足,因此它的狀態將會是“Skipped”,沒有被執行,這在實際測試中有時會用到。比如,前一項失敗的話,后續的一系列測試可能也就沒必要進行了。在步驟(5)中,If語句的條件表達式為PropertyExists("RunState.ProcessModelClient"),而步驟(8)和(9)中是通過使用過程模型執行入口點Single Pass執行序列的,因此ProcessModelClient屬性是存在的,所以會有消息對話框彈出;如果換成“ExecuteRun MainSequence”,就不會彈出消息對話框了。需要注意的是,步驟(6)的消息表達式中包含了動態屬性RunState.Root.RunState.SequenceFile.Path,動態屬性在序列編輯狀態時不可訪問,如RunState.Root值為“Nothing”,因此當單擊表達式語法檢查按鈕圖標時
,會彈出如圖5-19所示的警示窗口;如果確認表達式沒有問題,就可以忽略該警示。

圖5-19 表達式評估警示窗口
在范例資源的第5章練習中,例程<Exercises>\Chapter 5\Step Property and RunState Property-solution.seq完成的是上面的練習,讀者可以運行該范例并觀察結果。
- Mastering Mesos
- 網上生活必備
- 條碼技術及應用
- Apache Spark Deep Learning Cookbook
- 系統安裝與重裝
- Implementing Oracle API Platform Cloud Service
- Troubleshooting OpenVPN
- Learning Azure Cosmos DB
- 筆記本電腦維修90個精選實例
- 基于敏捷開發的數據結構研究
- 手機游戲策劃設計
- Cloudera Hadoop大數據平臺實戰指南
- RealFlow流體制作經典實例解析
- Apache Spark Machine Learning Blueprints
- Architectural Patterns