亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2020-12-21 14:02:46郭勇顏曾志春賴(lài)相成

        何 磊, 郭勇顏, 曾志春, 賴(lài)相成, 趙 鐘

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

        0 引 言

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

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

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

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

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

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

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

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

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

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

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

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

        (1)代碼管理難度及學(xué)習(xí)成本增加。只有幾個(gè)人的開(kāi)發(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)重阻滯軟件的開(kāi)發(fā)進(jìn)程。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        圖2 風(fēng)雷類(lèi)庫(kù)圖

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

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

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

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

        圖4 軟件測(cè)試層次圖

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

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

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

        (3)系統(tǒng)測(cè)試,針對(duì)大型標(biāo)模的計(jì)算算例進(jìn)行驗(yàn)證確認(rèn)。系統(tǒng)測(cè)試在一個(gè)完全真實(shí)的層次運(yùn)行,驗(yàn)證系統(tǒng)作為一個(gè)整體是如何工作的。通常一個(gè)系統(tǒng)測(cè)試的完成需要幾天甚至更長(zhǎng)的時(shí)間,要根據(jù)算例大小、網(wǎng)格大小來(lái)確定。在計(jì)算完成后,將計(jì)算結(jié)果和實(shí)驗(yàn)值或者其他計(jì)算結(jié)果進(jìn)行對(duì)比,并采用了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對(duì)比了三類(lèi)測(cè)試的區(qū)別,主要表現(xiàn)為測(cè)試對(duì)象不同、持續(xù)時(shí)間不同、所關(guān)注的對(duì)象不同、測(cè)試頻率與時(shí)間不同。目前,風(fēng)雷軟件開(kāi)發(fā)環(huán)境有115個(gè)集成測(cè)試,93個(gè)系統(tǒng)測(cè)試。單元測(cè)試還在不斷豐富中。集成測(cè)試每天運(yùn)行10余次,每次測(cè)試控制在5 min以?xún)?nèi)。系統(tǒng)測(cè)試算例包含了從低速到高超聲速流動(dòng)、二維到三維、結(jié)構(gòu)/非結(jié)構(gòu)網(wǎng)格的標(biāo)模算例,在集群上每周五晚上運(yùn)行一次,需要約25萬(wàn)CPU機(jī)時(shí)。

        表1 三類(lèi)測(cè)試的區(qū)別

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

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

        2 應(yīng)用效果

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

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

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

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

        圖7 2019年每月糾正問(wèn)題分布情況

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

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

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

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

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

        3 總結(jié)與展望

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

        国产亚洲一区二区精品| 亚洲一区二区观看播放| 欧美日韩国产在线观看免费| 久久精品国产亚洲av热九| 风韵人妻丰满熟妇老熟| 手机福利视频| 人与嘼av免费| 99精品国产成人一区二区在线| 午夜福利视频一区二区二区| 中文字幕av一区二区三区人妻少妇| 亚洲日韩欧美国产高清αv| 午夜日韩视频在线观看| 91九色最新国产在线观看| 欧美老熟妇喷水| 国产成人精品三级91在线影院| 国产亚洲午夜高清国产拍精品不卡| 国产一品二品精品在线| 精品久久久久久无码人妻热| 久久精品国产丝袜| 一区二区亚洲精美视频| 欧美成人精品第一区| 99久久久精品免费观看国产| 国产美女高潮流白浆在线观看| 亚洲成人av一区二区| 中文字幕人妻熟女人妻| 大地资源中文第三页| 永久免费在线观看蜜桃视频| 精品久久亚洲中文字幕| 久久九九国产精品怡红院| 91精品91| 日韩精品一区二区亚洲观看av| 男人边做边吃奶头视频| 五月婷一本到五月天| 无码a∨高潮抽搐流白浆| 青草蜜桃视频在线观看| 中文字幕av素人专区| 好吊妞无缓冲视频观看| 激情五月婷婷综合| av网站韩日在线观看免费| 色偷偷888欧美精品久久久| 色综合无码av网站|