開發化 TestStand 流程模型

概觀

開發與客制化流程模型是 NI TestStand 的一項強大功能,能讓您通用化多個測試序列中概念,並促進程式碼重複使用,以減少開發與維護時間。

本文件說明客制化流程模型的最佳實務。本文件最適用於已具備基本流程模型開發知識的人員。若要熟悉這些概念,請參閱流程模型理論文件,了解 TestStand 如何使用流程模型。

內容

流程模型測試系統中的角色

為產品建立功能完整的測試,遠不止執行一組測試案例。測試系統通常必須在執行測試序列之前、期間及之後執行一系列的作業。常見定義測試流程的作業包括識別受測裝置 (UUT)、通知操作人員測試通過/失敗狀態、記錄結果以及產生測試報告。這組作業及其執行流程稱為流程模型。在 TestStand 中,流程模型層是透過序列檔案實作,且獨立於 TestStand 引擎。此模組化設計可讓您客制化流程模型,而不影響測試執行軟體本身。

流程模型提供與測試執行及測試程式碼分離的額外層,以實作共用的測試功能

流程模型使 TestStand 有別於大多數自行開發的測試執行軟體。這些應用通常沒有流程模型的概念,測試序列或測試執行軟體本身提供共用測試任務機制。 上述兩種方式都不是理想選擇:

  • 若由測試程式碼負責共用作業,每新建一組測試就需重複此程式碼。
  • 若共用作業直接在測試執行軟體中實作,需更新整個執行軟體才能更改這些作業。

使用流程模型執行共用作業能提升模組化與重用性,因爲只需於單一位置修改共用作業,且仍與底層測試執行軟體分開。

TestStand 流程模型透過外掛架構進一步模組化。 流程模型會呼叫外掛程式序列檔案以實作結果處理,例如報告產生與資料庫記錄。 您可修改這些外掛程式或自行建立外掛程式,以擴充流程模型功能,而無需修改流程模型本身。

流程模型會呼叫外掛程式以執行結果處理,包括報告產生與資料庫記錄。 您也可以建立客制化外掛程式以實作客制化記錄機制。

您可以使用 TestStand 流程模型建立極為強大且靈活的測試應用。流程模型的模組化實作可將更新架構功能時所需的程式碼變更量減至最低。使用 TestStand 流程模型架構開發完整測試系統,可節省時間及開發與維護成本。

流程模型元件

在 TestStand 中,流程模型是以啟用了流程模型選項的序列檔案實作,使其可包含其他類型的模型專屬序列。 序列檔案類型可於「Sequence File Properties」(序列檔案屬性) 的「Advanced」(進階) 分頁中設定。這些序列類型各自具備特定行為:

  • 「執行」進入點讓使用者可使用所需的流程模型序列來執行測試。
  • 「設定」進入點提供使用者介面以設定流程模型設定,並儲存這些設定。
  • 模型回呼允許測試序列檔案覆寫流程模型的行為。

請使用「Sequence Properties」(序列屬性) 對話方塊中的「Model」(模型) 分頁,設定流程模型檔案所能包含的序列類型。

執行進入序列

執行進入點為使用者提供透過流程模型執行測試程式碼的方式。預設的 TestStand 流程模型提供兩個「執行」進入點:測試受測裝置 (Test UUT) 與單次通過 (Single Pass)。這兩個進入點均以流程模型序列檔案中的序列實作。在序列編輯器中,當啓用的視窗包含使用流程模型的序列檔案時,「Execute」(執行) 功能表將列出執行進入點。

「順序」流程模型使用單次通過與測試受測裝置執行進入點。這兩個執行進入點皆呼叫用戶端序列檔案的 MainSequence 序列,一次對一個 UUT 執行測試。這些進入點也共用其他動作,例如產生測試報告以及將資料結果儲存於資料庫中。

順序流程模型單次通過與測試 UUT 執行進入點的流程圖

進入點名稱運算式為使用該進入點時在序列編輯器或使用者介面中顯示的名稱。可在「Sequence Properties」(序列屬性) 對話方塊「Model」(模型) 分頁中的「Entry Point Name Expression」(進入點名稱運算式) 文字方塊編輯此值。只有當所選序列為執行進入點時,「Entry Point Name Expression」(進入點名稱運算式) 文字方塊才會顯示。預設值如 ResStr(「MODEL」、「TEST_UUTS」) 使用 ResStr 函式,此函式具備 TestStand 本地化功能。可以其他本地化值替換該值,或是使用從使用者視角描述進入點的常數字串運算式。 

使用本地化字串而非常數的優勢在於,無需修改流程模型本身即可變更字串值。若要了解使用 TestStand 資源字串進行本地化的詳細資訊,請參閱將 TestStand 本地化為不同語言線上教學。

設定進入點

設定進入點讓使用者設定流程模型的相關設定。 預設模型包含模型選項及結果處理進入點。 與執行進入點類似,設定進入點以序列形式在流程模型檔案中實作,並在序列編輯器的設定功能表中列出。 為了儲存設定,模型進入點會將資料寫入 TestStand 設定目錄中的設定檔案。

模型回呼

模型回呼允許測試開發人員客制化特定測試之流程模型的某些層面,而無需變更流程模型本身。 流程模型定義進入點於執行過程中呼叫的回呼序列。 例如,測試 UUT 進入點在開始測試前呼叫 PreUUT 回呼序列,以提示使用者輸入序號。 如果測試開發人員需要對此功能進行特定變更,可在其測試序列檔案中覆寫回呼。 在此情境下,當模型呼叫 PreUUT 序列時,會呼叫測試序列檔案中的序列,而非流程模型檔案中的 PreUUT 序列。

有關流程模型回呼的詳細說明,請參閱在 NI TestStand 中使用回呼文件。


測試序列檔案可以覆寫流程模型中的回呼序列,以定義客制化行為。

流程模型外掛程式

預設流程模型使用外掛架構來實作結果處理,包括產生報告與記錄資料庫。 每個外掛程式皆在獨立序列檔案中實作,包含於主流程模型進入點不同階段呼叫的外掛程式進入點序列。 流程模型亦提供外掛程式設定對話方塊,讓測試開發人員能夠設定啟用的外掛程式,並設定外掛程式設定。 

有關 TestStand 流程模型外掛架構的更多資訊,請參閱流程模型外掛架構說明主題。  

額外引擎回呼

流程模型序列檔案提供標準序列檔案不具備的額外引擎回呼。 這些以「ProcessModel」為前置詞的回呼,僅對您定義它們的流程模型中目前用戶端序列檔案的步驟執行。 例如,ProcessModelPostStep 回呼會在測試序列中執行的每個步驟後執行,但不會在流程模型本身中的步驟後執行。

這類回呼常見用途為客制化錯誤處理。 通常,測試開發人員希望從錯誤中擷取盡可能多的資訊,並希望掌控錯誤發生時的系統行為。在其他使用案例中,外包的全自動環境通常需要啟動/停止輸入與紅綠燈輸出,並有適當的除錯記錄以追蹤先前系統與測試錯誤活動。

您可使用定義於流程模型層級的 ProcessModelPostStepFailure 與 ProcessModelPostStepRuntimeError 引擎回呼,無需測試序列程式設計師額外的工作,即可統一處理所有用戶端序列檔案的錯誤。若用戶端序列檔案出錯,這些回呼將會執行。

流程模型

在多數情況下,您可能需要擴充或修改隨附於 TestStand 的流程模型功能。 流程模型的常見變更包括修改報告、測試重試策略、錯誤處理與記錄、工作站校準常式,以及 UUT 選擇機制。

使用流程模型外掛程式新增功能

預設流程模型使用外掛程式實作結果處理功能,包括產生報告與記錄資料庫。 然而,外掛程式並不限於結果處理。 如果需要為流程模型新增功能,您可自行建立外掛程式實作此功能,無需修改流程模型本身。 此做法擁有多項優勢:

  • 您可輕鬆將外掛程式整合至順序模型、批次模型及平行模型,無需對各模型個別變更。
  • 您無需維護及部署客制化流程模型。
  • 您可將客制化與流程模型未來變更整合。
  • 無需整合流程模型程式碼變更即可分享外掛程式。

預設情況下,使用者必須為模型建立外掛程式實體以執行這些外掛程式。 若新增功能僅需在特定情況執行,則最好採用此選擇加入的方法。 若功能需一律執行,類似流程模型本身的程式碼,可使用流程模型外掛程式附加元件。  模型外掛程式附加元件實作方式與標準外掛程式相同,但儲存在外掛程式目錄下的 addons 子資料夾中。 它們不顯示於外掛程式設定對話方塊中,并且一律執行。

建立外掛程式

除了客制化結果處理功能外,您還可以透過多種方式開發客制化外掛程式來擴充流程模型。 測試站校準即為您可透過客制化外掛程式新增至流程模型的一個功能範例。 在測試站上執行測試序列檔案之前,您可能需要確認站校準的有效性。這些常式通常基於有效期限檢查測試設備是否校準。如果校準到期,將會觸發錯誤狀態、警告操作人員,並阻止測試執行。

在客制化模型外掛程式實作該功能後,可以讓使用者視需要停用校準,並透過結果處理對話方塊提供設定介面供測試開發人員使用。 請參閱建立流程模型外掛程式主題以了解實作資訊。

修改現有模型行為

若需變更直接在流程模型中實作的行為,例如 UUT 序號追蹤,必須直接修改模型。建議從流程模型複本開始開發新模型或客制化現有模型,以重用預設流程模型中實作的大量微調邏輯。   

修改流程模型前,先複製位置在 <TestStand>/Components/Models 中的整個模型目錄,貼到 TestStand 公開目錄 <TestStand Public>/Components/Models 的對應位置。 只對 TestStand 公開位置中的檔案進行變更。

修改模型進入點

在多數情況下,您可能想客制化執行進入點的執行流程。 例如,當發生特定類型故障時,您可能想讓測試系統對 UUT 自動重試測試,或限制每位操作人員的重試次數,直到主管決定是否需進一步重測。此類變更需直接修改進入點序列,以加入迴圈與其他條件。 變更進入點時,請務必記錄變更,以便區分預設行為與客制化行爲。

測試開發人員模型行為

客制化流程模型時,務必考量特定測試是否需修改或停用您定義的行為。 若測試開發人員可能需要進行變更,請使用現有或新增回呼序列實作此變更。 測試開發人員若需變更您定義的行為,可覆寫該回呼。 

新功能應一律以獨立序列實作,並由應實作該功能的進入點呼叫。您可根據想要為測試開發人員提供的客制化程度,采用以下方式在流程模型中實作序列:

  • 您想要為測試開發人員提供在特定執行階段擴展模型的方式:實作一個無預設功能的預留位置,以便用戶端序列檔案在必要時插入功能。當您從進入點呼叫回呼函式時,還可以選擇將參數傳遞給它,以提供相關資料給測試開發人員。 例如,ModifyReportHeader 不提供預設實作,但會將包含報告相關資料的參數傳遞給回呼函式,讓測試開發人員存取並修改報告。
  • 您想要定義測試開發人員可客制化或停用的功能: 實作預設行為,使用戶端回呼可呼叫模型回呼以執行流程模型預設實作,且用戶端回呼可實作額外功能。預設情況下,PostUUT 實作橫幅以顯示測試序列結果。用戶端序列檔案可實作客制化 PostUUT 行為,並透過覆寫回呼且仍呼叫流程模型實作來保留橫幅。 可以使用「Sequence Properties」(序列屬性)中的「Copy Step and Locals when Creating an Overriding Sequence」(建立複寫序列時複製步驟與區域) 選項,指定在測試開發人員覆寫回呼時應該複製該序列的內容。
  • 您想要完全阻止測試開發人員客制化功能:若您定義的功能不容測試開發人員修改,請使用一般序列而非回呼序列,因為一般序列無法在用戶端序列檔案中覆寫。

現有流程模型外掛程式行為


架構開發人員通常客制化報告產生行為,以滿足其測試系統的特定需求。 進階架構系列的 NI TestStand 報告產生與客制化最佳實務文件中詳述報告客制化。 本文件進一步說明如何在 TestStand 模型架構中實作報告產生客制化。  

修改流程模型資料結構

預設流程模型定義資料類型,用以儲存當前 UUT、站與模型選項的資訊。 某些情況下,您可能需要在這些屬性中儲存額外資料,通常是 UUT 資料。 比如,預設的 TestStand UUT 選擇機制僅追蹤序號,但您可能也需要保留型號。 

NI 建議盡可能避免修改模型資料類型,因為多個 TestStand 檔案均參照它們,且更新維護較困難。 不過,流程模型於 UUT 與 NI_StationInfo 資料類型中提供非結構化屬性,讓您可輕易新增額外 UUT 追蹤資訊,無需修改 UUT 資料類型。您可以於 UUT.AdditionalData 容器中建立新的 ModelNumber 屬性以儲存相關資訊。 搭配 TestStand 附帶的將客制化資料新增至報告範例,可示範如何在此屬性中加入欄位並納入測試報告。 該範例利用回呼於用戶端序列檔案中實作更新,但您亦可直接在流程模型中採用相同方式。

定義特定測試行為

您亦可於 <TestStand Public>\Components\Callbacks\Station 目錄的 StationCallbacks.seq 檔案中,建立同名但功能不同的序列,以覆寫流程模型序列檔案中的回呼。TestStand 會呼叫 StationCallbacks.seq 中的模型回呼,而非呼叫任何模型中定義的同名回呼。用戶端檔案中的回呼會覆寫模型與 StationCallbacks.seq 檔案中同名的回呼。

流程模型升級新版 TestStand

升級至較新版 TestStand 時,需將您對預設流程模型所做的變更與 NI 在新版中的修改合併。 為此,請先使用 TestStand 區分工具 (位於序列編輯器的 Edit » Diff Sequence File Against 中) 檢查舊版與新版預設流程模型的差異。若所有修改均集中於流程模型檔案中的新序列,或獨立實作於外掛程式中,則將流程模型客制化匯入至新版流程模型的作業相對簡單。

若您想要遷移在 2012 之前版本 TestStand 中建立的模型,需大量變更新版模型以實作外掛架構。 有關在此情況下遷移流程模型的詳情,請參閱將流程模型zi内容遷移至 TestStand 2012 或更新版本

Was this information helpful?

Yes

No