關鍵詞:嵌入式測試CodeTest工具DCS系統
隨著DCS系統的發展,迫切需要一種工具能夠在軟件開發的集成階段、系統階段等對DCS系統的軟件進行實時在線的測試與分析,以保證系統的性能和可靠性。
DCS系統長期運行的穩定性、實時性等特點,使得廠家對其軟件質量有著非?量痰囊,而DCS系統的分布式特點,又使得其集成測試、系統級測試非常困難。本文介紹一種獨特的DCS分布式系統的測試方案,對分布在一個網絡中多臺電腦上的各個系統模塊(每臺電腦運行多個系統模塊)同時測試,監視其覆蓋率、內存泄漏、運行性能等重要測試指標。測試工具選用美國Metrowerks公司的CodeTest嵌入式測試工具。
1 DCS系統概述
DCS系統一般是物理上分布的控制系統,有兩種基本結構:總線網結構和星型網結構。有些DCS客戶由于生產規模小,可能對系統要求不高,把服務器、工程師站、操作員站集于一臺機器上即可,但就其控制站和上機系統而言,整個系統在物理上、邏輯上仍然是分布式的。以總線結構為例,系統結構如圖l所示。
2 CodeTest嵌入式測試工具概述
CodeTest具有強大的測試分析功能。
由于CodeTest對軟件打點技術和從總線捕獲數據進行了改善和提升,正是這種原理上的優勢,使得CodeTest具有強大的性能分析、內存分析、高級覆蓋率分析和代碼跟蹤功能。
CodeTest工具主要有三個版本:一個是純硬件版,由于它不能滿足用戶的需求,早已被淘汰;另外兩個是純軟件版和硬件輔助軟件版,其中以硬件輔助軟件版最好。
純軟件測試工具的測試原理有兩個必需的任務——插樁函數和預處理任務。由于插入插樁函數和預處理任務的存在,使系統的代碼增大,對系統的運行效率有一定的影響。但是,隨著CPU速度和存儲技術不斷提高,純軟件版方案仍然可行。
3 DCS系統嵌入式測試方案設計
由于DCS系統比較復雜,服務器上有15個lib文件、20個exe任務,操作員站有4個dll工程和6個exe任務,這些模塊在管理網層構成一個實時運行的整體。測試一個程序或者一個測試用例,必將影響其他任務,例如:在操作員站上寫一個值到I/0控制站,改變一個閥門的開關狀態,這個值會被傳到實時數據庫,完成操作歷史記錄,然后送到系統網驅動,由與I/0站通信的gateway.exe和GatewayMonitor模塊發到現場控制站。工程師站主要用于離線組態,其dll工程和exe工程一共有十幾個,在進行工程組態時,會出現多個模塊同時運行。在下裝時,下裝任務模塊和服務器操作員站程序會同時運行(至少與操作員站、服務器的守護程序同時運行),此時,要想把覆蓋率數據收集齊全,在以前是非常困難的。因為測試者的一個動作將會引起幾臺機器上的多個模塊的代碼執行。使用CodeTest測試工具,運用其設計巧妙的測試方案,終于解決了這個難題。
3.1純軟件版CodoTest測試方法
用純軟件版CodeTest工具測試時,先用CodeTest進行插樁(打點),生成exe或者其他可執行文件,然后在裝載測試程序的機器A上運行CodeTest的ctserver.exe,并設定其收集測試數據的端口。
接著在機器B上(A和B也可以是同一臺機器)運行CodeTestManager(ctmgr),創建workspace,指定插樁文件、內存檢查目標文件、端口和etserver所在機器的IP地址,連接ctserver并執行。最后在A上運行需要測試的程序C.exe,這樣C.exe的執行情況、性能、覆蓋率、內存是否泄漏等數據都被采集在CodeTestManager的SoftwareProbe中。CodeTestManager提供了友好的窗口界面,可以查看每個函數的運行覆蓋率,也可以查看每個文件的覆蓋率,還可以對測試結果進行保存、導出、合并等。
3.2一個小的測試方案的分析與設計圖l已經給出了DCS系統的體系結構.這里將結合CodeTest設計測試方案。
為了便于理解,先舉個簡單的設計實例:設一個小的軟件系統在A機和B機上運行。A機上運行著兩個進程(或任務模塊):A1.exe和A2.exe,A1.exe使用ALIB1.1ib和ALIB2.1ib庫文件,A2.exe使用A.dll動態鏈接庫;B.exe運行在B機上,B.exe上的操作將引起A機上的兩個進程A1和A2。
現在對A1、A2和B三個任務模塊組成的系統進行系統測試,監視其覆蓋率、內存泄漏、運行性能等重要測試指標。
測試方案如圖2,設C機(C機也可以是A機或者B機)用于收集測試數據。
對于這個簡單的系統,其測試系統已經不算簡單,而對于總共有60多個工程,至少有20個以上的進程同時運行的DCS綜合自動化控制系統,其測試方案圖就更復雜了,要考慮的問題就更多了。
文章來源于領測軟件測試網 http://www.kjueaiud.com/