劉軍
關(guān)鍵詞 軟件測試 軟件系統(tǒng)級測試 軟件研制 軟件聯(lián)調(diào) 系統(tǒng)級測試方法
1引言
隨著信息化迅猛發(fā)展,大型控制系統(tǒng)已成為典型的軟件密集型裝備。以某系列軟件的測試統(tǒng)計為例,A 版、B 版、C 版的軟件規(guī)模分別為24 萬行、74 萬行、270 萬行;與A 版軟件相比,C 版軟件規(guī)模增長了11倍。由于軟件呈現(xiàn)“規(guī)模龐大、結(jié)構(gòu)復雜、一體化綜合”的趨勢,因此軟件缺陷越來越難以發(fā)現(xiàn),軟件質(zhì)量難以保證[1] 。針對現(xiàn)有的問題與困難,經(jīng)過對某控制系統(tǒng)軟件系統(tǒng)級測試的結(jié)果和過程進行分析,本文闡述了軟件系統(tǒng)級測試對軟件研制、軟件測試和聯(lián)調(diào)的作用,以及實施軟件系統(tǒng)級測試的方法[2] 。
2大型控制系統(tǒng)的特點
目前,控制系統(tǒng)及其軟件主要具備以下特點。
(1)控制系統(tǒng)功能復雜,要求具備網(wǎng)絡化控制能力以及復雜環(huán)境下的控制能力。
(2)外部接口和內(nèi)部接口繁多,通信多元化,內(nèi)部結(jié)構(gòu)復雜,軟件規(guī)模龐大,一般在幾十萬至幾百萬行不等。
( 3)信息處理數(shù)據(jù)量大,速度快。在系統(tǒng)中,各個分系統(tǒng)和數(shù)據(jù)處理組合之間采用了數(shù)字化數(shù)據(jù)交換模式,并且最快每幾秒甚至幾毫秒交換一次數(shù)據(jù),每次達數(shù)百個字節(jié),要求處理的數(shù)據(jù)量很大。
(4)控制復雜性高,系統(tǒng)包括多個分系統(tǒng)及其組合或設備,有很多狀態(tài)量和數(shù)據(jù)量,并且其周期不盡相同,系統(tǒng)軟件要對它們進行統(tǒng)一管理,邏輯關(guān)系非常復雜。
(5)實時性要求強,各個分系統(tǒng)和數(shù)據(jù)處理組合之間的數(shù)據(jù)交換周期是不同的,綜控計算機按照統(tǒng)一時序來協(xié)調(diào)分系統(tǒng)的工作,實現(xiàn)多個設備的同步。一旦在實時性方面出現(xiàn)錯誤,就會造成整個系統(tǒng)運行錯誤。
( 6)規(guī)模巨大,一般在幾十萬甚至上百萬行,而對于如此巨大的軟件系統(tǒng)的需求分析、設計文檔內(nèi)容相對單一,有的軟件需求文檔的描寫力度是平均每個軟件需求對應一萬行左右的程序。
(7)系統(tǒng)職責分層、數(shù)據(jù)分布處理,往往將系統(tǒng)劃分為分系統(tǒng)、子系統(tǒng)以及配置項等,不同的配置項部署于支持層、傳輸層、應用層等,處于不同層次的配置項行使的職責不同,支持層、傳輸層等配置項的功能在系統(tǒng)中對用戶不可見,應用層配置項的功能需要經(jīng)由支持層、傳輸層的功能協(xié)助完成。而從用戶使用角度來看,使用功能是由多個軟件配置項/ 構(gòu)件組合共同完成的,單一配置項/ 構(gòu)件不能實現(xiàn)用戶的使用功能,配置項和系統(tǒng)需求的界限不易清晰的區(qū)分,分系統(tǒng)和子系統(tǒng)均是獨立運行和保障用戶使用的一個完整系統(tǒng)。
(8)人機交互多,系統(tǒng)的可用性、易用性必須符合用戶的使用習慣和任務需要,受人員影響很大,是使用需求驅(qū)動的軟件系統(tǒng)。
3大型控制系統(tǒng)軟件系統(tǒng)級測試現(xiàn)狀
面對以上軟件系統(tǒng)的特點,傳統(tǒng)的軟件配置項測試充分暴露“只見樹木、不見森林”的缺陷:測試力度不夠,無法驗證軟件配置項之間的功能協(xié)調(diào)性和接口協(xié)調(diào)性。通過調(diào)研發(fā)現(xiàn),控制系統(tǒng)軟件系統(tǒng)級測試存在以下問題。
(1)大多控制系統(tǒng)軟件的測試只針對單個配置項,導致配置項之間互聯(lián)、互通、互操作,分系統(tǒng)之間的協(xié)調(diào)匹配沒有得到充分驗證;大多控制系統(tǒng)軟件沒有軟件系統(tǒng)級的需求分析和設計文檔。軟件配置項合格性測試完成后進入系統(tǒng)聯(lián)試,由于缺乏系統(tǒng)級測試和驗證依據(jù)軟件,導致軟件驗證不充分,使得盡管對軟件配置項的功能、性能進行了全面驗證,但仍有超過半數(shù)的軟件質(zhì)量問題發(fā)生在系統(tǒng)聯(lián)試或系統(tǒng)試驗中,嚴重影響系統(tǒng)的研制進度。
(2)由于缺乏工程可行的系統(tǒng)級測試充分性準則、針對使用過程的描述手段以及海量測試數(shù)據(jù)的分析手段,即使開展了系統(tǒng)級測試也缺少統(tǒng)一的評價方法與充分性要求。
(3)系統(tǒng)總體單位組織的系統(tǒng)聯(lián)試,雖然聯(lián)合系統(tǒng)中所有軟件完成了使用流程的系統(tǒng)驗證,但驗證目的僅針對系統(tǒng)試驗要求,無法滿足復雜裝備軟件高可靠的質(zhì)量需求。
雖然我國在2004 年發(fā)布的軍用軟件測試指南中明確提出了系統(tǒng)測試的內(nèi)容和技術(shù)要求[3] ,但是并未針對大型復雜裝備軟件給出具體的指南。因此,本文通過結(jié)合項目調(diào)研和工程實踐,嘗試提出大型控制系統(tǒng)軟件系統(tǒng)級測試方法。
4大型控制系統(tǒng)軟件系統(tǒng)測試發(fā)現(xiàn)的問題
調(diào)研多個已進行軟件系統(tǒng)級測試或系統(tǒng)試驗的大型控制系統(tǒng),對系統(tǒng)軟件系統(tǒng)級測試或系統(tǒng)試驗發(fā)現(xiàn)的軟件問題進行分析,發(fā)現(xiàn)出現(xiàn)問題的原因如下。
(1)系統(tǒng)級測試特點決定的:單個軟件配置項執(zhí)行沒有問題,但作為系統(tǒng)執(zhí)行時就有問題,此類問題為典型的系統(tǒng)級問題,配置項無法發(fā)現(xiàn)。
(2)模型設計缺陷。
(3)設計師對系統(tǒng)的認知與設計總體相比存在差異。
(4)設計師無系統(tǒng)概念,想方設法提高軟件指標但卻與系統(tǒng)指標無法協(xié)調(diào),導致對其他軟件產(chǎn)生不良影響。
(5)測試人員認識提高,測試用例設計足夠復雜,激活潛在的軟件缺陷。
5軟件系統(tǒng)級測試問題分析對于軟件研制的啟發(fā)
5.1軟件系統(tǒng)級測試之于軟件測試的啟示
針對大型控制系統(tǒng)軟件系統(tǒng)級測試現(xiàn)狀,測評機構(gòu)應該開展軟件系統(tǒng)級測評,并制定一套行之有效的系統(tǒng)級測試技術(shù)規(guī)范和實施管理流程。但基于提高軟件質(zhì)量的要求,只在軟件驗收階段進行系統(tǒng)級測試又顯得不夠,那在軟件研制過程中是否可以實施系統(tǒng)級測試? 而軟件研制過程中各軟件狀態(tài)不定、測試周期短,導致無法完全進行系統(tǒng)級測試。鑒于此,應從軟件測試的思路和方法進行改進:測試設計時應多從使用者的角度進行設計,而不應只對軟件進行覆蓋性測試;需對軟件任務剖面進行分析,構(gòu)造任務應用場景;充分考慮與軟件有關(guān)的所有硬件和設備對軟件的影響;測試用例設計應增加針對飽和或滿負荷情況下的設計且用例應盡量復雜;測試執(zhí)行時耦合度高的軟件應協(xié)同測試。
5.2軟件系統(tǒng)級測試之于軟件研制的啟示
分析軟件系統(tǒng)級測試或系統(tǒng)試驗問題產(chǎn)生的原因,不難發(fā)現(xiàn)如果在軟件研制過程中采取一定措施,相關(guān)問題在一定程度上是可以避免的。對此,在軟件研制過程中應采取以下措施。
(1)重視軟件系統(tǒng)需求分析與系統(tǒng)設計
系統(tǒng)需求是介于用戶需求和軟件需求之間的重要橋梁,是滿足用戶需求的重要保障,更是系統(tǒng)級測試的唯一依據(jù)。在系統(tǒng)軟件需求類文檔中,應明確系統(tǒng)軟件用途,重點描述系統(tǒng)軟件的任務使命、系統(tǒng)能力(覆蓋技術(shù)指標)、軟硬件環(huán)境要求、系統(tǒng)/ 分系統(tǒng)軟件體系結(jié)構(gòu)設計等(即系統(tǒng)的任務流、功能流、信息流)。
存在工作狀態(tài)轉(zhuǎn)換的,在需求類文檔中,應詳細說明系統(tǒng)軟件所包含的各種工作狀態(tài)、轉(zhuǎn)換方式,必要時給出狀態(tài)轉(zhuǎn)換圖,以說明轉(zhuǎn)換條件、轉(zhuǎn)換點。對于各種工作方式,應清楚描述對應的能力需求組,以及參與實現(xiàn)的軟件,推薦使用表格進行說明。
在需求類文檔中,在對系統(tǒng)能力需求展開描述時,建議從系統(tǒng)/ 分系統(tǒng)的角度出發(fā),對每一組能力需求進行詳細描述,建議給出工作流程圖、數(shù)據(jù)流圖,文字描述實現(xiàn)路徑,說明軟件參與的操作以及執(zhí)行過程中的重點數(shù)據(jù)判讀要求、數(shù)據(jù)執(zhí)行周期要求(處理時間分布情況),應列出研制總要求中與軟件相關(guān)的所有技術(shù)指標,并進行有效分解。
在需求類文檔中,應詳細描述整個系統(tǒng)軟件的內(nèi)/ 外部接口通信內(nèi)容,應詳細描述切實可行的安全性需求與措施。
(2)加強使用總體與設計總體、設計總體與設計師的溝通
軟件研制中設計總體、設計師應定期與使用總體進行溝通,這才能保證系統(tǒng)貼近用戶使用;設計總體和設計師定期溝通能夠消除彼此理解上的一些差異,同時形成頭腦風暴,完善模型設計,提高軟件質(zhì)量。
5.3軟件系統(tǒng)級測試之于軟件系統(tǒng)聯(lián)調(diào)的啟示
軟件系統(tǒng)聯(lián)調(diào)一般是依據(jù)試驗任務對軟件系統(tǒng)的主要功能和流程進行驗證,缺乏充分性。軟件系統(tǒng)級測試是以測試的角度對軟件系統(tǒng)的所有設計分支進行測試,功能覆蓋全面。在對系統(tǒng)級測試結(jié)果分析中,發(fā)現(xiàn)如果系統(tǒng)聯(lián)調(diào)能夠充分測試,那某些問題本可以很早就能發(fā)現(xiàn)。鑒于此,應該在軟件系統(tǒng)聯(lián)調(diào)中采取以下措施,以提高軟件的可靠性。
(1)軟件系統(tǒng)聯(lián)調(diào)應轉(zhuǎn)變思想:系統(tǒng)聯(lián)調(diào)不應只為試驗任務服務,而是以提高軟件系統(tǒng)可靠性為目的。
( 2)組織軟件系統(tǒng)聯(lián)調(diào)的人員應了解軟件測試,以軟件測試的角度結(jié)合軟件系統(tǒng)聯(lián)調(diào)的特點,綜合考慮制定聯(lián)調(diào)方案。
(3)軟件系統(tǒng)聯(lián)調(diào)依據(jù)試驗任務制定聯(lián)調(diào)方案時,應盡可能充分考慮系統(tǒng)功能,提高測試的充分性。
(4)軟件系統(tǒng)聯(lián)調(diào)應多考慮異常分支、異常情況,驗證系統(tǒng)可靠性。
(5)必要時,軟件系統(tǒng)聯(lián)調(diào)應請測試人員參與。
6大型控制系統(tǒng)軟件系統(tǒng)級測試方法研究
針對大型控制系統(tǒng)軟件研制特點以及系統(tǒng)測試或系統(tǒng)試驗發(fā)現(xiàn)的問題,本文開展了研究,建議大型控制系統(tǒng)軟件系統(tǒng)級測試應從以下兩方面進行研究。
6.1面向使用過程的系統(tǒng)級測試用例生成技術(shù)
大型控制系統(tǒng)使用環(huán)境復雜,使用過程綜合程度高,軟件系統(tǒng)級高精度、抗干擾、快速反應性能的考核需要在系統(tǒng)級集成測試環(huán)境下開展。面對復雜軟件系統(tǒng),測試用例是一個與被測軟件的交互執(zhí)行過程相對應的、由輸入控制點及其輸入指令或數(shù)據(jù)等要素組成的多元組的序列。大型控制系統(tǒng)作為復雜大系統(tǒng),對于裝備軟件系統(tǒng)級測試用例的描述應包括使用環(huán)境情景想定、使用過程描述、測試激勵數(shù)據(jù)三個層次。系統(tǒng)級測試用例的描述示意圖如圖1所示。
(1)使用環(huán)境情景想定
控制系統(tǒng)裝備軟件系統(tǒng)級測試用例的前置條件需要想定符合實際使用過程的情景,涵蓋系統(tǒng)要求的各個性能指標、系統(tǒng)功能、任務剖面等。
(2)基于UML 順序圖的使用過程描述
UML 順序圖可以用來描述控制系統(tǒng)中不同對象之間的動態(tài)交互,顯示使用過程中涉及對象間的消息傳遞關(guān)系。而消息是由系統(tǒng)特征狀態(tài)構(gòu)成的,課題研究應用UML 順序圖依照由系統(tǒng)特征狀態(tài)構(gòu)造的任務剖面描述控制系統(tǒng)的測試場景,將輸入、輸出及約束條件合理組合生成覆蓋該場景的測試流程,以提高測試的充分性。
(3)針對GUI 的測試激勵數(shù)據(jù)生成
大型控制系統(tǒng)包括嵌入式軟件和GUI 軟件,針對嵌入式軟件,通常采用數(shù)據(jù)文件形式的測試用例,包括時間驅(qū)動和事件響應兩類用例激勵方式,目前已經(jīng)較好地解決了這類軟件的用例生成和用例加載問題。
6.2軟件系統(tǒng)級驗證技術(shù)
(1)系統(tǒng)級形式化驗證
將組成控制系統(tǒng)的各分系統(tǒng)作為對象,構(gòu)建狀態(tài)圖,應用形式化語言描述上層設計的軟件模型規(guī)格,研究形式化方法驗證系統(tǒng)行為的正確性和完備性。狀態(tài)圖用于對系統(tǒng)模型元素的動態(tài)行為進行建模,它描述一個實體基于事件反應的動態(tài)行為,顯示該實體如何根據(jù)當前所處的狀態(tài)對不同的事件做出不同的反應。形成狀態(tài)機模型后,根據(jù)定義驗證規(guī)則使用CTL 語句對模型進行仿真驗證。
(2)系統(tǒng)級協(xié)議分析
調(diào)研發(fā)現(xiàn),近年的系統(tǒng)試驗所暴露出的軟件問題,誘因已經(jīng)不是單一軟件配置項處理的特殊數(shù)據(jù)或異常數(shù)據(jù),而是在系統(tǒng)/ 子系統(tǒng)內(nèi)、系統(tǒng)/ 子系統(tǒng)外流轉(zhuǎn)的數(shù)據(jù)流在實際使用過程中發(fā)生的特例,也許基于本系統(tǒng),它是有效數(shù)據(jù),但由于它到來的時序特殊、與其他數(shù)據(jù)產(chǎn)生了疊加、軟件集成后與整系統(tǒng)硬件未良好匹配等因素,導致其觸發(fā)軟件缺陷,因此需要通過系統(tǒng)地分析、審查接口通信的協(xié)議,發(fā)現(xiàn)設備之間接口通信方面可能存在的隱患,以進一步提高軟件接口以及系統(tǒng)的可靠性。協(xié)議分析技術(shù)包括接口設計與實現(xiàn)審查、通信設計與實現(xiàn)審查兩部分。
7結(jié)束語
目前,針對大型控制系統(tǒng)開展系統(tǒng)級測試驗證一直是行業(yè)研究的熱點。本文基于理論研究成果,結(jié)合多個控制系統(tǒng)軟件系統(tǒng)級測試的工程實踐積累,研究出了一套實施系統(tǒng)級測試驗證的技術(shù)與方法,通過試點開展多個控制系統(tǒng)軟件測試驗證工作,后續(xù)將繼續(xù)深入研究系統(tǒng)級測試技術(shù),以完善系統(tǒng)級測試流程規(guī)范,為系統(tǒng)軟件順利完成每一次試驗努力。