張冉 高雪蓮 馮曦 馮文楠 胡毅 唐曉柯



摘要:實時數據庫是DCS系統的關鍵組成部分,實時數據庫內核相當于一個數據處理中心,起到數據交換區的作用。實時數據庫內核維護系統調用時產生的動態數據和系統所需的各種內部信息,保證實時數據的完整性、實時性以及時間一致性;集成測試是測試過程中的一個重要環節,集成測試方法主要分為基于調用圖的集成測試、基于分解的集成測試以及基于類間繼承關系的集成測試,通過分析實時數據庫內核的特性,最終選用基于調用圖的集成測試和基于類間繼承關系集成測試相結合的方式完成數據庫內核的集成測試,通過實際應用證明了采用組合的測試方法強化了兩種測試方法的,可以縮短測試周期,降低測試難度,提高測試準確度,該方法在其他項目中具有實際指導意義。
關鍵詞:實時數據庫;集成測試;DCS
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)29-0005-03
1概述
在電廠DCS系統中實時數據庫是數據處理和數據管理的核心,實時數據庫內核負責處理從控制器采集的數據、發送數據到組態軟件及實現數據庫軟件所有功能,數據庫內核對數據庫軟件的可用性有重要的影響。
集成測試作為測試活動的重要環節之一,是保證軟件的質量必不可少的一步。為了提高數據庫的集成測試的測試效率,不在采用原來單一的集成測試方法,而是選用多種測試方法相結合的形式,有效縮短了測試周期,將電廠DCS實時數據庫軟件用于實例研究,驗證所提出方法的有效性。
2集成測試方法
常用的集成測試方法主要有基于調用圖的集成測試、基于分解的集成測試以及基于類間繼承關系的集成測試,下面具體介紹這三種集成測試方法。
2.1基于調用圖的集成測試
根據模塊或者函數之間的調用關系,采用調用圖的方式可以使測試更趨向于結構性,同時免除了樁/驅動器的開發工作量。基于調用圖的集成測試包括成對集成測試和相鄰集成測試。成對集成測試是為了免除樁驅動器的開發,對調用圖中的每條邊進行一個集成測試;相鄰集成測試是將一個節點的所有鄰居集成在一起,包括所有直接前驅節點和直接后繼節點。
基于調用圖的集成測試的優點是可以降低集成測試的會話數量,所需測試時間短;其缺點是調用分析的過程比較復雜,對于出現問題的部分很難定位。該方法適合存在多調用的模塊或軟件。
2.2基于分解的集成測試
基于分解的集成測試是基于軟件功能分解的測試,包括非漸增式集成測試和漸增式集成測試兩種方法。非漸增式集成測試是采取一步到位的方式來構造函數,按照程序功能結構圖將各個模塊連接起來作為一個整體進行測試;漸增式集成測試是從一個模塊開始,邊組裝邊測試,同時又分為自頂向下集成、自底向上集成和混合集成。
基于分解的集成測試優點是測試結構清晰,能夠方便測試人員定位異常;其缺點是測試過程中需要開發樁或驅動,工作量較大并增加了測試的難度。該方法適合系統結構層次清晰具有交互復雜的模塊或軟件。
2.3基于類間繼承關系的集成測試
基于類間繼承關系的測試首先通過測試獨立類(即非系統中已經測試正確的祖先類的子類)來開始構造系統,在完成獨立類測試后,下一層繼承獨立類的類(依賴類)繼續被測試,這個依賴類層次的測試序列一直持續到構造完整的系統。
基于類間繼承關系的集成測試的優點是測試分析過程簡單,測試全面;其缺點是被測試集合較多,測試周期長,與單元測試有重復。該方法適用于使用面向對象編成語言編寫的程序軟件。
3具體應用
上述討論的通用集成測試方法,根據電廠DCS實時數據庫特性,進行集成測試方法的選用,并將調用圖和基于類間繼承關系相結合的方法應用在電廠DCS實時數據庫的集成測試中,證明相結合方法能夠有效提高測試準確度,下面選用實時數據庫內核部分進行集成測試方法的應用。
3.1實時數據庫內核
實時數據庫內核作為一個數據處理中心,提供了對外接口,這些接口函數是其他軟件(如HMI、控制器)對實時數據庫內核的調用方式。即這些接口函數,是由具有調用關系的一些函數組成的;實時數據庫內核是采用C++語言編寫,其程序編程的方式是采用了面向對象的編程,主要進行類的編寫;實時數據庫內核是采用類間獨立的函數組成的,這些函數本身結構關系獨立、交互關系較弱。
所以,根據實時數據庫內核本身的特點,基于調用圖的集成測試方法和基于類間繼承的集成測試方法更適合對實時數據庫內核進行集成測試。
3.2采用調用圖集成測試方法
在實時庫內核模塊體系結構中存在實時數據庫內核對外接口,分析接口函數的調用圖,接口函數本身是將流程圖上所有相鄰的函數集成在一起。在實時數據庫內核中共有35個接口函數,下面以添加標簽點函數(AddTag)為列,具體執行調用圖集成測試方法:
3.2.1AddTag調用圖分析
圖1是AddTag接口函數實現過程調用的所有函數流程圖。
函數說明:添加一個標簽點,并為其賦予基本屬性。如下表所示:
3.2.3AddTag具體測試及結果
通過分析AddTag接口調用流程圖和AddTag函數,給出具體的測試思路和方法并執行測試,得出最后的測試結果:
測試思路為:給出函數的輸人值,查看函數的返回值。具體設計為下表所示:
測試方法:按照上述測試思路編制測試代碼,在測試環境下執行測試代碼。具體測試偽代碼編制如下圖:
測試結果:在輸入中配置正確的屬性,標簽名合法正確,測試執行測試代碼后,發現返回值是34587;這條測試代碼是不通過的。
根據測試返回值發現異常是添加標簽點屬性值違法。但是無法確認是添加基本屬性值違法,還是添加模擬量屬性值違法。