国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

國家數(shù)值風(fēng)洞(NNW)軟件自動(dòng)化集成與測試平臺(tái)設(shè)計(jì)與研發(fā)

2020-12-21 14:02郭勇顏曾志春賴相成
關(guān)鍵詞:算例開發(fā)人員軟件測試

何 磊, 郭勇顏, 曾志春, 賴相成, 趙 鐘

(中國空氣動(dòng)力研究與發(fā)展中心 計(jì)算空氣動(dòng)力研究所, 綿陽 621000)

0 引 言

計(jì)算流體力學(xué)(Computational Fluid Dynamics,CFD)技術(shù)發(fā)展的一個(gè)重要標(biāo)志是各種CFD通用商業(yè)軟件的陸續(xù)出現(xiàn)。而我國CFD軟件在歷史上發(fā)展嚴(yán)重滯后。一大批國外商業(yè)CFD軟件涌入我國市場,如ANSYS Fluent、ANSYS CFX、CFD++、STAR-CD、NUMECA等,這些軟件功能全、求解速度快,同時(shí)以客戶需求作為開發(fā)的導(dǎo)向,很快獲得了一大批用戶的青睞,占領(lǐng)了大部分市場。

近年來,受益于計(jì)算機(jī)水平的不斷提高、成本的不斷下降,以及國家在科研領(lǐng)域的持續(xù)投入,航空航天領(lǐng)域的各個(gè)大學(xué)、研究院所紛紛發(fā)展推出各類In-House CFD Codes,一些CFD軟件公司也推出自主商用CFD軟件,我國自主CFD軟件發(fā)展形勢喜人。

然而,國產(chǎn)CFD軟件大部分屬于研究性軟件,少數(shù)屬于專業(yè)軟件,特點(diǎn)是軟件精巧、專業(yè)性強(qiáng)、求解問題有限,對于軟件開發(fā)人員或?qū)λ惴ㄊ煜さ募夹g(shù)人員,可以計(jì)算得到精度較高的結(jié)果。盡管我國的CFD軟件在長期的發(fā)展過程中,取得了長足的進(jìn)步,但是受限于CFD軟件開發(fā)的歷史局限,在開發(fā)模式方面和國外軟件還存在一定差距,主要體現(xiàn)在:(1)開發(fā)模式落后。大部分軟件實(shí)際上是具備某種專業(yè)功能的計(jì)算代碼,沒有結(jié)合現(xiàn)代軟件工程思想,程序基本上是面向過程式開發(fā)。隨著軟件規(guī)模的擴(kuò)大、軟件功能的增加,代碼量急劇增長,面向過程式開發(fā)軟件的可擴(kuò)展性、易維護(hù)性都大大降低。(2)軟件開發(fā)目標(biāo)不明確。很多國內(nèi)早期的計(jì)算軟件往往是出于某個(gè)工程任務(wù)或?qū)W術(shù)研究的需要而開發(fā),軟件研制的主要目的之一是解決某類特定問題,在開發(fā)過程中為了快速達(dá)到目的,只側(cè)重某類功能的實(shí)現(xiàn),導(dǎo)致軟件的體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)考慮不周全,可擴(kuò)展性差。(3)軟件測試不夠系統(tǒng)。CFD軟件除了要進(jìn)行驗(yàn)證與確認(rèn)外,在開發(fā)過程中還需要大量單元測試、集成測試,以保證軟件質(zhì)量。

相比較而言,國外大型CFD軟件項(xiàng)目在開發(fā)過程中非常重視與現(xiàn)代軟件工程思想和方法的結(jié)合。

從2008年開始至2020年結(jié)束,美國國防部在研項(xiàng)目“計(jì)算研究與工程采購工具與平臺(tái)”[1-4](Computational Research and Engineering Acquisition Tools and Environments,CREATE)是為了工程設(shè)計(jì)與分析而發(fā)展的多學(xué)科的軟件工具平臺(tái),共計(jì)投入3.6億美元。該項(xiàng)目十分重視測試,其中四大模塊之一的Kestrel[5]就包含4個(gè)層次的自動(dòng)化測試:單元測試、融合測試、系統(tǒng)測試和可信度測試。目前,Kestrel擁有3485個(gè)單元測試、239個(gè)融合測試、21個(gè)系統(tǒng)測試,每天都必須運(yùn)行這些測試,大致產(chǎn)生17 189個(gè)功能正確性判定。同時(shí),可信度自動(dòng)化測試系統(tǒng)(Automated Testing System,ATS)在美國國防部的超級(jí)計(jì)算機(jī)上每兩周運(yùn)行一次,ATS包含124個(gè)獨(dú)立的計(jì)算任務(wù),大概需要43 000個(gè)CPU機(jī)時(shí)才能完成測試。

Flucs[6-8](Flexible Unstructured CFD Software),是德宇航(DLR)正在研發(fā)的一款面向下一代的CFD軟件。與DLR的傳統(tǒng)CFD軟件開發(fā)過程相比,F(xiàn)lucs最大的變化體現(xiàn)在軟件開發(fā)模式、編程框架和并行計(jì)算等方面。在軟件開發(fā)模式方面,大量采用現(xiàn)代軟件開發(fā)思想及方法,如采用分布式版本控制工具GIT、基于WEB的版本Review系統(tǒng)、不間斷的持續(xù)集成、自動(dòng)化測試方法等。

除了開發(fā)模式外,軟件測試也是制約大型CFD軟件研制成功與否的關(guān)鍵因素。隨著人們對軟件測試重要性的認(rèn)識(shí)越來越深刻,軟件測試階段在整個(gè)軟件開發(fā)周期中所占的比重日益增大。無論是從軟件開發(fā)方法學(xué)還是軟件測試自身的效益看,軟件測試在今后很長時(shí)間內(nèi)仍將是保證軟件質(zhì)量和可靠性的重要手段。CFD軟件的開發(fā)測試是一項(xiàng)系統(tǒng)工程。國外CFD軟件開發(fā)過程中引入了嚴(yán)格的質(zhì)量管控體系,從開發(fā)到發(fā)布的全生命周期要經(jīng)過非常嚴(yán)格的系列測試,很好地保證了軟件質(zhì)量。

現(xiàn)代軟件開發(fā)過程中,軟件測試人員往往占到開發(fā)人員40%以上,對于某些性命攸關(guān)的軟件,其測試費(fèi)用甚至高達(dá)所有其他軟件工程階段費(fèi)用總和的3到5倍[9]。許多世界級(jí)的公司(如Google公司)可以打造出世界級(jí)的軟件,這與其對待質(zhì)量的方法是離不開的[10]。他們把軟件開發(fā)過程和測試融合在一起,二者同時(shí)開展。開發(fā)過程中,并不是將軟件測試當(dāng)作獨(dú)立隔離的活動(dòng),而是把它作為開發(fā)過程的一部分。當(dāng)開發(fā)和測試融合在一起,就像在攪拌機(jī)里混合攪拌那樣,直到不能區(qū)分彼此的時(shí)候,就得到了質(zhì)量,這也是“測試驅(qū)動(dòng)開發(fā)”軟件開發(fā)模式的基本思想。

與傳統(tǒng)軟件測試不同的是,由于以CFD為代表的科學(xué)計(jì)算過程包括邏輯運(yùn)算和浮點(diǎn)運(yùn)算,因此CFD軟件測試除了要開展常規(guī)的靜態(tài)掃描、單元測試以及邏輯正確性測試外,還要開展針對不同科學(xué)算例的集成測試和回歸測試。CFD軟件的集成測試是保證CFD軟件質(zhì)量的最后一道屏障,而目前大多數(shù)從業(yè)者依靠開發(fā)者人工發(fā)送計(jì)算作業(yè)、手動(dòng)收集計(jì)算結(jié)果進(jìn)行對比分析,占去了CFD軟件開發(fā)者的大量時(shí)間,嚴(yán)重影響了CFD軟件的開發(fā)效率。并且往往是在開發(fā)后、發(fā)布前進(jìn)行集成測試,存在軟件開發(fā)與軟件測試嚴(yán)重脫離的問題。隨著軟件版本的更新,不但不能保證CFD軟件開發(fā)的穩(wěn)步前進(jìn),質(zhì)量問題也得不到明確的保障。所以,在CFD軟件開發(fā)中引進(jìn)自動(dòng)化測試系統(tǒng)顯得尤為重要。

為了滿足我國在航空航天、交通運(yùn)輸、能源動(dòng)力、橋梁建筑等產(chǎn)業(yè)創(chuàng)新以及武器裝備研制過程中對大規(guī)模CFD軟件的需求,中國空氣動(dòng)力研究與發(fā)展中心開發(fā)了一款通用CFD軟件——“風(fēng)雷”軟件[11-14](NNW-PHengLEI,源于作者團(tuán)隊(duì)開發(fā)的結(jié)構(gòu)/非結(jié)構(gòu)混合求解器HyperFLOW[15-17])。該軟件研制目標(biāo)是開發(fā)一款面向下一代的、結(jié)構(gòu)解算器/非結(jié)構(gòu)解算器耦合求解的、具備多學(xué)科計(jì)算擴(kuò)展能力的大型通用CFD軟件。該軟件已于2016年面向全國發(fā)布并免費(fèi)使用。

此前,在“風(fēng)雷”軟件開發(fā)過程中,為了提高開發(fā)效率、保證軟件質(zhì)量,并減少測試工作對于人力資源的過多占用,開發(fā)了與CFD軟件平臺(tái)匹配的自動(dòng)化測試平臺(tái)(Automated Test Platform,ATP)[18]。該平臺(tái)基于數(shù)據(jù)庫,通過前臺(tái)界面和遠(yuǎn)程集群后臺(tái)管理程序的網(wǎng)絡(luò)進(jìn)行信息交互。自動(dòng)化測試的主要工作原理是:在已建立的基本CFD算例數(shù)據(jù)庫基礎(chǔ)上,“風(fēng)雷”軟件每次版本提交后自動(dòng)編譯并運(yùn)行數(shù)據(jù)庫中的所有算例,將計(jì)算結(jié)果和標(biāo)準(zhǔn)結(jié)果進(jìn)行對比以檢測代碼是否正確,與此同時(shí),對計(jì)算結(jié)果進(jìn)行統(tǒng)計(jì)分析、誤差分析等初步的驗(yàn)證與確認(rèn)。ATP平臺(tái)具備友好的人機(jī)交互界面,開發(fā)了算例管理、算例測試監(jiān)控和算例結(jié)果分析等功能,大幅提高了“風(fēng)雷”軟件的開發(fā)效率,減少了代碼錯(cuò)誤率,CFD代碼質(zhì)量得到有效保證。

然而,隨著“風(fēng)雷”開發(fā)團(tuán)隊(duì)的擴(kuò)大、軟件功能的增加,軟件開發(fā)過程中的一些開發(fā)模式問題逐漸顯現(xiàn)出來。大型軟件一般需要數(shù)十個(gè)乃至上百個(gè)程序員一起進(jìn)行并行開發(fā),他們會(huì)分為多個(gè)開發(fā)組,完成不同的模塊任務(wù),也必然會(huì)在同一套代碼下面工作。目前,風(fēng)雷軟件代碼量已經(jīng)達(dá)到數(shù)十萬行,開發(fā)團(tuán)隊(duì)人員達(dá)到數(shù)十人,每天都有數(shù)十個(gè)版本更新。隨著開發(fā)規(guī)模的逐漸擴(kuò)大,在實(shí)際開發(fā)中陸續(xù)出現(xiàn)以下新問題:

(1)代碼管理難度及學(xué)習(xí)成本增加。只有幾個(gè)人的開發(fā)團(tuán)隊(duì)可以用單一的SVN等工具管理代碼,當(dāng)團(tuán)隊(duì)增加后,在代碼分支、代碼權(quán)限等方面出現(xiàn)不可調(diào)和的矛盾。而且,新人學(xué)習(xí)需要花費(fèi)大量時(shí)間,極易因?yàn)殄e(cuò)誤的操作導(dǎo)致混亂,嚴(yán)重阻滯軟件的開發(fā)進(jìn)程。

(2)模塊化開發(fā)難度劇增。對于大型通用CFD軟件,功能復(fù)雜,模塊數(shù)量多,往往需要根據(jù)不同的開發(fā)小組將軟件分解為不同的模塊,各模塊以靜態(tài)庫或動(dòng)態(tài)庫的形式在其他團(tuán)隊(duì)中得到體現(xiàn),而單一版本的軟件代碼難以勝任。

(3)人工成本增加。大型通用CFD軟件被分解為若干個(gè)模塊后,在每次測試前,需要人工部署、人工集成,既增加人工成本又容易出錯(cuò)。而且,在開發(fā)過程中,軟件代碼的變動(dòng)很大,往往以前驗(yàn)證確認(rèn)的算例在經(jīng)過一些版本的升級(jí)之后又需要重新進(jìn)行驗(yàn)證確認(rèn),人工成本太大,基本屬于重復(fù)性工作,效率低下。

(4)缺陷率增加。由于代碼的更新迭代的速度很快,錯(cuò)誤的累積和糾纏將導(dǎo)致錯(cuò)誤更加隱蔽,由此產(chǎn)生的代碼停滯將直接阻礙軟件開發(fā)的進(jìn)度,造成軟件開發(fā)周期的失控。多人并行開發(fā)導(dǎo)致多樣性的錯(cuò)誤源,每個(gè)人引入的錯(cuò)誤會(huì)直接或間接地導(dǎo)致其他人開發(fā)出現(xiàn)問題,并且很難找到問題所在。

大型軟件的開發(fā)不同于小作坊式個(gè)體勞動(dòng),是有組織有計(jì)劃的群體活動(dòng)。針對上述問題,“風(fēng)雷”軟件開發(fā)過程中不僅需要ATP,還需要一個(gè)持續(xù)集成平臺(tái)(Automated Continuous Integration,ACI)從事代碼集成管理工作,并且將二者相結(jié)合起來,形成一個(gè)完善可靠的風(fēng)雷軟件開發(fā)管理環(huán)境,提升軟件開發(fā)的質(zhì)量與效率。

在文獻(xiàn)[18]中已經(jīng)對“風(fēng)雷”軟件自動(dòng)化測試平臺(tái)ATP進(jìn)行了詳細(xì)介紹,本文主要介紹持續(xù)集成平臺(tái)ACI的設(shè)計(jì)開發(fā)以及和ATP一起形成的CFD軟件開發(fā)環(huán)境。

1 開發(fā)環(huán)境設(shè)計(jì)

1.1 總體設(shè)計(jì)

開發(fā)環(huán)境是開發(fā)團(tuán)隊(duì)與軟件之間的紐帶,基于該環(huán)境,開發(fā)團(tuán)隊(duì)實(shí)施編碼、版本管理、集成、測試,通過建立規(guī)范統(tǒng)一的CFD軟件代碼開發(fā)流程,不斷地將開發(fā)成員的工作集成到軟件主體,經(jīng)過嚴(yán)格的代碼審核后提交進(jìn)入代碼庫,然后經(jīng)過自動(dòng)構(gòu)建、自動(dòng)部署、自動(dòng)測試等過程,形成可供直接使用的CFD軟件產(chǎn)品,并將整個(gè)過程中出現(xiàn)的問題及時(shí)地反饋給開發(fā)人員,開發(fā)人員及時(shí)解決此次集成中出現(xiàn)的錯(cuò)誤后重新進(jìn)行提交集成,從而形成一個(gè)不斷修正、不斷完善的良性開發(fā)流程。該環(huán)境由自動(dòng)化持續(xù)集成平臺(tái)(ACI)、自動(dòng)化測試平臺(tái)(ATP)組成(如圖1)。

自動(dòng)化持續(xù)集成平臺(tái)(ACI),基于開源代碼管理工具Gitlab,負(fù)責(zé)軟件模塊(團(tuán)隊(duì))管理、代碼版本管理(提交、審核、合并、集成)。CFD軟件往往由多個(gè)模塊組成,PHengLEI軟件由前處理、解算器、后處理三大模塊構(gòu)成,各模塊具有其獨(dú)立性,但模塊之間又存在一定依賴性。每個(gè)模塊在開發(fā)的過程中都有相應(yīng)的開發(fā)團(tuán)隊(duì)。由于每個(gè)模塊所需要開發(fā)的功能復(fù)雜,且需要開發(fā)人員具備較高專業(yè)水平的CFD理論基礎(chǔ),因此團(tuán)隊(duì)中的開發(fā)人員只能專注于某一個(gè)功能模塊的開發(fā),而無多余的時(shí)間精力關(guān)注其他功能模塊,由此,團(tuán)隊(duì)中的密切協(xié)作至關(guān)重要。由于復(fù)雜的CFD功能模塊開發(fā)周期較長而且模塊之間存在相互依賴性,所以采用的自動(dòng)化持續(xù)集成方案既要考慮到集成的長期性和穩(wěn)定性,也要關(guān)注模塊的依賴性,盡早發(fā)現(xiàn)問題盡早解決,保證軟件的整體開發(fā)進(jìn)度。為此,ACI中構(gòu)建了“團(tuán)隊(duì)—模塊—庫”的對應(yīng)關(guān)系,即,將開發(fā)團(tuán)隊(duì)分成不同的組,開發(fā)對應(yīng)的功能模塊。例如,圖1中列出了2組,分別對應(yīng)開發(fā)API模塊和CFD模塊。

圖1 平臺(tái)總體方案設(shè)計(jì)圖

自動(dòng)化測試平臺(tái)(ATP),負(fù)責(zé)對ACI集成之后的軟件進(jìn)行測試。團(tuán)隊(duì)開發(fā)過程中會(huì)頻繁提交代碼,通過ATP控制每次提交代碼的質(zhì)量,減小錯(cuò)誤率。

1.2 自動(dòng)化持續(xù)集成平臺(tái)ACI

持續(xù)集成被認(rèn)為是一種基于某些變化,對軟件系統(tǒng)進(jìn)行的經(jīng)常性的構(gòu)建活動(dòng)。從人與人的交互性方面,持續(xù)集成又被認(rèn)為是軟件開發(fā)團(tuán)隊(duì)所采用的整個(gè)開發(fā)流程及活動(dòng),它強(qiáng)調(diào)開發(fā)團(tuán)隊(duì)與軟件系統(tǒng)之間的互動(dòng)性,其典型特征在于“持續(xù)”與“自動(dòng)化”。自動(dòng)化持續(xù)集成平臺(tái)(ACI)的功能是協(xié)同管理開發(fā)團(tuán)隊(duì)提交的分支或主干代碼,將其編譯、集成、部署,得到滿足需求的軟件產(chǎn)品。在一個(gè)持續(xù)集成周期內(nèi),主要包括:

(1)部件管理。基于“團(tuán)隊(duì)—模塊—庫”模式,將PHengLEI軟件分解為多個(gè)模塊,主要包含CFD解算器和應(yīng)用程序編程接口(API)兩個(gè)部分,API自底而上又分為Common、DataStruct、Math層,Data、MPI、Toolkit層,和Geometry、IO層,每個(gè)層次分屬不同的開發(fā)團(tuán)隊(duì),一個(gè)模塊對應(yīng)一到兩個(gè)開發(fā)人員。開發(fā)人員提交代碼后,能編譯所屬的代碼庫,并通過“鉤子”,將歸屬其他團(tuán)隊(duì)的模塊類庫,拉取到環(huán)境并鏈接,生成可執(zhí)行程序。

圖2 風(fēng)雷類庫圖

(2)分支管理。考慮到集成的長期性和穩(wěn)定性,代碼由分支和主干組成,開發(fā)人員在分支上從事開發(fā)工作。只有通過自動(dòng)化測試平臺(tái)ATP測試的分支,才能被合并到主干,作為發(fā)布版本。多人團(tuán)隊(duì)開發(fā)軟件過程中,分支與主干的管理尤為重要,直接關(guān)系到成員間的工作是否能協(xié)同開發(fā),模塊間的依賴性問題是否能夠及時(shí)解決。圖3是風(fēng)雷軟件持續(xù)集成方案中的分支管理情況,分為主分支(即主干)、功能分支和Bug分支。開發(fā)者在功能分支上進(jìn)行開發(fā),向所對應(yīng)的模塊庫中提交代碼,一周內(nèi)要合并一次他人代碼,及時(shí)獲得其他成員的貢獻(xiàn),并及時(shí)發(fā)現(xiàn)模塊的依賴性問題,盡早解決,當(dāng)完成給定的功能時(shí),可向主干合并。在代碼合并過程中,采用令牌獨(dú)占機(jī)制,只有當(dāng)令牌為可用狀態(tài)時(shí),才能執(zhí)行合并操作,以避免合并產(chǎn)生沖突。Bug分支主要用于解決開發(fā)過程中發(fā)現(xiàn)的缺陷,分支的生命周期由Bug的發(fā)現(xiàn)和解決決定。為保證代碼質(zhì)量,在分支提交、代碼合并前,都需經(jīng)ATP執(zhí)行測試,以保證集成的穩(wěn)定性。

圖3 風(fēng)雷軟件開發(fā)持續(xù)集成方案

1.3 自動(dòng)化測試平臺(tái)ATP

軟件開發(fā)過程主要包含4個(gè)層次的測試:處于開發(fā)階段的開發(fā)測試與Alpha測試、質(zhì)量確認(rèn)階段的確認(rèn)測試、針對用戶的Beta測試(圖4)。本文的自動(dòng)化測試平臺(tái)(ATP)指的是開發(fā)測試。

圖4 軟件測試層次圖

自動(dòng)化測試平臺(tái)(ATP)的功能是,對由自動(dòng)化持續(xù)集成平臺(tái)ACI集成的可執(zhí)行程序,開展CFD算例測試。新加代碼功能的同時(shí),要添加對應(yīng)的可覆蓋的算例,而每次新提交的代碼,不應(yīng)對已有算例結(jié)果造成影響。對ATP算例庫中的每個(gè)CFD算例,設(shè)定標(biāo)準(zhǔn)“答案”后,每次提交代碼編譯的可執(zhí)行程序的計(jì)算結(jié)果,應(yīng)與標(biāo)準(zhǔn)“答案”一致。根據(jù)測試對象的粒度粗細(xì),可將CFD軟件測試分為單元測試、集成測試與系統(tǒng)測試,其測試內(nèi)容與一般軟件測試存在一定差異。

(1)單元測試,是為了驗(yàn)證一個(gè)代碼單元的功能,一般與運(yùn)行環(huán)境隔離,例如針對一個(gè)獨(dú)立的類或一組相關(guān)函數(shù)的測試。其外部依賴一般集中在函數(shù)級(jí)別的獨(dú)立操作與調(diào)用上,可以提供更加全面的底層代碼覆蓋率和測試時(shí)間段,測試頻繁,幾乎每次代碼進(jìn)行了更改都會(huì)進(jìn)行單元測試。CFD軟件中的單元測試可以是限制器、通量格式、數(shù)據(jù)結(jié)構(gòu)、文件I/O等獨(dú)立的模塊、函數(shù)和類。在CFD軟件開發(fā)中,代碼單元的功能實(shí)現(xiàn)需要具備CFD基礎(chǔ)理論知識(shí)才能完成,所以單元測試算例一般由CFD軟件開發(fā)人員來編寫;每個(gè)單元測試算例評價(jià)內(nèi)容不一,需要視情況而定,評價(jià)參考量包含但不限于單個(gè)變量、向量、矩陣等不同數(shù)據(jù),例如網(wǎng)格點(diǎn)線面的連接關(guān)系、壁面距離的計(jì)算結(jié)果、通量的計(jì)算結(jié)果等;參考量與標(biāo)準(zhǔn)“答案”要保持完全一致,才能視為單元測試通過。

(2)集成測試,用于測試各個(gè)模塊之間的集成,驗(yàn)證兩個(gè)或多個(gè)模塊之間的交互,與單元測試相比,有著更大的范疇且運(yùn)行所需時(shí)間也更久。單元測試會(huì)嘗試達(dá)到更大的代碼覆蓋率,而集成測試主要目標(biāo)是驗(yàn)證指定模塊間的交互。其執(zhí)行頻率需要加以控制。CFD軟件中,集成測試主要是指一些簡單的CFD算例,以測試軟件的獨(dú)立功能模塊是否正常運(yùn)行,能否運(yùn)行一些CFD基本功能,如前置處理、只有數(shù)十步迭代的簡單CFD算例、重啟續(xù)算等。主要定性地考察代碼的更改是否對基本功能產(chǎn)生影響,評價(jià)標(biāo)準(zhǔn)是殘差和氣動(dòng)力的變化范圍,通常通過計(jì)算其與標(biāo)準(zhǔn)“答案”的相對誤差的平均值和方差來反映影響大小。

(3)系統(tǒng)測試,針對大型標(biāo)模的計(jì)算算例進(jìn)行驗(yàn)證確認(rèn)。系統(tǒng)測試在一個(gè)完全真實(shí)的層次運(yùn)行,驗(yàn)證系統(tǒng)作為一個(gè)整體是如何工作的。通常一個(gè)系統(tǒng)測試的完成需要幾天甚至更長的時(shí)間,要根據(jù)算例大小、網(wǎng)格大小來確定。在計(jì)算完成后,將計(jì)算結(jié)果和實(shí)驗(yàn)值或者其他計(jì)算結(jié)果進(jìn)行對比,并采用了Oberkampf提出的一種不確定度尺度進(jìn)行初步的驗(yàn)證工作[18-19],該不確定度的表達(dá)式為:

式中,I是需進(jìn)行確認(rèn)的位置點(diǎn)的總數(shù),y(xi)與Y(xi)分別是位置xi處的計(jì)算與實(shí)驗(yàn)值,后者實(shí)際以平均值代替。V越接近1,實(shí)驗(yàn)值與計(jì)算值的一致性越好。

表1對比了三類測試的區(qū)別,主要表現(xiàn)為測試對象不同、持續(xù)時(shí)間不同、所關(guān)注的對象不同、測試頻率與時(shí)間不同。目前,風(fēng)雷軟件開發(fā)環(huán)境有115個(gè)集成測試,93個(gè)系統(tǒng)測試。單元測試還在不斷豐富中。集成測試每天運(yùn)行10余次,每次測試控制在5 min以內(nèi)。系統(tǒng)測試算例包含了從低速到高超聲速流動(dòng)、二維到三維、結(jié)構(gòu)/非結(jié)構(gòu)網(wǎng)格的標(biāo)模算例,在集群上每周五晚上運(yùn)行一次,需要約25萬CPU機(jī)時(shí)。

表1 三類測試的區(qū)別

自動(dòng)化測試平臺(tái)基于QT開發(fā),圖5是目前開發(fā)完成的界面,主要包含:算例管理模塊、測試管理模塊、結(jié)果分析和查詢模塊。

圖5 自動(dòng)化測試的界面

2 應(yīng)用效果

國家數(shù)值風(fēng)洞工程“風(fēng)雷”軟件開發(fā)過程中,通過持續(xù)集成與測試平臺(tái)構(gòu)建完善的軟件開發(fā)環(huán)境,在加快軟件敏捷迭代開發(fā)效率的過程中發(fā)揮重要的作用。圖6~圖9是平臺(tái)自動(dòng)生成的統(tǒng)計(jì)數(shù)據(jù)圖,對“風(fēng)雷”軟件開發(fā)過程完成的各類信息進(jìn)行了統(tǒng)計(jì),以分析開發(fā)環(huán)境對軟件開發(fā)的促進(jìn)作用。

從每月提交代碼統(tǒng)計(jì)看(圖6),2019年度共提交了3557次代碼,其中3月份次數(shù)最多達(dá)到524次,平均每月提交約250次;測試總出錯(cuò)為1700次,達(dá)到總提交次數(shù)的47.79%。通過開發(fā)環(huán)境,可清晰地展示開發(fā)團(tuán)隊(duì)在不同時(shí)間段的代碼開發(fā)效率,及時(shí)發(fā)現(xiàn)、糾正代碼缺陷問題,保證軟件質(zhì)量的同時(shí)能進(jìn)一步促進(jìn)軟件開發(fā)效率。

圖6 2019年每月代碼提交次數(shù)及出錯(cuò)次數(shù)

圖7進(jìn)一步對導(dǎo)致錯(cuò)誤的原因進(jìn)行了細(xì)化,將錯(cuò)誤類型分為鏈接錯(cuò)誤、編譯錯(cuò)誤和測試錯(cuò)誤三種??梢钥吹?,代碼錯(cuò)誤主要是來源于3級(jí)測試,其次是編譯錯(cuò)誤,鏈接錯(cuò)誤最少。通過自動(dòng)識(shí)別并對錯(cuò)誤進(jìn)行分類,有利于開發(fā)人員盡早發(fā)現(xiàn)并解決問題。軟件開發(fā)過程中,測試是不可缺少的一環(huán)。將測試和開發(fā)融合在一起,開展自動(dòng)化測試有利于進(jìn)一步提高軟件開發(fā)效率和軟件質(zhì)量。

圖7 2019年每月糾正問題分布情況

為了分析代碼錯(cuò)誤來源,提高團(tuán)隊(duì)開發(fā)水平,從單個(gè)開發(fā)人員角度出發(fā),分析了給定時(shí)間段內(nèi),不同開發(fā)人員的代碼錯(cuò)誤率(圖8)。通過提交代碼次數(shù)和錯(cuò)誤率的統(tǒng)計(jì),可清晰統(tǒng)計(jì)開發(fā)團(tuán)隊(duì)中每個(gè)開發(fā)人員的提交次數(shù)、錯(cuò)誤率。

圖8 2019年1月-2020年4月每人提交代碼次數(shù)及錯(cuò)誤率統(tǒng)計(jì)

開發(fā)環(huán)境除了要保證代碼的正確性,還要分析CFD計(jì)算效率。對給定的算例,統(tǒng)計(jì)了不同版本軟件的CPU墻上計(jì)算時(shí)間變化情況(圖9)。圖中橫坐標(biāo)是解算器版本信息,縱坐標(biāo)是CPU墻上時(shí)間??梢钥吹?,絕大部分版本的計(jì)算時(shí)間都差異不大,僅有少數(shù)版本因錯(cuò)誤引入導(dǎo)致計(jì)算時(shí)間跳躍。同時(shí),從第1300版本開始,由于算法改進(jìn),計(jì)算時(shí)間減少。通過記錄不同版本解算器的計(jì)算效率,嚴(yán)格控制不同開發(fā)人員提交的代碼對于主干的影響,保證解算器的計(jì)算效率。

圖9 2018年1月-2019年3月算例30p30n計(jì)算時(shí)間變化

通過ACI&ATP平臺(tái),不僅有利于開發(fā)人員進(jìn)行代碼的提交和集成,完成代碼的統(tǒng)一管理,還能對代碼質(zhì)量起到“監(jiān)督”作用。通過及時(shí)監(jiān)控,統(tǒng)計(jì)研發(fā)過程中的各類數(shù)據(jù),可掌控軟件研發(fā)的細(xì)節(jié)和進(jìn)度,保證軟件質(zhì)量,提高軟件開發(fā)效率。

3 總結(jié)與展望

針對國家數(shù)值風(fēng)洞“風(fēng)雷”軟件團(tuán)隊(duì)開發(fā)的需要,設(shè)計(jì)研發(fā)了自動(dòng)化持續(xù)集成平臺(tái)(ACI)與測試平臺(tái)(ATP)。通過建立規(guī)范統(tǒng)一的CFD軟件代碼開發(fā)流程,持續(xù)地將CFD軟件開發(fā)成員的工作集成到軟件,經(jīng)過自動(dòng)構(gòu)建、自動(dòng)測試、自動(dòng)部署等過程,形成可供直接使用的CFD軟件產(chǎn)品,并將整個(gè)過程中出現(xiàn)的問題及時(shí)地反饋給開發(fā)人員,開發(fā)人員及時(shí)解決此次集成中出現(xiàn)的錯(cuò)誤后重新進(jìn)行提交集成,從而形成一個(gè)不斷修正不斷完善的良性的軟件開發(fā)流程。結(jié)合ACI&ATP平臺(tái),構(gòu)建了一個(gè)完善可靠的CFD軟件開發(fā)環(huán)境,對軟件開發(fā)的質(zhì)量與效率提升給予保證。

猜你喜歡
算例開發(fā)人員軟件測試
軟件測試方向人才培養(yǎng)“1+X”融合研究
大數(shù)據(jù)背景下軟件測試技術(shù)的發(fā)展
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
提高小學(xué)低年級(jí)數(shù)學(xué)計(jì)算能力的方法
關(guān)于 Web 應(yīng)用系統(tǒng)的軟件測試的研究
論怎樣提高低年級(jí)學(xué)生的計(jì)算能力
試論在小學(xué)數(shù)學(xué)教學(xué)中如何提高學(xué)生的計(jì)算能力
后悔了?教你隱藏開發(fā)人員選項(xiàng)
軟件測試發(fā)展現(xiàn)狀及前景的探討
三星SMI擴(kuò)展Java論壇 開發(fā)人員可用母語
临洮县| 灵川县| 华池县| 广东省| 浙江省| 小金县| 霍林郭勒市| 武安市| 濉溪县| 高唐县| 贵德县| 浪卡子县| 邮箱| 麻阳| 根河市| 姜堰市| 岢岚县| 洛扎县| 营山县| 确山县| 浦城县| 马公市| 定远县| 娱乐| 敦煌市| 武城县| 调兵山市| 科技| 永丰县| 社会| 若尔盖县| 木兰县| 增城市| 手机| 四子王旗| 太康县| 海口市| 陕西省| 沅陵县| 临泉县| 手游|