發布時間:2022-04-09所屬分類:計算機職稱論文瀏覽:1次
摘 要: 摘要:針對煤質管理系統不斷變化的業務邏輯、軟件開發成本過高并難以維護的問題,提出了一種基于模型驅動架構的模型測試方法。通過建立測試模型,在加入動作規約語言的基礎上執行測試用例和反饋測試結果,發現模型缺陷并及時重構,從而提高系統質量。結合煤質管理系統
摘要:針對煤質管理系統不斷變化的業務邏輯、軟件開發成本過高并難以維護的問題,提出了一種基于模型驅動架構的模型測試方法。通過建立測試模型,在加入動作規約語言的基礎上執行測試用例和反饋測試結果,發現模型缺陷并及時重構,從而提高系統質量。結合煤質管理系統回采和掘進工作面繪制進行建模和測試,驗證了該方法的可行性。
關鍵詞:煤質管理系統;模型測試;模型驅動架構;動作規約語言
0 引言
在煤炭行業中,煤炭品質(簡稱煤質)是影響企業效益的關鍵因素之一,煤質管理貫穿于煤炭的生產、運輸、銷售等各個環節。目前,煤質管理系統的建設取得了很 大 進 展,但 仍 存 在 一 些 不 足:① 煤 質管理系統在規模和復雜度上不斷增加,不能很好地與業務關聯;② 煤質模型中潛藏的業務邏輯錯誤不能及早被煤質領域專家發現;③ 不斷變化的業務邏輯導致了系統低層次的重復編碼;④ 錯誤的業務邏輯決策下進行煤質軟件項目,成本過高難于修復。
針對上 述 問 題,本文提出基于模型驅動架構(ModelDrivenArchitecture,MDA)[1]的 模型 測 試方法,為煤質管理系統的開發和測試提供了一個新方向。在 MDA 中,模型是所構建系統在功能、行為和結構的形式化表示[2]; MDA 的模型測試在產生任何代碼之前,對需求規約進行充分的演練,即在開 發 早 期 用 UML(Unified ModelLanguage,統一建模語言)圖結合業務邏輯的形式建立測試模型、執行測試用例并且反饋測試結果[3]。將煤質管理系統開發過程中基于模型的測試集成到總體的測試進程中,提供跨越整個開發生命周期的動態測試,在測試的保護下,不斷重構模型,以消除重復設計,優化設計結構,提高模型的重用性,更好地指明設計模型上的缺陷以及需求實施失誤,從而提高煤質管理系統質量。
1 大型煤炭企業煤質管理系統建模
無論煤質管理系統是采用 WebService,EJB或其他構件技術 和 平 臺,基 于 MDA 的 軟件 開 發 首 先要 建 立 平 臺 無 關 模 型 (Platform IndependentModel,PIM)用 于 描 述 軟 件 系 統 的 業 務 功 能 和 邏輯,并用 UML等建模語言來表示 PIM。建立 PIM的目的是為了理解問題域,詳述能夠滿足一組需求的系統行為。它獲取和表達了正在建立的所有煤質管理系統的業務需求,并且包含了對系統的所有規約,但中立于任何實現(平臺)。作為測試對象,煤質管理系統 PIM 主要包含域模型圖、用例圖、順序圖、類圖、協作圖、狀態圖等,建立步驟如下:
(1)域模 型 圖 的 建 立。在 域 模 型 圖 中,將 系 統按主題劃分為不同的域,每一個域表示系統中一個獨立的主題事務。煤質管理系統層次架構如圖1所示,在服務層將煤質管理系統劃分為煤質數據管理、煤質計劃下達、煤層信息展示、煤質系統后臺管理等域。以上域屬于業務邏輯部分的內容,無需依賴具體的平臺或者實現。對域的劃分將測試控制到具體的模型空間,增加了業務之間的內聚性。域之間存在依賴關系,對 域 間 的 交 互 分 析 可 以 借 助 UML 順序圖來完成。
(2)類圖及協作圖的建立。類圖組成了域的靜態視圖,是用來顯示煤質管理系統中的類、接口及它們之間的靜態結構和關系的一種靜態模型。協作圖描述了特定行為的參與對象的靜態結構,以及參與對象之間的動態交互。以煤質預測功能為例,煤質預測基礎數據包括:① 采制樣員對工作面煤質煤樣進行采取、制備,通過化驗分析生成的煤樣檢測基礎數據;② 煤質科根據生產計劃制定年度、月 度 以 及月度分解的計劃數據;③ 運銷中心根據各質檢站對商品煤銷售數據進行統計,形成各月商品煤煤質數據等。
(3)狀態圖的建立。狀態圖是描述一個實體基于事件反應的動態行為,顯示了該實體如何根據當前所處狀態對不同的時間做出反應。狀態圖由狀態組成,各狀態由轉移鏈接在一起。狀態是對象執行某項活動或等待某個事件時的條件,轉移是2個狀態之間的關系,它由某個事件觸發,然后執行特定的操作或評估并導致特定的結束狀態。工作面(回采工作面和掘進工作面)繪制狀態圖如圖2所示。首先根據工作面要素,按畫圖比例來繪制工作面示意圖。根據毛煤月度分解計劃數據和工作面要素,計算出每月的開采位置,并按顏色來區分已采和未采部分。當用戶點擊某個采樣點位置時,以資料卡的形式彈出該采樣點的煤質柱狀和相關信息。然后根據煤層煤樣采樣點信息,計算出每個采樣點在該工作面上的對應位置,繪制出采樣點。根據煤層采樣點的煤質數據繪制出沿通風巷和運輸巷煤質折線趨勢圖。最后根據煤質預測的開采計劃和煤層采樣點的各分層數據,繪制出工作面,若數據獲取錯誤則繪制失敗。
2 模型測試基本框架
盡管 UML規 范在 MDA 過 程中 是 必 要 的,但卻沒有包含可執行語義,不足以進行可執行建模,因此需要擴展更多的機制來支持精確建模和分析模型。動作規約語言(ActionSpecificationLanguage,ASL)的出現彌補了這一缺陷,它是一種符合 UML動作語義標準的語言,提供了操縱模型元素的能力,為部分 UML模型增 加 了 可 執 行 行 為 的 定 義,并 且又不 偏 向 于 任 何 實 現 技 術。ASL 語 句在 MDA 過程中總是與常 規 UML 模 型元 素 關 聯,例 如 與 類 的方法或狀態圖中信號發送關聯。各抽象層之間的行為是相互映射的,每一句 PIM 中的 ASL 語句都 可以在平臺相關模型(PlatformSpecificModel,PSM)和代碼層中找到相應的實現[4]。
基于 MDA 的模型測試框架通過對測試過程的抽象化,分離測試模型和測試執行,模型測試流程如圖3所示。測試設計人員側重于對被測試系統需求和業務層面的理解,從而通過正向或逆向手段建立針對某方面特征的測試模型,并重用有針對性的測試執行手段。測試模型是基于 MDA 的模型測試的核心概念,它在測試的不同階段表現為不同視圖。
(1)需求模型:需求的形式化就是對需求的表述從自然語言轉換成為 UML的形式。在進行功能測試時,輸入需求,對需求進行約束和形式化,以便將需求模型轉 換 為 測 試 模 型,主 要 采 用 UML 的 用例圖和活動圖來表述。
(2)測試模型:被測系統需求模型中加入 ASL,完成對模型中動態屬性(包括動作以及方法的行為)的描述。描述后的模型具有了可執行語義,形成測試模型。
(3)測試用例集:ASL提供了操縱模型的能力,可以根據業務邏輯和功能點建立測試用例集。
(4)測試場景:在測試執行之前,通過相應 ASL語句描述測試的執行環境以及執行流程,將測試用例按次序組合成互為因果的測試流程。在測試場景中更多的是體現需求對流程的描述,對需求中各個業務流程、業務功能的測試[5]。通過該方法,能夠覆蓋到應用系統的各個流程和不同的測試數據分支。
3 建模過程中的測試
加入 ASL,煤質模型具有可執行能力。完成對測試環境和測試用例構建,MDA 開 發過 程 利 用 模型的可執行能力來測試煤質管理系統的業務需求是否準確,模型中是否存在潛在問題。在煤質業務邏輯中,根據煤質基礎信息以及采樣員提供的煤層中煤、矸主要元素的位置、高度數值,繪制工作面煤質信息 圖 件,其中繪制工作面展開圖包括 3 部 分: ① 沿通風巷和運輸巷煤質變化折線趨勢圖,主要反映灰 分、硫 分、發熱量等煤質指標的變化情況。 ② 通風巷和運輸巷煤層展開圖,主要反映煤層夾矸的分布情況。③ 開采進度示意圖和煤層煤質柱狀圖。工作面展開圖繪制所涉及的類圖如圖4所示。
3.1 測試初始化環境的構建
MDA 不涉及 具 體 技 術,也 不 依 賴 于 特 定 平 臺信息,因此不能將數據庫引入作為測試一部分,轉而由測試初始化塊負責對各類測試數據和對象賦值。測試初始化環境控制著測試初始狀態以及所有測試預期,它是否模擬了真實環境將決定測試結果的真實性和正確性。完整的工作面展開圖包含以下幾種類型的對象:掘進工作面要素、回采工作面要素、毛煤月度分解 計 劃、煤 層 煤 樣、回 采 煤 樣 以 及 煤 質 預測。其中2種要素是必須的,而煤質預測數據由系統自動生成。上述對象生成順序沒有嚴格要求,對象生成后可自動繪制工作面展開圖。
想了解更多煤質方向的文獻還可以查看:煤質管理論文文獻3篇
對象和數據的創建方式有2種:① 在類的靜態方法中初始化,將對象的初始化放入方法體內進行,數據初值以方法參數的方式傳入。② 直 接 給 對 象屬性賦值,過程更加直觀,但是缺少初始化過程細粒度的控制。
上述測試用例中涉及到的公式為公式1:煤層凈 煤 量=分 煤 層 厚 度×單 循 環 進尺×工作面傾斜長度×比重;公式2:分煤層矸量=(各架對應分煤層厚度總和×分煤層長度)×單循環進尺比重。在測試 用 例 中,通 過find-only操 作,確保 模 型中只 提 供 了 唯 一 的 有 效 句 柄,判 斷 actual不 為UNDEFINED則 向 類 對 應 狀 態 圖 發 送 信 號 PT1:Request_Data(),激 發狀 態 跳 轉 并 執 行 入 口 動 作。入口動作中通過關聯漫游導航對象關系,驗證對象屬性值并進行業務的處理。若測試用例執行過程中報錯或者被測系統的行為與模型期望不一致,針對錯誤類型修改模型或者調整測試用例,直到模型反映出系統的預期行為。
4 結語
模型作為 MDA軟件開發過程中的核心部分,包含了所有系統需求規約,對模型的測試研究,可以從早期針對業務需求進行驗證,避免將重大缺陷遺留在系統中,對后期的系統造成重大隱患。ASL語言對模型動作語義部分進行了完善的補充,它操縱模型元素的能力,可以有助于完成對基于模型測試中初始化環境的創建,并且調用各個模型元素,組織測試用例,模擬出真實場景來精確地完成對模型的測試。——論文作者:張小艷, 楊陽, 文輝
參考文獻:
[1] RAISTRICKC,FRANCISP,WRIGHTJ,etal.MDA與可執行 UML[M].趙建華,張天,譯.北京:機械工業出版社,2006.
[2] 劉靜,何積豐,繆 淮 扣.模型驅動架構中模型構造與集成策略[J].軟件學報,2006,17(6):1411-1422.
[3] 劉揚,李亞芬,王 普.模型驅動的測試用例自動生成框架[J].計算機工程,2011,37(1):39-40.
[4] 張浩華,趙海,趙 明.大型水電仿真系統的模型驅動架構設計[J].計算機工程與應用,2009,45(4):72-75.
[5] 王瑞雪,張濤.UML模型驅動的劃分測試用例生成方法研究[J].計算機應用研究,2012,29(9):3334-3337.
SCISSCIAHCI