← 所有文章

HMI畫面與報表的相依性矩陣

· 站長

用畫面、資料源、報表、角色與外部檔建立相依矩陣,推導欄位變更後的回歸測試。

一 先列相依對象

畫面與報表相依性矩陣的用途,是在改欄位、資料源或角色後知道哪些視圖要重測。列先固定範圍:畫面、資料集、報表、角色、外部檔和版本。每個格子記Read、Write、Filter、Display或None,不只寫一個模糊的『有關』。

四個儀表板共用History_Temp與History_Flow兩個資料集;Dashboard-A讀溫度,B讀流量,C同讀兩者,D只讀聚合報表。矩陣先列出這些事實,再談變更。

來源、畫面和報表各自有版本欄,因同名資源在不同版本可能欄位不同。

依賴類型 例子 驗證
Read 讀History_Temp 欄位值
Filter 時間與設備 查詢條件
Display 單位與格式 畫面截圖

矩陣欄位可用唯一資源ID而不是顯示名稱,因同名資料集在不同專案版本可能指向不同來源。顯示名稱變更不應破壞歷史追蹤。

矩陣的資料源欄應包含連線名稱、查詢版本和時間區間;同名資料庫連線不代表同一資料。

依賴矩陣可另列失效模式,例如資料源斷線、欄位缺失、品質Bad、權限拒絕與外部檔缺失;每種模式用不同預期結果。

資料源欄位若由轉換器重新命名,要把轉換設定納入矩陣,而不是只列資料庫欄位。

每次矩陣更新加上責任人與日期,避免舊矩陣被誤用於新版專案。

二 建立畫面相依矩陣

矩陣可由工程軟體交叉參照、標籤引用和報表資料源設定建立,但工具輸出的結果仍需人工確認動態查詢、字串組合和外部檔案。對每個依賴加owner與驗證日期。

畫面 溫度資料集 流量資料集 中間資源
Dashboard-A Read None 無間接報表依賴
Dashboard-B None Read
Dashboard-C Read Read 同時依賴兩集
Dashboard-D 間接Read None DailyReport→Temp聚合

案例把History_Temp的欄位temp_avg改名為temperature_mean。矩陣指出A、C、DailyReport及間接讀取報表的D受影響,B不受影響;但C還有一個動態欄位別名未被靜態搜尋發現,因此要人工開畫面和查詢設定。

資料源停用、角色失權和外部圖檔失效是不同故障,矩陣用不同類型標籤,測試才能選擇正確步驟。

報表排程是獨立執行路徑,除了開啟畫面外還要手動觸發一次排程或預覽,確認資料源、權限和輸出格式都成功。

畫面共用資料集時,先測一個固定日期的快照,再測即時更新,避免即時波動干擾欄位變更判斷。

每個報表測試同時記錄查詢參數和輸出檔雜湊,避免空白報表被誤判成功。

若矩陣發現同一資料集被多個報表共用,先安排低風險測試,再處理排程和外部匯出。任何無法確認的動態依賴都列為需人工檢查,不能以搜尋不到引用判定沒有依賴。

報表輸出欄位變更要檢查下游PDF、CSV與郵件模板,不能只驗資料查詢成功。

矩陣案例的D不可標成完全無關:D本身只顯示DailyReport,但DailyReport依賴History_Temp的溫度聚合,因此D對溫度是間接Read。變更temperature_mean時,A、C、DailyReport和D都列入回歸;B只測流量。這個間接關係要在矩陣另欄標記,避免只搜尋畫面直接綁定而漏掉排程報表。

三 變更影響分析

變更前先複製矩陣快照,列出預計移除與新增欄位。改名後先驗證資料集,再依受影響畫面順序測試空值、權限和時間範圍。不要只開首頁,因報表常在排程時才查詢。

若角色Operator失去History_Flow讀權,B應顯示明確權限錯誤,不能默默顯示零。矩陣把角色與資料源交叉列出,回歸案例就會包含登入不同角色。

外部檔案路徑變更要追到圖片或報表模板,不要把所有失效都歸類成標籤問題。

對每個Read依賴記錄資料品質和空值策略。欄位存在但全為null,與欄位不存在是兩種故障,矩陣不可合併。

報表的空結果與查詢失敗要分開,前者可能是合法無資料,後者應留下錯誤和重試狀態。

矩陣修訂後通知所有owner,並把未測項保留在交付清單。

矩陣資料也要標記最後驗證時間,超過版本有效期就安排重新檢查,尤其是共用資料集和排程報表。

角色矩陣要包含登入後的實際權限結果,設定檔文字本身不足以證明運行時權限。

四 回歸測試設計

小型回歸套件包括四個儀表板、兩個角色、兩個資料集、每日報表和一個外部logo。每次驗證記登入角色、時間範圍、資料列數、畫面狀態和錯誤訊息。

測試改名後,A/C數值仍出現且單位正確,D報表成功生成;B在無權限角色下顯示拒絕。若只有Developer角色通過,驗收不算完成。

矩陣不是自動保證完整性;動態查詢和腳本仍需檢閱。平台版本更新後重新輸出交叉參照,保留前後差異。

版本差異可用before/after快照比較,將新增、刪除和改名分開標示。改名通常要同時檢查查詢、轉換和報表欄位。

矩陣審查會議逐項關閉差異,未完成項保留owner和期限,不以口頭確認替代。

另做null與缺欄兩組測試。測試資料溫度為20、null、24°C,明定只計兩個有效值,預期平均22、有效數2、缺值數1;A與C顯示該組資料,DailyReport產生22,D讀到同一報表版。接著完全移除temperature_mean欄,預期明確契約錯誤,不得仍顯示快取22並當作最新結果。

外部檔案改名後搜尋不到依賴時,以版本控制差異和運行時錯誤補足靜態工具限制。

五 驗收與維護

驗收要求每個依賴格都有證據連結:畫面截圖、查詢結果或設定版本。

問:矩陣能取代測試嗎?答:不能,只能決定測試範圍。

問:共用資料集改名先測誰?答:先測資料集,再測所有Read依賴者。

問:權限失敗應顯示零嗎?答:不應,應顯示可辨識的無權限或品質狀態。

問:動態欄位怎麼找?答:結合工具交叉參照、設定閱讀和運行時日誌。

變更 受影響 回歸
欄位改名 A/C/D/報表 值與單位
角色失權 B 明確拒絕
圖檔移動 A-D 路徑解析

矩陣維護責任分給畫面、資料源和報表owner,交付時由各owner簽署受影響案例,而不是由一人猜測全部依賴。

測試紀錄中的數值要帶時間、設備和品質,否則日後無法分辨快照與現值。

本篇矩陣是人工維護的工程文件,不宣稱平台能自動找全依賴。以Ignition 8.1為例,Perspective Query Binding使用Named Query,需追其路徑、參數和轉換。畫面參數改動可能觸發不同查詢,Cache & Share也可能讓多個會話共用結果;檢查版本是否支援該選項,測試用固定資料避免快取掩蓋漏改。

矩陣的每一格都應能連到設定、查詢或測試證據;沒有證據的格子標Unknown,不能填成Pass。版本更新後重跑受影響案例。

變更報告列出影響畫面、報表、角色與外部檔,並由owner確認。

參考:Ignition 8.1 Query Bindings:Named Query、參數、轉換與快取。

參考:Ignition 8.1 Project Export and Import:保存專案資源版本。

延伸閱讀


使用 PLC 工具箱 →