形式化驗證和測試是互補的活動,是質量保證過程的一部分。理想情況下,產品相關的質量保證任務將分為如下形式化驗證和測試:
●需求規格、設計規格和代碼等邏輯正確的屬性應該做形式上的驗證。
●適當的集成軟件、固件和硬件應該被測試。
●控制器的可靠操作應由內置的測試設備進行測試,測試設備負責監控操作和執行符合指定行為的動態檢查。
●不能從其他參考規格推導出的需求規格的完整屬性,應該通過形式驗證和仿真驗證相結合,即在符號規格級別上的測試。
對于嵌入式實時系統,當在執行關鍵安全或使命安全控制任務時,需要高度的自動化。否則將不可能達到必要的測試覆蓋程度,也不可能在接受的時間/成本利潤內,對新產品執行回歸測試。因此,測試必須基于可以由計算機自動解釋的形式規格。為了證實測試過程是值得信賴的,必須揭示產品對于行為規格的偏差,測試必須與形式驗證有關。因此,自動化測試和形式的方法有密切的關系。
RT-Tester是一個通用測試系統,集自動化半實物測試、不同類型的硬件接口實例化、操作系統的軟件集成測試為一體,由一系列組件構成,支持C、C++、Java、C#多種語言,用于單元測試、集成測試、配置項測試、軟硬件集成測試、系統測試等各個測試階段。在測試過程中自動生成測試用例、執行測試和實時測試評估。
RT-Tester能夠在模型上自動生成測試用例、測試數據和測試過程,兼容多種格式的規范(UML2.0、Domain-Specific語言、CSP等)。產生并維護一個關于需求、測試用例、測試過程及測試結果的追蹤矩陣。
RT-Tester有自己的運行時環境,基于Windows或Linux操作系統底層的輕型進程機制,管理LWP上可配置的用戶線程,上下文切換的費用不高。在Linux多核和多CPU平臺中,借助Hard Real-Time Linux kernel patch,增強RT-Tester的能力??梢詾镽T-Tester的LWPs預留指定數量的CPU,這使得調度精度大約為幾微秒,在剩余的核或CPU中,其他程序可以正常執行,不會影響實時運行時系統。
RT-Tester帶有一個工具認證資格套件,適合所有的軟件關鍵水平。適應于DO178B/C、CENELEC 50128和ISO 26262標準,RT-Tester已成功地用于測試最高安全級別的系統。
RT-Tester工具組件包括:
●RTT-CORE(測試過程開發、執行和記錄)
用于單元測試、軟件集成測試和硬件集成測試的實時測試系統,為所有測試級別提供同一種測試語言。對事件、采樣端口和隊列端口進行抽象,具有在主機或目標機上的可執行性。
●RTT-MBT(基于模型的測試生成器和仿真器)
產生模型上的測試(MBT),在UML/SysML模型上自動生成測試用例、測試數據和測試過程。維護需求、測試用例、測試過程及測試結果的追蹤矩陣。
●覆蓋所有測試級別
單元測試、軟件集成測試和軟硬件集成測試以及系統測試可以用同一個工具進行。
●用于單元和軟硬件集成測試的強大的樁生成器
被測件在測試中調用的子函數或方法可以被一個具有相同標識的測試系統樁模塊自動代替。利用樁,自動記錄調用參數,用戶可以模擬被測的子組件的不同行為(比如,健壯性測試中所需的正常范圍返回值或錯誤行為)。
●支持基于模型的測試
RT-Tester可以集成多種格式的規范(UML2.0、Domain-Specific語言、CSP等),為基于模型的測試提供全面的支持??梢韵騐erified公司咨詢當前支持的規范格式和工具,以及RT-Tester基于模型測試的完整功能列表。
●接口抽象機制
對于軟件、軟硬件和系統集成測試,RT-Tester提供通道(消息傳遞抽象)和向量(分布式共享變量抽象)的機制,抽象被測系統的接口訪問(比如,操作系統的通信調用或硬件接口的驅動調用)。
●支持復雜分布式仿真的高性能多線程機制
RT-Tester配有它自己的運行時環境,基于Windows或Linux操作系統底層的輕型進程機制(LWP,light-weight process),RT-Tester管理LWP上可配置的用戶線程,同時上下文切換的費用不高(在典型的現代Linux PC機系統中,小于6微秒)。
●強實時能力
在Linux多核和/或多CPU平臺中,借助Hard Real-Time Linux kernel patch,增強RT-Tester的能力??梢詾镽T-Tester的LWPs預留指定數量的CPU,這使得調度精度大約為幾微秒,在剩余的核或CPU中,其他程序(比如,軟實時可視化、測試程序的編寫)可以正常執行,不會影響強實時運行時系統。
●強實時PC群的分布式測試和仿真
對于硬件/軟件和系統集成測試,測試生成器、校驗器("測試預言")和模擬器不僅僅分布在多個CPU和內核中,還分布在PC群平臺中,通過高速鏈路如Infiniband或千兆以太網進行通信。將高通量接口分布在多個PC節點的被測系統中,降低了每個單一節點的接口總線負載。
●易操作
除了命令行,RT-Tester在Windows和Linux系統上具有Eclipse圖形用戶界面。
●協作性
適合單用戶項目及分布式測試團隊。
●可擴展
幾個可用的工具鏈擴展:
■測試管理系統(RTT-TMS)組織共享多用戶的測試硬件和測試用例/需求狀態報告。
■基于模型的測試(RTT-MBT)支持由測試模型生成可配置的測試用例。
■集成測試中支持多個硬件接口的集群通信支持。
■目標測試技術支持遠程過程調用,支持對運行在目標硬件上的SUT的板上觀察。
●資格審定
RT-Tester帶有一個RTCA-DO178B工具認證資格套件,適合所有的軟件關鍵水平。
●工具目前支持的平臺
■Linux:SuSE,openSUSE,CentOS/RHEL,Ubuntu
■Solaris:SunOS5.10(32bit)
■Windows: Windows XP SP3,Windows 7,Windows 8/8.1。
RTT-MBT
●定義測試模型
從描述被測系統行為的UML/SysML模型開始,RTT-MBT推導系統的期望行為以及系統對測試輸入的響應。這些測試模型能在不同的UML/SysML工具中指定,以XMI格式導出到RTT-MBT中。
●測試用例和測試數據自動生成
根據被測系統的關鍵級別,RTT-MBT提供多種測試用例策略。對于已經標識出來的測試用例,測試數據也是自動生成的。測試數據包含輸入和相關的時間信息,發送給被測系統,把被測系統驅動到這個測試用例能被檢查的狀態。檢查的動作也是由自動產生的測試預言完成的,測試預言驗證被觀測系統的行為是否和預期行為一致。預期行為是從最初的測試模型推導出來的。
●測試過程自動生成
個體的測試用例生成后,需要用它們實現測試目標。RTT-MBT自動產生測試過程,把多個用例合并到一個過程中。測試工程師選擇使用哪些測試用例,以此主導測試過程的生成,RTT-MBT負責跟蹤必須被激勵和觀測的輸入和輸出,覆蓋選定的測試用例。
RTT-MBT自動產生的測試過程能夠立即運行在被測系統上。在測試執行期間被測系統的輸入得到激勵,驅動內部狀態以滿足測試用例的先決條件(pre-condition)。自動驗證被測系統的輸出是否和測試模型產生的期望行為一致。
系統自帶的回放功能采用RT-Tester測試過程自動生成的測試日志,運行測試環境提供的輸入和被測系統相對于測試模型的輸出。它標識出一個給定的測試追蹤所覆蓋和測試的所有用例,驗證測試過程的結果,保證RT-Tester自動生成的測試過程真正地匹配了被測系統建模的行為。
●集成的需求追蹤
測試模型不僅要指定期望的系統行為,而且要說明系統需求如何被模型的特定部分所滿足。RTT-MBT支持在測試模型的狀態和轉換上面直接添加需求說明。如果特定的狀態或轉換不能直接表述需求,RTT-MBT也允許使用狀態、轉換或內部狀態變量的更加復雜的表達式。
這樣的信息一旦內嵌到測試模型,RTT-MBT就能利用它產生專門用于覆蓋需求而設計的測試用例。RT-Tester中集成的需求追蹤功能用于詳細地追蹤哪個需求在哪個測試過程得到測試,以及需求的整體測試水平如何。每個需求可以分解為多個測試用例,如果所有用例都已成功測試,那么可以認為需求也得到了成功的測試。
●支持的測試策略
基本控制狀態覆蓋、狀態轉換覆蓋、分級轉換覆蓋、MC/DC覆蓋、基本控制狀態成對覆蓋、等價類測試策略。
●集成性
可以從Enterprise Architect、SCADE和PTC Integrity Modeler(原名為Artisan Studio)導入測試模型。
●易操作
RTT-MBT與RT-Tester測試系統的圖形用戶界面無縫集成,可用于Windows和Linux系統。