概覽
自動化測試系統的一個常見要求是生成一份完整的報表,其中包含所有結果信息,可解答以下問題:“什么是序列測試?”和“每個待測設備(UUT)的測試結果是什么?”。
本文檔提供有關TestStand報表的信息,包括配置不同的報表格式,在報表中添加其他數據,以及自定義報表。
內容
- TestStand如何生成報表
- 自定義TestStand報表
- 結論
TestStand如何生成報表
在了解TestStand報表自定義提供的選項之前,請務必先了解TestStand報表的生成方式。
TestStand使用兩步方法來生成測試報表:
- 結果收集:在執行測試的同時,TestStand會收集測試執行期間的結果數據。這些整合結果可用於所有結果處理操作,包括報表生成和數據庫記錄。
- 報表生成:TestStand報表生成器使用結果收集過程中所收集的數據來生成報表文件。
下圖為此過程的示意圖:
TestStand在ResultList變量中收集測試結果,報表生成器使用該變量創建可讀的測試報表
結果收集
TestStand執行序列時,會收集步驟結果和其他信息,以在報表中體現。結果收集直接由TestStand引擎實現,並且獨立於結果處理(如報表生成或數據庫記錄)進行。
Locals.ResultList屬性
序列使用所有新序列中自動創建的Locals.ResultList來存儲結果數據。TestStand在序列執行期間填充ResultList,並將其存儲在內存(RAM)中。
ResultList局部變量最初是一個空的容器數組。執行完每個步驟后,TestStand會在數組末尾附加一個新的容器元素,用來存儲已執行步驟的結果,並使用以下兩個數據源來填充數據:
- 自定義結果屬性:從已執行步驟的Step.Result容器中獲取。
- 標准結果屬性:從TestStand引擎中獲取。
自定義結果屬性
ResultList中的某些數據是從步驟屬性中獲取的。 默認狀態下,結果收集中僅包含步驟屬性“結果(Result)”容器中的屬性。例如,步驟結果容器中的兩個重要元素是:
- Result.Status:一個字符串元素,表示該步驟的測試結果。
- Result.Error:一種容器,用於存儲該步驟的錯誤信息。
步驟屬性會因步驟類型而異,並且許多步驟屬性僅針對特定步驟類型存在。例如,Step.Result.Numeric屬性特定於“數值限度測試(Numeric Limit Test)”步驟類型。
標准結果屬性
除了將步驟屬性復制到ResultList之外,TestStand還會向每個步驟添加一組標准結果屬性。TestStand引擎將這些結果作為Step.Result.TS屬性的子屬性添加。 這些屬性包括該步驟的識別信息,如步驟名稱、類型和定時信息。
下圖顯示了如何使用步驟結果屬性和標准結果屬性來填充ResultList。
結果數據基於以下兩方面生成:取決於步驟類型的自定義結果屬性;所有步驟都相同的標准結果屬性
配置結果收集
在結果收集中添加其他屬性
您可以使用Execution.AddExtraResult方法向ResultList中添加某些步驟屬性。利用此方法,您可以指定屬性查找字符串(如“Step.myStepData”),並將該屬性納入具有該屬性的所有執行步驟的結果列表中。 此外,也可以在ResultList中指定用於該屬性的名稱。
例如,過程模型調用Execution.AddExtraResult方法,以便在ResultList中添加Step.Limits和Step.Comp值。由於這些屬性不在Step.Result容器中,默認狀態下不會收集此類屬性。由於此調用操作,這些屬性將被添加到執行中包含這些屬性的所有步驟的ResultList中。
使用AddExtraResult向結果列表中添加其他步驟屬性
有關其他報表屬性的更多信息,請參閱TestStand幫助中的自定義結果屬性主題。
配置結果收集時間
TestStand結果收集與是否生成報表或數據庫記錄無關。 在某些情況下,如果不需要記錄結果,則可能要對某些步驟或序列禁用結果收集。 以下設置可用於控制記錄哪些結果:
- 禁用所有序列的結果記錄(Disable result recording for all sequences):位於測試站選項的“執行(Execution)”選項卡中,此設置將完全禁用所有結果收集。 如果您未使用TestStand結果處理功能記錄任何數據,請使用此設置。
- 禁用所有步驟的結果記錄(Disable result recording for all steps):位於“序列屬性(Sequence Properties)”中,此設置將禁用特定序列的結果記錄。
- 步驟結果記錄選項(Step Result Recording Option):位於“步驟(Step)”屬性窗格的“運行選項(Run Options)”中,您可以使用此選項來禁用特定步驟的結果記錄。 默認狀態下,上述“序列(Sequence)”設置將覆蓋此設置。但是,您可以選擇啟用(覆蓋序列設置)(Enabled (Override Sequence Setting))來記錄已禁用結果記錄的序列中某個步驟的結果。
如果顧慮測試系統性能或系統內存使用情況,請考慮對頻繁執行的步驟禁用結果記錄,以防止不必要的結果存儲。
報表生成
與作為TestStand引擎一部分的結果收集過程不同,報表生成器由TestStand過程模型通過報表生成插件來實現。有關實施報表生成器的詳細信息,請參閱《報表生成說明》一文。
報表生成器使用結果收集過程生成的ResultList變量中的結果數據(有關更多信息,請參閱本文檔的“結果收集”一節)來生成報表。 本節概述了TestStand中的默認報表生成器。
標記要添加到報表中的數據
報表生成器使用ResultList中收集的結果屬性的屬性標志,來確定這些屬性是否應添加到報表中。利用屬性標志,可配置PropertyObjects的行為,包括如何將其添加到測試報表中。
可以通過以下兩種方式之一來查看和配置PropertyObject的標志:
- 使用序列編輯器:右鍵單擊一個屬性,然后選擇高級(Advanced) » 編輯標志(Edit Flags),查看“編輯標志(Edit Flags)”對話框。 “新標志(New Flags)”字段會顯示當前所有選定標志的總和。
使用“編輯標志(Edit Flags)”對話框來配置PropertyObject標志
- 使用TestStand API:PropertyObject.GetFlags和PropertyObject.SetFlags方法可分別用於獲取標志狀態和設置標志狀態。
每個標志都有一個唯一值,並且屬性當前的標志狀態是所有標志值的總和。 例如,啟用PropFlags_IsLimit(值:0x1000)標志和PropFlags_IncludeInReport(值:0x2000)標志的屬性,標志值為0x3000。有關每個標志的其他信息,請參閱PropertyFlags常量幫助主題。
報表生成器使用以下標志來確定是否應將收集的結果添加到報表中。 有關更多信息,請參閱影響報表的屬性標志。
- PropFlags_IncludeInReport標志表示報表中始終包含該屬性。
- PropFlags_IsLimit標志或PropFlags_IsMeasurementValue標志表示應基於當前的報表選項添加數據。
TestStand報表格式
TestStand提供了許多報表格式,每種格式都各有優缺點。 報表生成器調用特定於格式的序列文件來生成報表文本(例如ReportGen_ATML.seq)。下表顯示了有關每種報表格式的更多信息。
報表格式 | 可讀性 | 文件大小 | 性能 | 解析1 | 自定義 |
---|---|---|---|---|---|
ASCII (.txt) 基本文本報表格式 |
基本 | 很小 | 最快 | 中等 - 需要自定義解析器,但格式信息受限 | 困難 - 需要覆蓋或修改過程模型回調或DLL/td> |
HTML (.html) 富文本報表格式 |
富文本 | 較大 | 中等 | 困難 - 報表數據和格式緊密耦合,需要自定義解析器 | 困難 - 需要覆蓋或修改過程模型序列或DLL |
XML (.xml) 使用XSL樣式表生成富文本的純數據文件格式 |
富文本 | 最大 | 最慢 | 簡單 - 使用標准XML架構,可使用XML API輕松解析 | 中等 - 使用樣式表自定義格式,不改變過程模型 |
ATML (.xml) - 自動測試標記語言 | 富文本 | 中等 | 快速 | 簡單 - 使用標准XML架構,可使用XML API輕松解析 | 中等 - 使用樣式表自定義格式,不改變過程模型 |
1您可以使用報表文件進行自動報表分析,尤其是XML和ATML報表文件,但使用數據庫進行自動分析通常會更加有效。 請參閱數據庫記錄幫助主題,詳細了解數據庫記錄的TestStand功能。
有關為您的應用選擇最佳報表生成策略的更多詳細信息,請參閱《選擇適當的NI TestStand報表生成策略》。
即時生成報表
如果在“報表選項(Report Options)”對話框的“目錄(Contents)”選項卡上啟用“即時報表生成(On-The-Fly Reporting)”選項,過程模型將在執行的同時逐步生成報表,而不必等到UUT測試完成。使用即時報表生成時,可以單擊“執行(Execution)”窗口中的“報表(Report)”窗格,在執行過程中查看報表。由於報表在測試執行時更新,因此報表視圖會在執行測試序列時定期更新,顯示新結果。
通常,對於歷時較久的測試,如果內存使用和數據丟失防護的重要程度高於測試吞吐量,即時報表生成則是更好的選擇。
優點 | 缺點 |
---|---|
|
|
1要防止內存增加,需要采用其他配置。請參閱《解決TestStand中報表生成的內存問題》,詳細了解如何在報表生成過程中防止內存增加。
2此問題在TestStand 2012及更高版本中已得到改善,這些版本提供了相關設置功能,可配置即時報表生成器重新生成報表的頻率。 有關這些設置的更多信息,請參閱高級結果處理設置對話框幫助主題。 默認狀態下,TestStand 2012及更高版本會在收集了500個步驟結果之后或每執行1.5秒之后(以先到者為准)生成並保留即時報表。 在TestStand 2010 SP1和之前的版本中,報表會在每個步驟之后重新生成。
異步報表生成
在TestStand 2012及更高版本中,報表生成器(和其他結果處理插件)可以異步執行,提高測試吞吐量。 要配置此選項,請選擇配置(Configure) » 結果處理(Result Processing),然后選中顯示更多選項(Show More Options)復選框。 新線程列表示每個插件的當前設置。
使用此功能時,執行程序可以立即開始測試下一個UUT,同時為當前的UUT生成報表,如下圖所示。
注意:即時生成報表時,異步報表生成則不可用。
異步結果處理可提高測試吞吐量的速度,因為下個設備的測試可以立即開始
自定義TestStand報表
TestStand報表生成過程的自定義程度很高,您可以根據TestStand應用程序的需求定制生成的報表。 自定義報表時,請使用以下方法:
- 配置報表選項,在不更改代碼的情況下進行自定義。
- 使用內置的TestStand功能,將其他數據記錄到報表中。
- 修改樣式表和/或覆蓋報表生成回調,對報表外觀進行更重要的更改。
使用“報表選項(Report Options)”對話框
借助通過“報表選項(Report Options)”對話框訪問的報表生成選項,可以在不更改代碼的情況下自定義TestStand報表。要訪問TestStand 2012及更高版本中的對話框,請導航到配置(Configure) » 結果處理(Result Processing)以啟動“報表選項(Report Options)”對話框,然后選擇報表生成插件的設置圖標。 在TestStand 2010 SP1及之前的版本中,請選擇配置(Configure) » 報表選項(Report Options)。
您可以通過以下方式使用報表選項對話框來配置報表:
- 更改報表的格式
- 篩選報表以添加特定類型的步驟結果
- 配置報表的外觀
- 啟用即時報表生成
以下各節詳細介紹了每種配置類型。
“報表選項(Report Options)”對話框 –“目錄(Content)”選項卡
報表格式
利用“報表選項(Report Options)”對話框,可選擇報表的格式。 有關可用報表格式的更多信息,請參閱本文檔報表生成部分的“報表格式”一節。 某些報表選項僅適用於特定的報表格式。
ASCII和HTML特定報表選項
ASCII和HTML報表可以通過以下兩種方式之一生成:
- 使用序列(Using sequences):報表由ReportGen_txt.seq或ReportGen_html.seq序列文件中的序列生成。利用此方法,您可以通過修改或覆蓋報表生成序列,更輕松地自定義報表生成器,但執行速度較慢。如果您計划自定義報表生成器,則建議使用此選項。
- 使用DLL (Using a DLL):報表使用modelsupport2.dll生成,性能更快,但自定義更困難。 如果您計划使用需要很少或不需要自定義的默認報表生成器,則建議使用此選項。
XML和ATML特定報表選項
與HTML報表不同,XML和ATML報表不包含任何格式信息。為了在可讀報表中呈現XML格式的原始數據,需要使用XSL樣式表。 該樣式表定義了報表的樣式,並從XML文件中提取數據。 使用樣式表,您可以更改報表的外觀,而無需對XML數據文件進行任何修改。例如,下圖顯示了使用TestStand提供的兩個不同樣式表的同一XML報表示例。
TestStand提供了多種樣式表,可用於以不同方式顯示XML和ATML報表數據,您可以在“報表選項(Report Options)”對話框中具體指定。您還可以創建自定義樣式表以配合使用TestStand報表。 有關樣式表自定義的更多信息和示例,請參閱《自定義TestStand XML和ATML報表的格式和外觀》一文。
使用水平樣式表的“ATML報表”部分
使用報表樣式表的“ATML報表”部分
篩選結果
您可以選擇在“報表選項(Report Options)”對話框中篩選特定步驟結果類型的信息,例如:
- 測試限度值
- 測試測量值
- 代碼模塊執行次數
此外,您還可以使用結果篩選表達式來創建自定義篩選條件。TestStand會針對每個步驟結果對該表達式進行求值,如果表達式求值為True,會在報表中添加該步驟。使用“結果篩選(Result Filtering)”下拉列表輸入控件選擇常用表達式,如排除流控制步驟(如下圖所示)。
注意:如果使用XML格式,或者結合使用ATML格式與TestStand 2010 SP1或更早版本,則結果篩選表達式不可用。 在這些情況下,您可以通過修改報表樣式表來篩選結果。
更改報表外觀
報表選項對話框提供相關設置,用於自定義報表外觀,包括:
- 報表顏色(Report Colors):您可以更改各種屬性相關的顏色(不適用於ASCII報表)。
- 默認數值格式(Default Numeric Format):配置數值數據如何在報表中顯示。
- 數組數據格式(Array Data Format):選擇是在報表中以表格、圖表形式添加數組,還是將其完全省略。
注意:TestStand報表使用ActiveX控件將數組數據生成圖表。 如果在查看報表時此控件不可用,數據仍將以表格形式顯示。
配置報表文件路徑名
在“報表選項(Report Options)”對話框的報表文件路徑名(Report File Pathname)選項卡上,您可以配置報表文件的名稱及其存儲路徑。 使用“文件/目錄(File/Directory)”選項來選擇存儲報表的位置,然后根據您選擇的選項使用“UUT報表(UUT Report)”字段來預覽報表文件名。
通過選擇“文件/目錄選項(File/Directory Options)”控件中的按表達式指定報表文件路徑(Specify Report File Path by Expression)選項,進一步控制報表文件的名稱和路徑。 可以使用此設置來創建一個表達式,TestStand會對表達式進行求值,從而確定報表的存儲位置。此表達式可以包括預定義宏,可在“報表文件路徑(Report File Path)”控件的“菜單(Menu)”中訪問。
注意:在配置報表表達式時,請使用“已評估報表文件路徑(Evaluated Report File Path)”字段和預覽圖像來查看當前表達式的行為。
根據UUT結果對報表文件進行排序
您可以使用報表文件路徑表達式中的UUTStatus宏,為成功報表和失敗報表創建單獨的文件位置。 例如,您可以在自己的文件路徑中使用此宏,為成功報表和失敗報表創建不同的位置。當使用此宏時,TestStand會在測試執行完成后,重新對報表文件路徑表達式求值,因為在此之前,UUT狀態是未知的。
根據UUT結果配置其他報表文件路徑名
對於使用批處理模型的測試,您可以進一步配置批處理和批處理中各個UUT的報表文件路徑行為。 要訪問這些設置,請在“模型類型(Type of Model)”字段中選擇批處理。 例如,您可以使用每個批處理設置的新UUT報表(New UUT Report)為每個批處理創建單獨的報表文件。 有關所有可用設置的更多信息,請參閱“報表選項(Report Options)”對話框幫助主題。
有關向報表添加自定義數據的功能
在許多情況下,除TestStand默認記錄的結果之外,測試應用程序還需要您在報表中記錄其他數據。為了滿足此需求,TestStand提供了多種內置功能,可輕松將自定義數據記錄到報表中:
- 參數記錄
- 其他結果
- ReportText屬性
- 配置自定義步驟類型的報表數據
以下各節詳細介紹了這些功能。
參數記錄
配置代碼模塊參數時,選擇模塊(Module)選項卡中的記錄(Log)框,可以輕松記錄測試步驟的參數數據,如下所示。啟用此復選框將配置選定的參數,使其自動顯示在“報表(Reports)”或“數據庫記錄(Database Logs)”中,無需進一步配置。
代碼模塊 - 啟用記錄復選框
其他結果
您可以使用“步驟設置(Step Settings)”窗格中“屬性(Properties)”選項卡的“其他結果(Additional Results)”面板,添加任意步驟結果的其他自定義數據。
配置其他結果
TestStand提供了一些預配置的其他結果來記錄通用屬性,如步驟注釋和需求信息。 要訪問這些預配置的結果,請選擇從列表添加結果(Add Result From List)按鈕,然后從列表中選擇一個項目。您還可以為每個其他結果條目指定條件表達式。 僅當表達式求值為True時,才會記錄結果。
有關其他結果設置的更多信息,請參閱TestStand幫助中的“其他結果編輯(Additional Results Edit)”選項卡主題。
使用Result.ReportText
Result.ReportText是“結果(Result)”容器中的附加字符串元素,用於存儲步驟的自定義信息。如果字符串不為空,報表生成器會將ReportText字符串作為字段添加到報表中。ReportText字段支持所有報表格式(除ASCII以外)的HTML標簽,因此您可以使用此字段添加富文本元素,如相關的圖像或超鏈接。
下圖顯示了在ReportText屬性中使用HTML將圖像嵌入步驟結果中的示例。
在Result.ReportText中顯示圖像的報表
向報表中添加自定義步驟類型屬性
使用TestStand,您可以創建自己的自定義步驟類型以實現特定功能。在這種情況下,通常需要將自定義步驟類型數據記錄到報表中。
注意:如果您不熟悉TestStand中的自定義步驟類型,請在閱讀本節之前參閱《自定義步驟類型開發的最佳實踐》一文,以獲得更多信息。
若要創建報表中即將顯示的自定義步驟屬性,請按照下列步驟操作:
- 在“類型(Types)”窗格中,將自定義屬性添加到該步驟的“結果(Result)”容器中。 執行此操作,可確保通過結果收集過程向ResultList中添加該屬性。
- 啟用屬性的IncludeInReport標志,以便報表生成器將數據添加到報表中:
- 右鍵單擊該屬性,然后選擇屬性(Properties)...
- 單擊“高級(Advanced)”按鈕,然后選擇標志(Flags)...
- 選中IncludeInReport選項,然后單擊兩個對話框的確定(OK)
覆蓋報表回調
此過程模型提供了許多回調,您可以覆蓋這些回調以更改特定客戶端序列文件的模型功能。 該機制對於自定義報表生成器也很有用。 本節介紹了以下常見的自定義方法:
- 以編程方式設置報表選項
- 向報表中添加其他UUT和測試站數據
- 直接自定義報表生成器
注意:如果您不熟悉過程模型回調,請在繼續學習本節之前參閱使用回調序列修改過程模型幫助主題。
以編程方式設置報表選項
除了使用“報表選項(Report Options)”對話框外,您還可以通過覆蓋測試序列中的ReportOptions回調,以編程方式設置報表選項。 要覆蓋序列文件中的回調,請按照下列步驟操作:
- 在序列窗格中右鍵單擊,然后選擇序列文件回調(Sequence File Callbacks)...
- 選擇ReportOptions回調,然后單擊添加(Add)。
- 單擊確定(OK)關閉對話框。 請注意,新的ReportOptions序列已創建,如下所示。
執行序列時,過程模型將在加載報表選項對話框中設置的當前報表選項后立即調用此回調序列。 Parameters.ReportOptions變量中包含了當前報表選項。 您可以修改這些屬性的值以更改當前執行的報表選項。 這些選項不會影響“報表選項(Report Options)”對話框中的設置或任何其他執行的設置。例如,要為序列文件啟用即時報表生成,您可以使用以下表達式創建一個聲明步驟:
Parameters.ReportOptions.UseOnTheFlyReporting =True
將其他UUT和測試站數據記錄到報表頁眉中(TestStand 2013及更高版本)
測試應用程序可能需要您提供有關UUT的其他識別信息,如制造商所在地。 有關UUT和測試站的數據由過程模型存儲在Parameters.UUT和Parameters.ModelData.StationInfo變量中。 您創建的大多數模型回調都會將這些屬性作為參數包含在內,從而允許您在回調中訪問此數據。在TestStand 2013及更高版本中,UUT和StationInfo屬性包含非結構化容器AdditionalData子屬性。 您可以在運行時向此屬性中添加數據,而無需對UUT和StationInfo數據類型進行任何更改。
要使用AdditionalData容器以編程方式向頁眉添加自定義UUT數據,請按照下列步驟操作:
- 覆蓋客戶端序列文件中的PreUUT回調。 請注意,新的回調序列包含Parameters.UUT屬性
- 添加一個聲明步驟,在Parameters.UUT.AdditionalData容器中動態添加屬性。例如,此表達式創建兩個字符串數據子屬性:
Parameters.UUT.AdditionalData.SetValString("Manufacturer.Name",1,"National Instruments"),
Parameters.UUT.AdditionalData.SetValString("Manufacturer.Location",1,"Debrecen, Hungary"),
注意:1使用SetValString方法,因為PropertyOption會創建一個屬性(如果該屬性不存在)
- 添加一個聲明步驟,為AdditionalData屬性設置IncludeInReport標志,以便將所有子屬性添加到報表中:
Parameters.UUT.AdditionalData.SetFlags("",0,PropFlags_IncludeInReport)
以下報表在AdditionalData容器中添加了自定義數據。 添加自定義測試站數據的過程類似,但是使用的是Parameters.ModelData.StationInfo屬性,而不是Parameters.UUT。
使用UUT.AdditionalData容器向報表頁眉添加制造商信息
注意:此外,您可以在編輯時手動向過程模型入口點的Locals.UUT或Locals.ModelData.StationInfo容器添加數據和啟用IncludeInReport標志,為所有客戶端序列文件添加UUT或測試站數據。
直接自定義報表生成器功能(HTML和ASCII格式)
報表生成器定義了許多可以在客戶端序列文件中覆蓋的回調。這些回調中的每一個都會在相應的報表文本生成后執行,並且您可以修改報表生成器的默認輸出。 僅當上述方法均不可行時,才應使用這些回調來添加自定義數據。
僅當在“報表選項(Report Option)”對話框的“目錄(Contents)”選項卡上啟用“選擇用於生成報表正文的報表生成器(Select a Report Generator for Producing the Report Body)”選項的“序列(Sequence)”選項時,才執行這些回調。 此選項可用於HTML和ASCII報表。
- ModifyReportHeader: 報表生成器結果處理組件從其Post序列中調用此回調,對其進行覆蓋,以修改報表頁眉。 Parameters.ReportHeader屬性包含默認的報表頁眉。
- ModifyReportEntry: 報表生成器結果處理組件從其Post序列中為ResultList中的每個結果調用此回調,對其進行覆蓋,以修改為每個結果生成的報表部分。Parameters.ReportEntry屬性包含為當前ResultList條目生成的報表數據。
- ModifyReportFooter:報表生成器結果處理組件從其Post序列中調用此回調,對其進行覆蓋,以修改報表頁腳。Parameters.ReportFooter屬性包含默認的報表頁眉。
配置報表的外觀
自定義報表外觀的方法與報表格式密切相關。 對於ASCII和HTML報表,外觀信息和報表數據緊密結合。 因此,更改報表的外觀需要直接修改報表生成器代碼,這需要對報表生成器有大概的了解,本文檔對這部分內容不做介紹。 有關實施報表生成器的更多信息,請參閱《報表生成說明》一文。
如本文檔“報表選項”部分所述,XML和ATML報表使用樣式表通過原始報表數據生成可讀報表。 您可以通過編輯樣式表來自定義這些報表的外觀,而無需修改報表生成器本身。 有關樣式表自定義的更多信息和示例,請參閱《自定義TestStand XML和ATML報表的格式和外觀》一文。
結論
在TestStand中自定義報表是一項常見的任務,TestStand提供了許多功能來自定義報表的內容、功能和樣式。請參見以下流程圖,幫助您確定如何實施自定義報表。
“選擇正確的技術以自定義報表”的流程圖 “選擇正確的技術以自定義報表”的流程圖