TestStand ​自​定義​步驟​類型​開發​最佳​實踐【2】


概覽

TestStand​包括​許多​內​置​步驟​類型,​這些​步驟​類型​作為​測試​序列​的​構​建​塊。​除​內​置​步驟​類型​外,​用戶​還​可以​在​TestStand​中​創建​自​定義​步驟​類型​來​實現​其他​功能。

自​定義​步驟​類型​使​用戶​可​通過​以下​方式​擴展​現有​步驟:

  • 配置​步驟​屬性​的​值,​並​確定​步驟​用戶​可以​修改​哪些​屬性
  • 添加​新的​步驟​屬性​來​存儲​自​定義​數據,​可以​選擇​性​地​將​這些​數據​記錄​到​測試​結果中
  • 定義​要​在​執行​主​模​塊​之前​或​之后​調​用​的​代碼
  • 創建​接口,​使​用戶​在​編輯​時​可以​配置​自​定義​步驟​屬性

設計​完善​的​步驟​類型​可以​加快​序列​開發、​減少​調​試​工作、​使​開發​人員​能夠​共享​標准​化​代碼,​並​可以​在​多個​測試​站​和​獨立​組​之間​實現​一致性。​但是,​自​定義​步驟​類型​可能​需要​大量​時間​來​計划、​編​程、​調​試、​部署​和​維護。

在​閱讀​本文​之前,​請​確保​您​熟悉​創建​自​定義​步驟​類型​的​過程。​關於​此​過程​的​詳細​信息,​請​參考《創建​波形​自​定義​步驟​類型》​教程。

內容

  • 選擇​使用​自​定義​步驟​類型​的​時機
  • 定義​自​定義​步驟​類型​的​要求
  • 管理​步驟​類型​數據
  • 子​步驟​可​用於​配置​自​定義​步驟​類型​功能

選擇​使用​自​定義​步驟​類型​的​時機

在​開始​設計​自​定義​步驟​類型​之前,​應​考慮​其他​可能​更​適合​新​功能​的​方法。 

在​以下​情況​下,​不​建議​創建​或​修改​自​定義​步驟​類型:

  • 新​功能​會​影響​所有​或​許多​類型​的​步驟。 在​這種​情況​下,​請​考慮​使用引擎​回調,​它​將​在​每​個​步驟​之前​或​之后​執行。
  • 希望​提供​現有​步驟​的​基本​配置,​但是​不需要​新的​功能​或​屬性。 在​這種​情況​下,​請​創建​包含​步驟​更改的步驟​模板
  • 希望​提供​可以​在​編輯​時​使用​的​工具​或​實用​程序。 在​這種​情況​下,​請​使用自​定義​工具​菜單項來​調​用​自​定義​代碼。


可在​以下​情況​下​創建​或​修改​步驟​類型:

  • 相應​功能​無法​在內​置​步驟​類型​中​實現。
  • 相應​功能​需要​修改​在​現有​步驟​類型​實例​中​無法​修改​的​屬性,
  • 相應​功能​要求​必須​在​調​用​測試​代碼​之前​或​之后​執行​操作,​例如​設置​步驟​或​分析​結果。
  • 希望​借助​用戶​界面​簡化​配置​步驟​的​用戶​體驗。
  • 希望​與​其他​組、​公司​或​客戶​共享​功能。

 

步驟​模板​與​自​定義​步驟​類型


在​序列​中​開發​和​配置​步驟,​然后​將​這些​步驟​拖​放到“插入​選​板”(Insertion Palette)​的“模板​列表”(Templates List)​中,​即可​創建​步驟​模板。​TestStand​會​將​步驟​實例​的​副本​保存​為​模板,​將​步驟​模板​拖​放到​新​序列​中​即可​進行​復​用​來​快速​創建​新​序列。

步驟​模板​和​自​定義​步驟​類型​之間​的​區別​在於,​模板​只能​通過​現有​步驟​類型​來​創建,​並且​模板​僅​包含​與​原始​步驟​類型​相同​的​功能。​相​對於​步驟​模板,​自​定義​步驟​類型​在​修改​或​重新​設計​方面​具有​更大​的​靈活​性。​對於​添加​到“模板​列表”(Templates List)​的​步驟,​只能​配置​原始​步驟​類型​的​開發​人員​啟用​的​設置。​相比​之下,​新​自​定義​步驟​類型​可​用於​創建​具有​全新​行為​的​全新​步驟。​同樣,​對​步驟​模板​的​更改​僅​影響​該​步驟​未來​的​實例,​而​不會​更改​該​步驟​的​現有​實例。

使用​步驟​模板​有​一個​好處,​若要​以​相同​的​方式​復​用​同一​步驟,​可以​避免​多次​自​定義​步驟​設置。​例如,​如果​要​將​IVI​電源​設置​為​5 V,​然后​再​設置​為​3.3 V,​並​計划​在​整個​序列​中​多次​執行​此​步驟,​那么​在​最初​使用​並​配置​步驟​后​創建​兩​個​步驟​模板​可以​節省​時間。​但是,​如果​需要​在​運行​測試​代碼​之前​先​配置​電源​的​步驟,​創建​自​定義​步驟​類型​則​是​一種​更好​的​方法。

 

步驟​模板​與​自​定義​步驟​類型​的​比較  

步驟​模板

自​定義​步驟​類型

  • 對於​重復​插入​具有​相同​首​選項​和​配置​的​現有​步驟​類型​很有用
  • 除​現有​步驟​實例​外,​無​其他​自​定義項
  • 開發​開銷​較​低 
  • 在​需要​新的​數據​和​功能​時​很有用
  • 支持​無法​在​步驟​實例​中​使用​的​自​定義項
  • 開發​開銷​較高

 

定義​自​定義​步驟​類型​的​要求


設計​自​定義​步驟​類型​時,​請​考慮​框架​開發​人員​和​測試​開發​人員​各自​的​職責。 框架​開發​人員​的​職責​是​開發​工具​和​構​建​塊,​而​測試​開發​人員​的​職責​是​使用​這些​工具​來​實現​實際​的​測試​代碼。

設計​自​定義​步驟​類型​時,​您​需要​履行​框架​開發​人員​的​職責,​請​務必​從​最終​用戶​和​測試​開發​人員​的​角度​審視​所​開發​的​步驟​類型​的​功能。
確定​自​定義​步驟​類型​的​要求​時,​請​遵循​以下​准則

  • 定義​自​定義​步驟​類型​的​范圍。 思考​測試​開發​人員​將​使用​自​定義​步驟​類型​執行​哪些​任務。 此​范圍​應​足夠​大,​能夠​處理​這些​用例,​但​范圍​過​大會​使​步驟​類型​的​目的​不​明確。
  • 根據​步驟​類型​的​范圍,​定義​步驟​類型​需要​的​數據​以及​存儲​數據​的​方式。
  • 定義​步驟​類型​的​所有​實例​應​實現​的​所有​功能。 確保​在​步驟​屬性​中​定義​此​功能​所需​的​所有​數據。
  • 定義​哪些​數據​可​由​用戶​編輯,​哪些​數據​應​記錄​到​報表​或​數據​庫​中。
  • 思考​將來​可能​會​需要​的​功能​或​配置,​並​確保​這些​項目​的​實現​方式​可​使​步驟​類型​的​更新​順利​傳遞​到​所有​實例。

管理​步驟​類型​數據

自​定義​步驟​類型​將​數據​存儲​在​多個​屬性​和​設置​中,​這些​屬性​和​設置​可​用於​配置​步驟​類型​實例​的​行為,​以及​管理​步驟​類型​功能​所需​的​數據。​其中​包括:

  • 內​置​類型​屬性,​存在​於​所有​步驟​類型​中,​無法​在​相應​類型​的​實例​中​進行​修改。
  • 默認​值​屬性,​用於​定義​新​步驟​實例​的​狀態,​可在​相應​類型​的​實例​中​進行​修改。
  • 為​步驟​類型​定義​的​自​定義​屬性。

內​置​類型​屬性

內​置​步驟​類型​屬性​存在​於​所有​步驟​類型​中,​用戶​無法​在​相應​步驟​類型​的​實例​中​修改​這些​設置。 此外,​對​這些​屬性​的​值​所​做的​更改​都​將​傳遞​到​相應​步驟​類型​的​所有​實例。

示例:​所有​步驟​類型​都​定義​了​一個​說明​表達​式,​該​表達​式​顯示​在​步驟​實例​旁邊​的“步驟”(Steps)​窗​格​中。 此​屬性​存在​於​所有​步驟​類型​中,​但​每​種​步驟​類型​的​相應​值​均​單獨​設置。 此​值​無法​在​步驟​類型​的​實例​中​進行​修改。

訪問​步驟​類型​的​內​置​屬性:

  1. 使用“查看”(View) »“類型”(Types)菜單​或​快捷​鍵​Ctrl + T​導航​到​類型​視圖
  2. 右​鍵​單擊​步驟​類型,​然后​選擇“屬性…”(Properties…),​啟動​屬性​窗口

步驟​類型​屬性​對話框

 

此​對話​框​中的​大​多數​設置​均​為​默認​值,下​一部分將​介紹​這些​內容。 內​置​屬性​包括:

  • 圖​標 — 步驟​的​圖​標,​位於<TestStand Public>/​Components/​Icons文件​夾中
  • 步驟​說明​表達​式 — 步驟​說明,​顯示​在​步驟​類型​實例​的​步驟​窗​格中
  • 版本​設置 — 用於​解決​類型​沖突  
  • 項目​名稱​表達​式​(菜單​選項​卡)​— 定義​插入​選​板​中​步驟​的​名稱

 

創建​自​文​檔​化​說明


由於​相應​說明​無法​在​步驟​實例​中​配置,​因此​您​可以​作為​步驟​類型​開發​人員​對​說明​進行​定義,​從而​幫助​用戶​創建​自​文​檔​化​步驟。 說明​字​段​由​一個​表達​式​指定,​該​表達​式​可​用於​創建​顯示​重要​步驟​屬性​的​動態​說明。 當​用戶​更改​步驟​類型​實例​中的​這些​屬性​值​時,​說明​將​更新,​使​用戶​可以​快速​瀏覽​步驟​狀態,​而無​需​導航​至​步驟​設置​窗​格。

示例:下​圖​第二​步​中的“步驟​說明”更​具有​描述​性,​提供​的​文​檔​更​佳。 此​說明​使用​以下​表達​式​來​定義​說明:

"Calibrate Channels: " + Str(Step.minChannel) + " - " +Str(Step.maxChannel)

如果​用戶​配置​了​minChannel​和​maxChannel​步驟​屬性,​則​此​表達​式​會​將​說明​配置​為​動態​更新。

 

步驟​說明​示例

 

步驟​屬性​默認值

開發​步驟​類型​時,​可以​為​所有​用戶​可​配置​步驟​設置​配置​默認​值。 此外,​這些​屬性​可​配置​為​在​步驟​實例​中​禁用,​從而​使​設置​的​默認​值​無法​被​修改。 與​內​置​屬性​一樣,​默認​值​也在​步驟​屬性​窗口​中​進行​定義。 但是,​所有​默認​值​設置​都​包含“默認”一​詞,​它​可能​存在​於​設置​名稱​中​或​配置​默認​值​的​設置​選項​卡​中。

示例:狀態​表達​式​屬性​用於​確定​步驟​結果。 此​屬性​存在​於​所有​步驟​類型​中,​每​種​步驟​類型​均​設置​為​默認​值。 在​某些​步驟​類型​中,​例如“數值​邊界​測試”,​狀態​表達​式​在​步驟​類型​中​被​禁用,​因此​無法​在​單​個​數值​邊界​測試​步驟​中​對​表達​式​進行​編輯

設計​自​定義​步驟​類型​時,​可以​禁用​在​步驟​類型​的​實例​之間​不會​變化​的​任意​屬性。 如此​可以​更好​地​控制​步驟​類型​用戶​修改​行為​的​方式。​但是,​限制​用戶​編輯​步驟​設置​可能​會​影響​靈活​性,​因此​您​應​僅​禁用​確定​用戶​始終​不需要​修改​的​設置。

請​記住,​即使​禁用​在​步驟​實例​中​編輯​步驟​屬性​默認​值​的​功能,​以后​對​這些​默認​值​所​做的​更改​也不會​傳遞​到​步驟​類型​的​實例。​關於​如何​解決​此​問題​的​更多​信息,​請​查看《更新​和​維護​步驟​類型》。


更新​默認​值​時​的​注意​事項


不​應​使用​這些​屬性​的​值​來​定義​步驟​類型​開發​人員​可能​需要​更新​的​步驟​類型​功能。 例如,​請​勿​使用​步驟​的“Post”表達​式​來​實現​步驟​類型​特定​功能。 如果​需要​在​步驟​類型​的​未來​版本​中​更新​此​功能,​將​無法​確保​步驟​的​所有​實例​都​將​更新。 而是​應​在​步驟​前​或​步驟​后​的​子​步驟​中​實現​此​功能。

自​定義​屬性


除​內​置​屬性​外,​還​可以​定義​特定​於​步驟​類型​的​自​定義​屬性。 這些​屬性​可​用於​存儲​與​步驟​類型​功能​具體​相關​的​數據。 

示例:數值​邊界​測試​步驟​包含​一個“Limits.High”屬性,​這​是​數值​邊界​步驟​類型​的​獨​有​屬性。 該​類型​將​此​屬性​的​默認​值​定義​為​11,​用戶​可以​修改​其​創建​的​每​個​實例​中的​該​值。

創建​自​定義​步驟​屬性:

  1. 使用“查看”(View) »“類型”(Types)菜單​或​快捷​鍵​Ctrl + T​導航​到​類型​視圖
  2. 展開​步驟​類型​項。
  3. 右​鍵​單擊“父”(Parent)​屬性或“<Right click to insert field>”條目​來​添加​新​屬性

如果​在​步驟​類型​的​結果​容器​中​定義​了​屬性,​則​該​屬性​將​包含​在​結果​集合​中。 然后,IncludeInReport或IncludeInDatabase標志​可​用於​將​數據​記錄​到​報表​或​數據​庫​中。

 

 

默認​狀態​下,​用戶​可以​更改​每​個​步驟​實例​的​步驟​屬性​值。 但是,​如果​在​步驟​類型​中​為​步驟​屬性​設置​了​共享​標志,​則​該​值​將​被​鎖定​為​步驟​類型​中的​值。 與​步驟​默認​值​不同,​對​該​值​的​更新​將​傳遞​到​步驟​類型​的​實例。

確定​自​定義​步驟​類型​的​范圍

為​步驟​屬性​選擇​的​數據​類型​應​由​步驟​類型​的​范圍​決定。​例如,​考慮​數值​邊界​測試​和​多數​值​邊界​測試​步驟。 雖然​多數​值​邊界​測試​可以​容納​更多​邊界​並​具有​更多​功能,​但是​也​增加​了​編輯​時​用戶​界面​和​結果​記錄​的​復雜​性。 更​基本​的​數值​邊界​測試​的​范圍​更​小,​界面​也​更​簡單。​需要​的​開發​工作​更少,​除此之外,​對​測試​序列​開發​人員​而言,​范圍​更​小​的​步驟​也​更易​於​使用。


在​開發​自己​的​自​定義​步驟​類型​時,​請​務必​在​定義​自​定義​屬性​之前​先​定義​步驟​的​范圍,​因為​所​選​的​屬性​會​顯著​影響​步驟​類型​的​復雜​性。

子​步驟​可​用於​配置​自​定義​步驟​類型​功能

以下​各​部分​說明​了​如何​使用​子​步驟​來​實現​以下​步驟​類型​行為:

  • Runtime​功能,​應​在​主​代碼​模​塊​之前​或​之后​對​步驟​類型​的​所有​實例​執行
  • 用戶​界面,​在​編輯​測試​序列​時​查看​和​編輯​步驟​數據
  • 測試​開發​人員​創建​步驟​的​新​實例​時​執行​的​功能

 

實現​子​步驟

子​步驟​使用​所​提供​的​TestStand​適​配​器​之一​調​用​代碼​模​塊。 子​步驟​無法​在​步驟​的​實例​中​修改,​對​子​步驟​設置​的​所有​更改​都​將​傳遞​到​步驟​類型​的​實例。  

將​子​步驟​添加​到​自​定義​步驟​類型:

  1. 使用“查看”(View) »“類型”(Types)菜單​或​快捷​鍵​Ctrl + T​導航​到​類型​視圖
  2. 右​鍵​單擊​步驟​類型,​然后​選擇“屬性…”(Properties…)
  3. 選擇“子​步驟”(Substeps)​選項​卡。 選擇​與​所需​代碼​模​塊​匹配​的​適​配器
  4. 單擊“添加”(Add),​然后​選擇​子​步驟​類型。 子​步驟​列表​中將​出現​一個​新​條目
  5. 選擇​相應​條目,​然后​單擊“指定​模​塊”(Specify Module),​為​子​步驟​配置​代碼​模​塊,​方法​與​為​步驟​配置​代碼​模​塊​相同

     多數​值​邊界​測試​步驟​類型​的​步驟​后​和​編輯​子​步驟

 

定義​步驟​類型​的​Runtime​功能

步驟​前​和​步驟​后​子​步驟​可​用於​為​步驟​類型​定義​Runtime​功能。 在​步驟​執行​時,​這些​子​步驟​會​在​主​代碼​模​塊​之前​或​之后​執行。  

示例:消息​彈出​步驟​類型​使用​C​代碼​模​塊​在​運行​時​創建​和​顯示​消息​框。 此​模​塊​將​在​步驟​后​子​步驟​中​調​用, 

          步驟​執行​順序:​子​步驟

 

這些​子​步驟​可​用於​定義​適用​於​步驟​所有​實例​的​功能。 通常,​子​步驟​需要​與​步驟​類型​的​行為​相關​的​特定​數據。 在​自​定義​步驟​屬性​中​定義​此​數據,​從而​確保​此​數據​在​步驟​的​所有​實例​中​均可​用。

如果​存在​多個​步驟​前​或​步驟​后​子​步驟,​則​它們​將​按照“步驟​類型​屬性”(Step Type Property)​對話​框“子​步驟”(Substep)​選項​卡​上​顯示​的​順序​執行。

默認​狀態​下,​測試​開發​人員​可以​為​步驟​類型​的​每​個​實例​指定​一個​代碼​模​塊。 如果​步驟​類型​不需要​代碼​模​塊,​則​應​在“禁用​屬性”(Disable Properties)​選項​卡​中​為​步驟​類型​配置​禁用“指定​模​塊”(Specify Module)​選項。 許多​內​置​步驟​類型​都​采用​這種​設計​方式,​例如​語​句​和​消息​彈出​步驟。

提供​長期​操作​的​視覺​反饋

TestStand​會​等待​步驟​前​或​步驟​后​子​步驟​中的​代碼​執行,​然后​再​繼續​下一步​操作。​如果​這些​步驟​的​代碼​模​塊​運行​緩慢​或​靜默​運行,​TestStand​看起來​會​像是​無​響應。​為了​解決​此​問題,​可以​更改​光​標​或​使用​UI​消息​(例如​UIMsg_ProgressPercent)​來​更新​狀態​欄​中的​進度​條。 

關於​如何​使用​此​方法​的​更多​信息,​請​查看《使用​UI​消息​更新​狀態欄

使用​終止​監視器

您​開發​的​代碼​模​塊​應​包括​並​定期​輪​詢​終止​監視​器,​以便​在​用戶​使用​TestStand​或​TestStand API​中的​內​置​選項​終止​或​中止​序列​執行​時​正常​應對。 如果​用戶​終止​序列​執行,​借助​終止​監視​器​可以​快速​終止​相應​子​步驟。

關於​在​代碼​中​實現​終止​監視​器​的​更多​信息,​請​查看《終止​監視​器​示例

使用​步驟​前​或​步驟​后​子​步驟​代替​默認​模塊

將​步驟​類型​固有​的​基本​操作​的​代碼​模​塊​作為​步驟​前​或​步驟​后​子​步驟​來​實現,​而不是​作為​默認​模​塊。​僅​當​步驟​的​每​個​實例​可以​調​用​不同​的​代碼​模​塊​時,​才​使用​默認​模​塊​設置。​默認​的​模​塊​設置​獨立​存在​於​步驟​的​每​個​實例​中,​而且​當​更改​步驟​類型​的​設置​時,​默認​狀態​下,​TestStand​不會​更新​現有​的​步驟​實例。​但是,​對​子​步驟​的​更改​會​自動​影響​相應​步驟​類型​的​所有​現有​實例。

 

為​步驟​類型​創建​編輯​界面

編輯​子​步驟​提供​在​代碼​模​塊​中​實現​的​圖形​用戶​界面​(GUI),​用戶​可以​在​編輯​時​在​其中​修改​相應​步驟​實例​的​變量​或​設置。​通常,​編輯​子​步驟​用於​配置​為​步驟​類型​定義​的​自​定義​步驟​屬性。  

示例:“打開​數據​庫”步驟​類型​通過​編輯​子​步驟​提供​了​一個​對話​框,​使​用戶​可以​配置​ConnectionString​和​DatabaseHandle​步驟​屬性,​這​兩​個​屬性​是​數據​庫​步驟​類型​的​自​定義​屬性。

編輯​子​步驟​提供​了​用於​配置​步驟​設置​的​用戶​界面

 

用戶​創建​自​定義​步驟​類型​的​實例​時,​可​使用​步驟​設置​窗​格​中的​按鈕​訪問​編輯​子​步驟​用戶​界面,​這​將​在​新​窗口​中​啟動​編輯​子​步驟​UI。 不過,​像​許多​內​置​步驟​類型​一樣,​也可以​直接​在​選項​卡​中​嵌入​編輯​子​步驟​用戶​界面。 這種​方法​需要​額外​的​開發​工作,​並且​必須​使用.NET​語言​進行​開發,​但是​這​為​步驟​類型​的​用戶​提供​了​更加​無縫​的​編輯​界面。 關於​如何​實現​嵌入式​編輯​子​步驟​界面​的​更多​信息,​請​查看《在​序列​編輯​器​中​創建​自​定義​步驟​類型​編輯​選項卡》。

嵌入式​編輯​界面​(上)​與​在​單獨​的​窗口​中​啟動​的​編輯​子​步驟​(下)​之間​的​比較

單​個​與​多個​編輯​子​步驟

一個​自​定義​步驟​類型​可以​定義​許多​屬性,​如果​所有​屬性​同時​向​用戶​顯示,​可能​會​造成​混淆。 使用​在​單獨​的​窗口​中​啟動​的​編輯​子​步驟​常用​方法​時,​請在​單​個​編輯​子​步驟​中​使用​組織​方法​(例如​引入​選項​卡)​將​數據​組織​到​可​管理​的​部分​中。 由於​每​個​界面​必須​獨立​啟動,​因此​不​建議​使用​多個​編輯​子​步驟。 例如,“打開​SQL​語​句”步驟​可​實現​帶有​多個​選項​卡​的​單​個​編輯​子​步驟。  

“打開​SQL​語​句”步驟​的​編輯​子​步驟​包含​兩​個​選項​卡,​可​用於​對​設置​進行​分類

如果​將​嵌入式​步驟​面板​方法​用於​復雜​的​步驟​類型,​則​使用​多個​編輯​面板​的​方法​更​佳,​這​是​因為​步驟​選項​卡​上​會​清楚​地​顯示​數據。​例如,“多數​值​邊界​測試”步驟​包含​兩​個​選項​卡,​可​用於​編輯​數值​數據​源​和​每​個​數據​源​的​邊界​條件。 

“邊界”(Limit)​和“數據​源”(Data source)​選項​卡​分別​在​單獨​的​編輯​面板​中​實現

 

將​編輯​子​步驟​模​態​化​到​TestStand

始終​將​編輯​子​步驟​和​其他​用戶​界面​代碼​模​塊​模​態​化​到​TestStand,​因為​當​TestStand​調​用​編輯​子​步驟​時,​它​將​禁用​序列​編輯​器。​如果​代碼​模​塊​未​模​態​化,​TestStand​窗口​可能​會​隱藏​代碼​模​塊。​用戶​可能​認為​序列​編輯​器​已​掛​起,​並​可能​嘗試​終止​TestStand。

關於​如何​在​子​步驟​模​塊​中​實現​模​態​化​的​更多​詳細​信息,​請​參見將​對話​框​模​態​化​到​TestStand示例。

表達​式​可​用於​充分​提高​靈活性

在​編輯​子​步驟​UI​中​使用​表達​式​字​段​可​幫助​用戶​與​數據​進行​靈活​交互,​並​使​用戶​可以​在​屬性​值​中​使用​變量​和​邏輯。 但是,​與​使用​字符​串​或​數值​控​件​相比,​使用​表達​式​控​件​需要​更多​的​投資,​並且​需要​進行​額外​的​檢查​來​確保​表達​式​可​為​屬性​提供​有效​值。 

指定​設置​時,​表達​式​比​固定​值​更​靈活

定義​開發​人員​創建​步驟​實例​時​的​行為

在​許多​情況​下,​可能​需要​定義​在​測試​開發​人員​創建​新的​步驟​實例​時​出現​的​功能。 例如,​內​置​的“If”步驟​類型​使用​OnNewStep​子​步驟​來​插入​匹配​的“End”步驟。

為了​實現​這種​功能,​需要​創建​一個​編輯​子​步驟,​然后​將​該​子​步驟​重​命名​為“OnNewStep”。 這些​子​步驟​通常​使用​TestStand API​來​操作​步驟​實例​或​創建​其他​步驟​實例。

對​子​步驟​的​通用​建議

使用​參數​或​TestStand API​在​子​步驟​中​訪問​數據

與​標准​代碼​模​塊​一樣,​將​TestStand​數據​提供​給​子​步驟​的​方法​有​兩​種。 可以​通過​代碼​模​塊​的​參數​傳遞​數據。 另外,​還​可以​從​代碼​模​塊​內​調​用​TestStand API,​直接​訪問​和​更改​屬性。​步驟​前​和​步驟​后​子​步驟​通常​只需要​讀​取​步驟​屬性​即可​確定​其​行為。​例如,​用於​設置​加熱​室​的​溫度​值。 但是,​編輯​子​步驟​需要​將​屬性​的​當前​狀態​顯示​在​初始​UI​中,​而且​還​需要​一種​方法​來​更新​用戶​修改​的​任何​值。  

在​大​多數​情況​下,​與​使用​TestStand API​直接​訪問​數據​相比,​使用​參數​傳遞​數據​是​一種​更好​的​方法。 使用​參數​更不​容易​出​錯:​由於​屬性​是在​TestStand​的​步驟​類型​設置​中​定義​的,​而不是​直接​在​代碼​模​塊​中​定義​的,​因此​更​容易​發現​屬性​名稱​或​數據​類型​中的​錯誤。​此外,​在​步驟​配置​中​定義​所有​屬性​可​使​步驟​類型​更易​於​維護。 在​不​修改​代碼​模​塊​的​情況​下,​對​步驟​屬性​的​任何​更改​都可以​考慮。

但是,​根據​步驟​的​狀態,​當​代碼​模​塊​需要​動態​訪問​各種​數據​時,​使用​API​直接​訪問​屬性​可能​很有​幫助。 在​這種​情況​下,​使用​步驟​參數​會​導致​參數​過多,​而​在​不同​情況​下,​實際​用到​的​參數​只有​一部分。

模​塊​適​配​器​將​步驟​變量​讀​取​或​寫​入​到​代碼​模​塊​的​輸入​和​輸出​中,​並​檢查​錯誤

 

在​LabVIEW​中​使用​TestStand API​訪問​步驟​屬性​不會​在​編輯​時​提供​參數​錯誤​檢查​功能

編輯​時​卸​載​模塊

在​為​自​定義​步驟​類型​的​子​步驟​開發​和​測試​代碼​模​塊​時,​請​注意,​在​執行​子​步驟​時,​TestStand​會​加​載​代碼​模​塊​並​將​其​保留​在​內存​中。​由於​模​塊​將​保持​加​載​狀態​以供​后​續​執行,​因此​這​可以​提高​性能,​但是​在​TestStand​卸​載​模​塊​之前,​無法​編輯​代碼​模​塊。​卸​載​代碼​模​塊​的​方法​有​兩​種:

  1. 選擇“文件”(File)»“卸​載​所有​模​塊”(Unload All Modules),​卸​載​當前​保留​在​內存​中的​任何​模​塊。
  2. 在​子​步驟​配置​窗​格​中,​選擇“編輯”(edit)​按鈕,​卸​載​模​塊​並​在​相應​的​開發​環境​中​打開​模塊

 

維護​自​定義​步驟​類型​的​最佳​實踐

存儲​和​分​發自​定義​步驟​類型

應​考慮​如何​存儲​和​分發​創建​的​自​定義​步驟,​這​一點​很​重要。​NI​建議​在​類型​選​板​文件​中​(而不是​在​序列​文件​中)​創建​所有​步驟​類型,​因為​在​加​載​序列​文件​時,​TestStand​會​在​類型​選​板​文件​中​搜索​步驟​類型​更新。​TestStand​還​可以​在​序列​文件​中​保留​所​使用​的​每​個​步驟​類型​的​副本,​幫助​管理​步驟​的​復​用。​如果​在​部署​序列​文件​時​未​使用​類型​選​板​文件,​序列​文件​仍​將​包含​步驟​類型​的​副本。  

框架​開發​人員​創建​的​步驟​類型​通常​會​分發​給​多個​測試​開發​人員​使用。 由於​步驟​類型​具有​許多​關聯​的​文件,​因此​這​可能​會​帶來​一定​的​挑戰。 為了​幫助​管理​步驟​類型​文件,​請​使用​以下​目錄​存儲​步驟​類型​的​文件

  • 類型​選​板​文件​包含​類型​定義<TestStand Public>/​Components/​TypePalettes/
  • 子​步驟​代碼​模​塊​文件<TestStand Public>/​Components/​StepTypes/​[typeName]
  • 自​定義​圖標<TestStand Public>/​Components/​Icons/​[typeName]

通過​使用​這些​目錄,​可​將​必要​的​文件​分發​到​任何​測試​開發​人員​系統​上​的​TestStand Public​目錄。 如果​在​新的​類型​選​板​文件​中​定義​了​類型,​則​可以​對​TestStand​進行​配置,​在​類型​選​板​文件​名​中​添加“Install_”前​綴,​自動​導入​類型​選​板。 關於​此​方法​的​詳細​信息,​請​查看“類型​選​板​文件”幫助​主題

 

避免​重​命名​或​更改​步驟​屬性​的​數據​類型

如果​需要​更改​自​定義​屬性​的​類型,​可以​使用​新​類型​創建​另​一個​屬性,​並​保留​使用​先前​類型​的​屬性。​如果​更改​了​屬性​的​名稱​或​數據​類型,​TestStand​會​將​步驟​實例​中的​屬性​值​替換​為​該​屬性​的​默認​值。​除了​使用​新​類型​創建​新​屬性​外,​還​可以​向​步驟​類型​添加​邏輯,​用於​處理​步驟​同時​使用​舊​屬性​和​新​屬性​的​情況。​例如,​當​TestStand​將​邊界​值​實現​為​表達​式​時,​它​會​添加​兩​個​新的​布​爾​屬性,​用於​指定​使用​舊​的​數值​邊界​屬性。​UseLowExpr​和​UseHighExpr​屬性​用於​確定​步驟​是​計算​舊​的​數值​邊界​還是​新的​表達​式​邊界。

 

本文轉自:https://www.ni.com/content/ni/locales/zh-cn/support/documentation/supplemental/08/teststand-custom-step-type-development-best-practices.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM