蘆韡 馮晉濤 湯琪芬 張娜
【摘 要】在核反應(yīng)堆的工程設(shè)計活動中,用于堆芯中子學(xué)性能分析、燃料元件性能分析、熱工水力與安全分析等目的的一系列設(shè)計分析軟件均發(fā)揮著至關(guān)重要的作用。為確保核安全相關(guān)計算機(jī)軟件的正確性與可靠性,在其投入工程應(yīng)用之前,必須開展嚴(yán)格的軟件V&V;工作。測試是軟件V&V;活動的重要內(nèi)容之一,針對反應(yīng)堆設(shè)計分析軟件包含大量數(shù)值計算、流程復(fù)雜等特點,結(jié)合典型軟件工程理論進(jìn)行測試需求分析并選用合理的測試策略,從而有效提升軟件質(zhì)量。
【關(guān)鍵詞】數(shù)值計算;軟件測試;策略
中圖分類號:TP311.5 文獻(xiàn)標(biāo)識碼: A 文章編號: 2095-2457(2018)12-0020-003
DOI:10.19694/j.cnki.issn2095-2457.2018.12.008
Analysis of Testing Strategy within Nuclear Engineering Numerical Codes
LU Wei FENG Jin-tao TANG Qi-feng ZHANG Na
(Science and Technology on Reactor System Design Technology Laboratory, Nuclear Power Institute of China, Chengdu, 610213, China)
【Abstract】Nuclear Engineers use abundant calculating codes to perform own work during nuclear engineering design activities. To ensure correctness and reliability of nuclear engineering numerical codes, strict software V&V; work has to be carried out before its actual applications. Considering plentiful numerical calculations and complicated processes within nuclear codes,reasonable testing strategy should be chosen to improve the quality of nuclear codes.
【Key words】Numerical calculation; Software testing; Strategy
0 概述
在核反應(yīng)堆的工程設(shè)計活動中,用于堆芯中子學(xué)性能分析、燃料元件性能分析、熱工水力與安全分析等目的的一系列設(shè)計分析軟件均發(fā)揮著至關(guān)重要的作用。為確保核安全相關(guān)計算機(jī)軟件的正確性與可靠性,在其投入工程應(yīng)用之前,必須開展嚴(yán)格的“驗證與確認(rèn)”(verification and validation,V&V;)工作。
測試是軟件V&V;工作的一部分,其目的在于盡可能發(fā)現(xiàn)軟件的缺陷。反應(yīng)堆設(shè)計分析軟件往往包含大量數(shù)值計算(或稱科學(xué)計算)以及復(fù)雜迭代流程,測試工作的主要目標(biāo)之一是證明其采用的模型方法及數(shù)值實現(xiàn)過程的正確性,包括找出問題判斷錯誤、算法錯誤、設(shè)計錯誤、邏輯錯誤以及輸入輸出錯誤等。
針對反應(yīng)堆設(shè)計分析軟件的上述特點,結(jié)合典型軟件工程理論進(jìn)行測試需求分析并選用合理的測試策略,在此基礎(chǔ)上精心設(shè)計測試用例,才能以較為合理的時間與人力,系統(tǒng)地找出軟件中潛在的各種錯誤和缺陷,取得良好的測試效果,有效提升核工程領(lǐng)域數(shù)值計算軟件的質(zhì)量。
1 測試流程
圖1 測試流程
隨著軟件開發(fā)過程模型和開發(fā)技術(shù)的不斷發(fā)展,軟件測試?yán)碚摵图夹g(shù)也得到相應(yīng)發(fā)展,在軟件質(zhì)量體系中,為了更好的指導(dǎo)軟件測試的全部過程、活動和任務(wù),提出了軟件測試模型,常用的軟件測試模型有瀑布模型、V模型和W模型[1]。
針對數(shù)值計算類軟件理論模型復(fù)雜、迭代次數(shù)多、計算精度要求高的特點,需要通過不同的測試階段逐級完成對代碼、程序設(shè)計直至軟件需求的驗證,從而達(dá)到全面有效地測試。因此,選用軟件工程中最具代表性的V模型,在編碼完成后通過單元測試、集成測試和系統(tǒng)測試三個測試階段來實施軟件的測試工作,測試流程如圖1所示。
具體測試內(nèi)容包括:
(1)單元測試,針對的是軟件開發(fā)中的單元模塊,數(shù)值計算軟件的單元模塊包括數(shù)據(jù)存取、流程與邏輯控制以及數(shù)值計算等多種類型,通過靜態(tài)測試和動態(tài)測試來驗證單元是否符合軟件設(shè)計說明所規(guī)定的控制流程、輸出要求等,其中數(shù)值計算過程的正確性是單元測試的關(guān)鍵目標(biāo)之一。
(2)集成測試,在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計要求組裝成子系統(tǒng)或系統(tǒng),驗證軟件模塊集成后的計算正確性、軟件之間接口、各模塊之間接口及內(nèi)部單元之間的調(diào)用關(guān)系的正確性,驗證軟件子系統(tǒng)或系統(tǒng)是否達(dá)到軟件總體設(shè)計要求。由于數(shù)值計算軟件是通過不同功能模塊的組合實現(xiàn)完整的計算功能,在集成測試階段需重點關(guān)注軟件采用的模型方法及數(shù)值實現(xiàn)過程的正確性。
(3)系統(tǒng)測試,通過在實際實用環(huán)境下運行軟件,并與軟件的需求定義做比較。核工程領(lǐng)域中部分?jǐn)?shù)值計算軟件具有豐富的圖形化界面,并支持較為復(fù)雜的用戶交互過程,系統(tǒng)測試對于驗證軟件系統(tǒng)是否滿足各項需求非常重要。
2 測試策略分析
核工程領(lǐng)域設(shè)計分析軟件涉及核工程,數(shù)學(xué),計算機(jī)等領(lǐng)域,其中,核工程又包括堆芯中子學(xué)、熱工水力、燃料元件等多個專業(yè),各專業(yè)軟件通過計算堆內(nèi)材料的核特性、堆芯內(nèi)的中子通量和功率分布,堆芯功率分布影響燃料溫度分布以及冷卻劑(慢化劑)的溫度、密度分布等物理數(shù)據(jù),盡量真實地模擬堆芯的運行過程,反映反應(yīng)堆在運行和事故工況下的實際情況,提高對復(fù)雜事故工況的認(rèn)識,更加精確地估計安全裕量,為核反應(yīng)堆系統(tǒng)安全分析提供技術(shù)手段。
同時,隨著物理理論模型以及高性能計算等相關(guān)領(lǐng)域的發(fā)展,核工程領(lǐng)域設(shè)計分析軟件的功能需求更復(fù)雜,計算準(zhǔn)確性及效率要求更高,相應(yīng)的,軟件設(shè)計的數(shù)據(jù)結(jié)構(gòu),計算流程越來越復(fù)雜,計算精度要求更高。在該類軟件測試中,需要更重視物理理論模型實現(xiàn)和計算的準(zhǔn)確性問題。針對上述軟件特點,結(jié)合已開展的軟件研發(fā)測試經(jīng)驗,本文提出如下適用于核工程領(lǐng)域設(shè)計分析軟件的測試策略:
2.1 單元測試策略
單元測試是針對軟件最小單位—函數(shù)模塊,進(jìn)行正確性檢驗的測試工作。
單元測試一般是自動測試與人工走查相結(jié)合,測試者需要依據(jù)詳細(xì)設(shè)計說明書和源程序代碼,了解各個單元模塊的I/O數(shù)據(jù)和邏輯結(jié)構(gòu),主要采用白盒測試的測試用例,輔之以黑盒測試的測試用例,同時用一些輔助模塊(驅(qū)動模塊driver、樁模塊stub)去模擬與被測模塊相聯(lián)系的其它模塊,使之對合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。另外,對有時間效率要的程序還要做性能測試。
結(jié)合核工程領(lǐng)域數(shù)值計算軟件中公式較多與數(shù)據(jù)處理量大的特點,單元測試策略重點關(guān)注如下幾點:
(1)單元模塊與詳細(xì)設(shè)計中理論模型或數(shù)值方法的一致性;
(2)單元模塊中全局變量與局部數(shù)據(jù)結(jié)構(gòu)測試,包括初始化、數(shù)組越界等問題;
(3)使用具有類似功能但實現(xiàn)方式不同的單元模塊進(jìn)行對照測試;
(4)單元模塊內(nèi)部誤差傳遞的測試。
2.2 集成測試策略
集成測試通常,在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計要求組裝成為系統(tǒng)。通常,把模塊集成成為系統(tǒng)的方式有兩種:一次性集成方式、增量集成方式。增量集成相比傳統(tǒng)的階段式集成有著更多優(yōu)勢,易于定位錯誤并降低風(fēng)險。基于增量集成的測試策略主要包括以下內(nèi)容:
(1)所有單元模塊組合后能否達(dá)到預(yù)期要求的總體功能,其邏輯關(guān)系與詳細(xì)設(shè)計中理論模型或數(shù)值方法的一致性;
(2)增量集成包括自底向上、自頂向下、三明治、風(fēng)險導(dǎo)向、功能導(dǎo)向、T-型等多種方法,在不同類型的數(shù)值計算軟件測試活動中根據(jù)需要進(jìn)行組合使用;
(3)各個模塊進(jìn)行連接、組合的過程中,全局?jǐn)?shù)據(jù)結(jié)構(gòu)以及模塊之間的數(shù)據(jù)的測試;
(4)多個模塊之間誤差傳遞的測試;
(5)開發(fā)專用的自動化集成測試工具,在每次版本升級或代碼更新等情況時進(jìn)行回歸。
2.3 系統(tǒng)測試策略
系統(tǒng)測試,是將通過確認(rèn)測試的軟件,作為整個基于計算機(jī)系統(tǒng)的一個元素,與計算機(jī)硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實際運行環(huán)境下,對計算機(jī)系統(tǒng)進(jìn)行一系列的組裝測試和確認(rèn)測試。
系統(tǒng)測試主要包括功能測試、界面測試、可靠性測試、易用性測試、性能測試等,對于具有GUI界面的數(shù)值計算軟件而言,大量測試工作體現(xiàn)在功能測試與界面測試方面,主要考慮以下幾點:
(1)采用黑盒法,在GUI界面上輸入集成測試用例,驗證結(jié)果正確性;
(2)GUI輸入輸出界面的圖形化交互功能以及輸入合法性檢查;
(3)GUI輸入輸出界面與數(shù)值計算部分的接口檢查;
(4)針對系統(tǒng)有可能存在的異常操作、軟硬件引起的故障等設(shè)計測試用例,驗證系統(tǒng)的容錯能力。
2.4 自動化測試策略
自動化測試貫穿于軟件開發(fā)測試各個階段中,可以使用較為成熟的工具或是結(jié)合核工程領(lǐng)域數(shù)值計算軟件特點開發(fā)專用的測試工具,從而提高軟件開發(fā)測試效率。
針對數(shù)值計算軟件結(jié)果數(shù)據(jù)量大的情況,開發(fā)專用的自動化測試工具進(jìn)行輸出結(jié)果提取于自動比對,可顯著提高測試效率。此外,利用開發(fā)工具也可進(jìn)行部分測試工作,如VS2010開始直接提供的測試框架等。
3 核工程領(lǐng)域數(shù)值計算軟件測試實踐
在具有自主知識產(chǎn)權(quán)的核電軟件包NESTOR[2]的研發(fā)過程中,對于反應(yīng)堆物理、屏蔽與源項、熱工水力與安全分析、燃料元件、系統(tǒng)與設(shè)備等各個專業(yè)方向的數(shù)值計算軟件,一般可歸類為中型或大型軟件,其復(fù)雜性既來自它所反映的反應(yīng)堆實際問題,也來自于軟件本身計算公式多、求解過程繁雜、迭代循環(huán)多等復(fù)雜的邏輯結(jié)構(gòu)。
將NESTOR軟件包各專業(yè)領(lǐng)域軟件的測試階段劃分為單元測試、集成測試與系統(tǒng)測試,然后通過軟件特點分析,在不同測試階段均需選取適用性強(qiáng)的測試策略,如代碼人工走查、增量測試以及自動化測試等,檢驗軟件代碼是否符合規(guī)范,計算結(jié)果的期望值、路徑覆蓋率、越界處理方法、人機(jī)界面等關(guān)鍵環(huán)節(jié)是否與相關(guān)設(shè)計說明書相符合,發(fā)現(xiàn)設(shè)計與編碼缺陷并及時處理,直至所有發(fā)現(xiàn)的缺陷得以修復(fù)并通過回歸測試。
本文所提出的適用于數(shù)值計算軟件的測試策略,在NESTOR軟件包的測試工作中得到了廣泛且深入的應(yīng)用,效果良好,為確保軟件質(zhì)量及其計算結(jié)果的可信度提供支撐。
【參考文獻(xiàn)】
[1]覃征,何堅,高洪江,等.軟件工程與管理[M].北京:清華大學(xué)出版社,2005.
[2]劉東,李慶,盧宗健,等.“華龍一號”設(shè)計分析軟件包NESTOR的研發(fā)與應(yīng)用[J].中國核電,2017,10(04):532-536.