• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于合約逐級(jí)求解的系統(tǒng)測(cè)試用例生成

    2020-04-24 03:07:38肖安洪吳志強(qiáng)
    關(guān)鍵詞:前置條件測(cè)試用例合約

    曹 源,劉 杰+,肖安洪,吳志強(qiáng),陳 智,曾 輝

    (1.南華大學(xué) 計(jì)算機(jī)學(xué)院,湖南 衡陽(yáng) 421001;2.中國(guó)核動(dòng)力研究設(shè)計(jì)院 核反應(yīng)堆系統(tǒng)設(shè)計(jì)技術(shù)重點(diǎn)實(shí)驗(yàn)室,四川 成都 610041)

    0 引 言

    為保障核電DCS軟件系統(tǒng)可靠性[1],降低人力成本,提升系統(tǒng)研發(fā)效率,研究測(cè)試用例自動(dòng)生成方法。核電DCS軟件系統(tǒng)在高安全性應(yīng)用開發(fā)環(huán)境SCADE(safety-critical application development environment)平臺(tái)上,基于基礎(chǔ)組件開發(fā),由SCADE平臺(tái)自動(dòng)生成系統(tǒng)的源代碼。源代碼將被燒錄到芯片中,在軟件系統(tǒng)使用、維護(hù)過程中,未按照標(biāo)準(zhǔn)操作,會(huì)使模型與代碼之間偏離[2]。導(dǎo)致軟件系統(tǒng)未能實(shí)現(xiàn)模型預(yù)期功能。為此需要對(duì)源代碼生成的軟件系統(tǒng)進(jìn)行測(cè)試。常用的方法是根據(jù)反映整個(gè)系統(tǒng)行為特征的系統(tǒng)合約模型的求解[3,4],生成系統(tǒng)的測(cè)試用例。但合約模型應(yīng)用到工程軟件系統(tǒng)時(shí),存在求解難度大、耗時(shí)多的問題。

    針對(duì)此類問題,本文提出通過分析組件間依賴關(guān)系,得到組件處理順序,從而逐級(jí)計(jì)算組件合約的方法。具有如下優(yōu)勢(shì):①軟件系統(tǒng)模型基于具備可靠性的基礎(chǔ)組件組裝,結(jié)合合約模型可以實(shí)現(xiàn)在無源碼的情況下生成測(cè)試用例集,方法適用范圍廣。②方法采用逐級(jí)計(jì)算基礎(chǔ)組件合約的方法,依照組件計(jì)算順序逐級(jí)求解,規(guī)避了系統(tǒng)合約求解NP難問題。③方法應(yīng)用于核電廠DCS軟件的系統(tǒng)級(jí)的測(cè)試用例生成,降低當(dāng)前人工設(shè)計(jì)測(cè)試用例由于個(gè)人因素制約產(chǎn)生的測(cè)試充分性影響,降低測(cè)試人員負(fù)擔(dān),且增加了自動(dòng)化測(cè)試程度。將方法應(yīng)用于核電反應(yīng)堆堆芯測(cè)量系統(tǒng),驗(yàn)證方法的可行性。

    1 基于合約的測(cè)試用例生成方法

    1.1 應(yīng)用背景概述

    核電DCS軟件系統(tǒng)在SCADE平臺(tái)上,采用基于組件的開發(fā)方法進(jìn)行開發(fā)。SCADE的基礎(chǔ)組件是實(shí)現(xiàn)數(shù)據(jù)和信號(hào)處理的基本單位,如量程轉(zhuǎn)換組件MRC,就完成了對(duì)滿足界定上限和下限的輸入信號(hào)進(jìn)行線性轉(zhuǎn)換,并按參數(shù)要求限值輸出的工作。這些組件包括輸入信號(hào)、輸出信號(hào)以及模塊設(shè)定參數(shù)等輸入輸出接口,例如MRC的輸入信號(hào)確定了實(shí)際信號(hào)輸入并進(jìn)行故障設(shè)定,輸出信號(hào)確定了實(shí)際信號(hào)輸出并監(jiān)測(cè)信號(hào)值域等,參數(shù)確定了量程轉(zhuǎn)換組件的工作模式。

    組件被正確執(zhí)行的特征可通過組件的前置條件、后置條件及不變式予以限定[5]。調(diào)用方按照前置條件生成合法輸入。執(zhí)行方依照后置條件保證輸出數(shù)據(jù)符合預(yù)期要求。不變式是系統(tǒng)生命周期中應(yīng)始終滿足的條件。這些前置條件、后置條件及不變式與組件合約存在對(duì)應(yīng)關(guān)系。組件合約即為反應(yīng)組件正確執(zhí)行時(shí)輸入信號(hào)、輸出信號(hào)及參數(shù)接口的邏輯關(guān)系。邏輯關(guān)系采用的是命題邏輯公式進(jìn)行描述。根據(jù)軟件系統(tǒng)模型生成組件合約,通過對(duì)命題邏輯公式的求解,從而得到正確的輸入樣例和期望輸出值,即測(cè)試用例。根據(jù)測(cè)試用例驗(yàn)證源代碼生成后的軟件系統(tǒng)是否存在錯(cuò)誤。在前期的研究過程中分析軟件系統(tǒng)模型生成了基礎(chǔ)組件的合約模型[6]。

    完整的DCS軟件系統(tǒng)模型是由這些基礎(chǔ)組件通過連接組件間的輸入、輸出等信號(hào)線搭建而成。通過基礎(chǔ)組件間連接信號(hào)變量的映射轉(zhuǎn)換,可由基礎(chǔ)組件合約構(gòu)建出完整的系統(tǒng)合約。當(dāng)組件間存在依賴關(guān)系時(shí),則合約關(guān)系更為復(fù)雜,命題邏輯公式求解難度增大[7]。如果系統(tǒng)由成百上千個(gè)基礎(chǔ)組件構(gòu)成,則系統(tǒng)合約公式巨大,求解是一個(gè)NP完全問題。因此一個(gè)有效的方法就是依據(jù)信號(hào)處理過程,逐級(jí)分析基礎(chǔ)組件合約,計(jì)算單個(gè)組件的期望輸入輸出,最后得到系統(tǒng)的輸入輸出。逐級(jí)分析組件的基本要求就是要不違背組件的依賴關(guān)系。DCS軟件系統(tǒng)的組件依賴就是對(duì)組件信號(hào)處理的先后次序。如在第3章的反應(yīng)堆堆芯測(cè)量系統(tǒng)中的計(jì)算“溫差值”的SUM組件執(zhí)行,需要求最大值組件MAX和求最小值組件MIN。這說明SUM組件依賴組件MAX和組件MIN。

    因此組件測(cè)試用例生成需要確認(rèn)組件的測(cè)試順序。對(duì)于復(fù)雜系統(tǒng)的測(cè)試順序確認(rèn)已經(jīng)有許多的研究方案,張艷梅等[8]提出基于圖論和基于搜索兩大類別的測(cè)試順序確認(rèn)方法?;趫D論的方法是通過分析依賴關(guān)系生成有向結(jié)構(gòu)圖,再對(duì)圖中的節(jié)點(diǎn)進(jìn)行排序,進(jìn)而生成測(cè)試順序的過程。其中一個(gè)重要的研究方向就是針對(duì)有向結(jié)構(gòu)圖中存在的閉環(huán)問題,進(jìn)行破除環(huán)路的處理,再進(jìn)一步進(jìn)行測(cè)試順序確認(rèn)[9]。Zhang等[10]提出,刪除弱依賴關(guān)系破除環(huán)路的處理方案。其中基于搜索的方法是制定期望測(cè)試順序標(biāo)準(zhǔn),通過智能優(yōu)化算法,不斷進(jìn)化初始種群,進(jìn)而得到測(cè)試順序的過程。這兩類測(cè)試順序確認(rèn)方法被廣泛的應(yīng)用于各個(gè)領(lǐng)域?,F(xiàn)今大多數(shù)研究方向是針對(duì)于復(fù)雜的軟件系統(tǒng),通過減少測(cè)試樁數(shù)目及降低測(cè)試樁復(fù)雜度來降低測(cè)試成本。而開發(fā)測(cè)試樁本身耗費(fèi)大量成本,且開發(fā)過程中樁模塊可能會(huì)產(chǎn)生新的錯(cuò)誤。

    核電DCS軟件系統(tǒng)的組件模型具有線性化、無環(huán)性、參數(shù)控制等特點(diǎn)。對(duì)于測(cè)試順序確認(rèn)問題,設(shè)計(jì)出一種本身具備簡(jiǎn)潔、高效、省時(shí)特點(diǎn),并能夠保證測(cè)試順序準(zhǔn)確無誤的基于拓?fù)涞慕M件計(jì)算順序算法。

    因此針對(duì)核電廠DCS系統(tǒng),提出了一種基于組件合約的自動(dòng)化測(cè)試用例生成方法。主要內(nèi)容包括組件間的依賴關(guān)系分析及組件計(jì)算順序確認(rèn)算法,逐級(jí)結(jié)合基礎(chǔ)組件合約要求,生成部分符合前置條件的測(cè)試用例輸入、及正確的參數(shù),按照組件計(jì)算順序執(zhí)行生成符合方法后置條件的期望輸出,通過判定是否滿足不變式,約簡(jiǎn)測(cè)試用例,從而自動(dòng)化生成符合所有合約的測(cè)試用例集。

    1.2 測(cè)試用例生成流程

    DCS軟件系統(tǒng)的設(shè)計(jì)圖通過組件定義系統(tǒng)功能實(shí)現(xiàn)。組件是一些獨(dú)立、可重用的功能的模塊[11]。設(shè)計(jì)圖可以得到由組件定義的DCS軟件系統(tǒng)的結(jié)構(gòu)模型。

    DCS軟件系統(tǒng)的設(shè)計(jì)圖描述了系統(tǒng)功能通過基礎(chǔ)組件實(shí)現(xiàn)的基本結(jié)構(gòu)。由此可以分析出,組件之間的依賴關(guān)系。這些依賴關(guān)系決定了,測(cè)試用例生成的順序關(guān)系。組件計(jì)算順序結(jié)合單個(gè)組件的基礎(chǔ)合約,使用組合測(cè)試工具(PICT)生成初始數(shù)據(jù),逐步計(jì)算出系統(tǒng)的測(cè)試用例。測(cè)試用例生成流程如圖1所示。

    圖1 測(cè)試用例生成流程

    定義1 結(jié)構(gòu)模型由<組件集合,組件依賴圖>構(gòu)成。組件集合構(gòu)造系統(tǒng)的基本功能模塊集合,組件依賴圖說明組件調(diào)用依賴關(guān)系。

    定義2 組件是一個(gè)<組件接口集,組件參數(shù)集,組件合約集>三元組。

    (1)組件接口集::<輸入接口集,輸出接口集>,每個(gè)組件存在一個(gè)組件接口集,組件接口集中存在若干個(gè)輸入接口和輸出接口。

    輸入/輸出參數(shù)::,組件接口集中存在若干個(gè)輸入、輸出參數(shù),其中value表示其值,可以是浮點(diǎn)數(shù)模擬量,也可以是二進(jìn)制值量;state表示狀態(tài),有且只有無故障和有故障兩種狀態(tài)。

    (2)組件參數(shù)集:每個(gè)組件存在一個(gè)組件參數(shù)集,參數(shù)集內(nèi)的不同參數(shù)值協(xié)助劃分組件不同的工作模式。如在第3章給出的報(bào)警信號(hào)跳變閾值SVAL,取值 {190,40,50,300}, 當(dāng)組件THC接收組件SUM輸出值value后,可根據(jù)value與SVAL值進(jìn)行比較,確認(rèn)溫差是否超越閾值,能否產(chǎn)生報(bào)警信號(hào)。

    (3)組件合約集::<參數(shù)合約,值合約,狀態(tài)合約>,每個(gè)組件具備一個(gè)組件合約集,組件合約集中有參數(shù)合約、值合約、狀態(tài)合約3種合約。

    參數(shù)合約是組件參數(shù)值(value)及組件參數(shù)間的約束條件;值合約是組件接口輸入數(shù)據(jù)、輸出數(shù)據(jù)值(value)的約束條件;狀態(tài)合約是組件接口輸入數(shù)據(jù)、輸出數(shù)據(jù)狀態(tài)(state)的約束條件。

    本文采用合約化理驗(yàn)證組件執(zhí)行的正確性。通過求解合約的命題邏輯公式得到期望測(cè)試用例集。組件合約集與前置條件、后置條件及不變式存在對(duì)應(yīng)關(guān)系。其中前置條件對(duì)應(yīng)輸入值合約及輸入狀態(tài)合約及參數(shù)合約中的參數(shù)值合約部分,輸入值合約通常將數(shù)據(jù)同參數(shù)值比較、或數(shù)值相互比較決定當(dāng)前數(shù)據(jù)滿足何種工作模式;后置條件對(duì)應(yīng)輸出值合約及輸出狀態(tài);不變式條件通常對(duì)應(yīng)參數(shù)合約中的參數(shù)值及參數(shù)間合約部分,組件合約對(duì)應(yīng)關(guān)系如圖2所示。

    圖2 組件合約對(duì)應(yīng)關(guān)系

    軟件系統(tǒng)中各組件成員間存在關(guān)系,當(dāng)組件需要借助另一個(gè)組件提供服務(wù)時(shí),稱組件間存在依賴關(guān)系[12]。組件之間的依賴關(guān)系導(dǎo)致信號(hào)變化產(chǎn)生連鎖反應(yīng),系統(tǒng)穩(wěn)定性受到組件間依賴關(guān)系的制約[13]。

    定義3 組件依賴:設(shè)CA、CB分別是DCS軟件系統(tǒng)中的兩個(gè)組件,CB依賴于CA,組件CA必須在組件CB前執(zhí)行,稱為存在組件依賴關(guān)系,則組件CA存在輸出接口OA,組件CB存在輸入接口IB。接口IB會(huì)接收到由接口OA中傳遞的信號(hào),并對(duì)信號(hào)進(jìn)行處理。前后組件主要傳遞兩種類型的信號(hào):

    (1)組件轉(zhuǎn)換狀態(tài):接口IB接收到接口OA中傳遞的信號(hào)后,僅發(fā)生狀態(tài)傳遞,由組件CA運(yùn)行至組件CB,則稱發(fā)生組件轉(zhuǎn)換狀態(tài)。

    (2)數(shù)據(jù)傳遞狀態(tài):組件CB中存在方法P,接口IB接收到接口OA中傳遞的信號(hào),其中包含方法P所需要使用的數(shù)據(jù),則稱發(fā)生數(shù)據(jù)傳遞狀態(tài)。

    根據(jù)這種依賴關(guān)系中的兩種狀態(tài),結(jié)合系統(tǒng)設(shè)計(jì)圖進(jìn)行靜態(tài)分析,構(gòu)建組件依賴圖。根據(jù)組件依賴圖使用基于拓?fù)涞慕M件計(jì)算順序算法,來進(jìn)行組件計(jì)算順序確認(rèn)。

    根據(jù)軟件系統(tǒng)模型的靜態(tài)分析生成基礎(chǔ)組件合約模型?;A(chǔ)組件合約模型提供了系統(tǒng)需要滿足的合約。依照組件合約對(duì)應(yīng)關(guān)系,給出包括組件輸入接口需要滿足的前置條件,組件輸出接口需要滿足的后置條件,以及在整個(gè)系統(tǒng)測(cè)試過程中需要滿足的不變式條件。

    通過確認(rèn)的組件計(jì)算順序來依次判定測(cè)試用例是否符合接口合約。使用PICT工具依照合約需求中的前置條件生成部分測(cè)試用例輸入及組件參數(shù)值。針對(duì)每個(gè)組件,依次根據(jù)滿足不同輸入接口前置條件的輸入數(shù)據(jù),選擇不同工作模式,對(duì)應(yīng)不同輸出接口后置條件計(jì)算輸出值。再對(duì)測(cè)試用例進(jìn)行不變式條件判定,不滿足不變式條件則約簡(jiǎn)測(cè)試用例,即從表中刪除該組測(cè)試用例,均滿足則保留測(cè)試用例,并執(zhí)行至測(cè)試順序中下一個(gè)組件,直至執(zhí)行至最后一個(gè)組件。最終獲得滿足所有合約的測(cè)試用例集。

    1.3 測(cè)試用例覆蓋準(zhǔn)則

    測(cè)試覆蓋準(zhǔn)則是對(duì)軟件測(cè)試充分性的度量[14]。由于基于合約化理論生成測(cè)試用例集,因此采用合約覆蓋率作為測(cè)試充分性的度量標(biāo)準(zhǔn)。組件的工作模式由前置條件的輸入值合約部分,結(jié)合組件參數(shù)進(jìn)行劃分,工作模式與后置條件存在一一對(duì)應(yīng)關(guān)系,因此將后置條件的覆蓋情況作為測(cè)試用例覆蓋標(biāo)準(zhǔn)能夠很好反映出軟件系統(tǒng)工作模式的覆蓋情況,給出合約覆蓋率作為測(cè)試用例覆蓋準(zhǔn)則:

    定義4 合約覆蓋率CC

    (1)

    2 組件合約逐級(jí)求解技術(shù)

    合約逐級(jí)求解技術(shù)可分為兩大部分工作。第一部分是組件計(jì)算順序生成算法,根據(jù)分析得到的組件依賴圖,使用組件計(jì)算順序算法對(duì)組件進(jìn)行排序處理,最終得到組件計(jì)算順序;第二部分是合約逐級(jí)求解測(cè)試用例生成算法,分為組件初始數(shù)據(jù)生成算法和組件處理算法,組件初始數(shù)據(jù)生成算法依照合約需求中的前置條件生成具有非數(shù)據(jù)傳遞狀態(tài)的輸入值、輸入狀態(tài)及組件參數(shù)值;組件處理算法則通過前置條件、后置條件和不變式條件按照組件計(jì)算順序,對(duì)組件逐級(jí)處理,求解輸出值,約簡(jiǎn)測(cè)試用例,最終生成滿足所有合約的測(cè)試用例集。

    2.1 組件計(jì)算順序生成算法

    為了確保SCADE系統(tǒng)組件間生成的測(cè)試數(shù)據(jù)的準(zhǔn)確性,需要對(duì)組件的測(cè)試順序進(jìn)行確認(rèn)。根據(jù)所構(gòu)建的組件依賴圖,來對(duì)組件計(jì)算順序進(jìn)行排序。針對(duì)組件依賴圖為有向無環(huán)圖的情況下進(jìn)行討論。拓?fù)渑判蚰軌蛴杉现械钠虻玫饺?。而有向無環(huán)圖能夠表示具有依賴關(guān)系的頂點(diǎn)集。有向無環(huán)圖通過拓?fù)渑判蚰軌蛏梢唤M序列。我們僅保證具有依賴關(guān)系的組件,被依賴的組件需在依賴組件前執(zhí)行,由此提出一種基于拓?fù)涞慕M件計(jì)算順序算法。

    設(shè)G(C,E) 為某有向無環(huán)圖,圖中一個(gè)頂點(diǎn)代表一個(gè)組件, C={C1,C2,…Cn},E={e1,e2,…em}, 某個(gè)頂點(diǎn)的出度表示該組件的輸入接口共連接了多少個(gè)組件(組件數(shù)≥0)的輸出接口,表明這個(gè)組件所依賴的組件數(shù)量。某個(gè)頂點(diǎn)的入度表示該組件的輸出接口共連接了多少個(gè)組件(組件數(shù)≥0)的輸入接口,表明這個(gè)組件被依賴數(shù)量。頂點(diǎn)CA,CB∈C, 若存在有向邊ek=, 則表示組件CA與組件CB存在組件依賴關(guān)系,組件CA必須在組件CB前執(zhí)行。

    具體流程如下:

    (1)輸入所有組件對(duì)象及組件依賴圖G;

    (2)建立數(shù)組deg記錄圖中每個(gè)組件節(jié)點(diǎn)出度數(shù);

    (3)建立隊(duì)列que添加出度數(shù)為0的組件節(jié)點(diǎn);

    (4)建立空序列order,在隊(duì)列不為空時(shí)從隊(duì)列中取出頭節(jié)點(diǎn)放入序列末尾,并將此組件節(jié)點(diǎn)的后繼節(jié)點(diǎn)出度數(shù)均減1;

    (5)后繼節(jié)點(diǎn)出度數(shù)為0時(shí),排入隊(duì)列末尾,等待序列召喚,直至將所有組件計(jì)算順序排列完畢,輸出組件計(jì)算順序。算法偽代碼如下:

    算法1:組件計(jì)算順序算法

    輸入:組件依賴圖G

    輸出:組件計(jì)算順序

    (1)建立新圖G

    (2)建立數(shù)組初始化

    (3)for依賴圖中組件對(duì)象間存在信號(hào)輸入do

    (4) CA:=被依賴組件

    (5) CB:=當(dāng)前組件

    (6) If組件CA、CB存在有向邊ekthen:

    (7) 組件CB的出度數(shù)+1

    (8) end if

    (9)end for

    (10)建立隊(duì)列

    (11)建立空序列

    (12)while隊(duì)列不為空do

    (13) 從隊(duì)列中取出頭結(jié)點(diǎn)(出度為0的節(jié)點(diǎn))CA添加至序列末尾

    (14) for CA存在后繼節(jié)點(diǎn)CBdo

    (15) 數(shù)組中后繼結(jié)點(diǎn)CB出度-1

    (16) if 后繼結(jié)點(diǎn)CB出度為0 then

    (17) 隊(duì)列隊(duì)尾添加CB

    (18) end if

    (19) end for

    (20)end while

    (21)return 輸出組件計(jì)算順序 end

    2.2 合約逐級(jí)求解測(cè)試用例生成算法

    根據(jù)得到的組件計(jì)算順序,進(jìn)行合約逐級(jí)求解工作,具體流程如下:

    (1)根據(jù)系統(tǒng)設(shè)計(jì)圖的分析確認(rèn)需要測(cè)試的內(nèi)容及基礎(chǔ)組件合約模型,通過基礎(chǔ)組件合約模型得到需要滿足的合約;

    (2)根據(jù)前置條件預(yù)先生成部分組件的輸入數(shù)據(jù)及組件參數(shù),根據(jù)數(shù)據(jù)名稱和值建立映射表;

    (3)按照確認(rèn)的組件計(jì)算順序依次處理組件,每次從表中取出組件的輸入數(shù)據(jù),或獲取被依賴組件(上一個(gè)組件)的輸出值,作為當(dāng)前組件的輸入?yún)?shù)名與值添加進(jìn)映射表并進(jìn)行前置條件判定,符合前置條件,根據(jù)結(jié)果內(nèi)容及映射表計(jì)算對(duì)應(yīng)輸出值,并根據(jù)后置條件確定輸出狀態(tài);

    (4)最后進(jìn)行一次不變式條件判定,拋棄不符合條件的測(cè)試用例,將符合條件的輸出值及狀態(tài)存入合法數(shù)據(jù)表中,得到最終滿足所有合約的測(cè)試用例集。組件處理偽代碼如下:

    算法2:組件初始數(shù)據(jù)生成算法

    輸入:組件序列,組件參數(shù)組合,組件合約

    輸出:組件初始輸入數(shù)據(jù)

    (1)For 前置條件 do:

    (2) If 條件滿足 then:

    (3) 生成部分組件的輸入數(shù)據(jù)及組件參數(shù),根據(jù)數(shù)據(jù)名稱和值建立映射表

    (4) End if

    (5)End for

    算法3:組件處理算法

    輸入:組件計(jì)算順序,組件合約,組件初始輸入數(shù)據(jù)

    輸出:合法測(cè)試用例

    (1)For 每組參數(shù)組合輸入數(shù)據(jù) do:

    (2) For 組件 in 組件序列:

    (3) For 引用輸入 do:

    (4) 獲取被依賴組件(上一個(gè)組件)的輸出值,將它作為輸入?yún)?shù)名與值添加進(jìn)映射表

    (5) End for

    (6) For 前置條件 do:

    (7) If 條件滿足 then:

    (8) 根據(jù)對(duì)應(yīng)后置條件結(jié)合結(jié)果內(nèi)容及映射表計(jì)算得到輸出值和狀態(tài)

    (9) End if

    (10) End for

    (11) For 該組件不變式條件 do:

    (12) If條件不滿足 then:

    (13) Goto 1

    (14) End if

    (15) End for

    (16) 將輸出值與狀態(tài)寫入合法數(shù)據(jù)表

    (17) End for

    (18) 輸出合法測(cè)試用例

    3 應(yīng)用研究

    針對(duì)使用合約化理論的基于基礎(chǔ)組件組裝的系統(tǒng),構(gòu)建了一個(gè)自動(dòng)化生成測(cè)試用例的工具。工具開發(fā)平臺(tái)為PyCharm,采用Python語言編譯,并使用開發(fā)框架QT進(jìn)行設(shè)計(jì),運(yùn)行界面如圖3所示。

    圖3 測(cè)試用例生成工具運(yùn)行界面

    反應(yīng)堆堆芯測(cè)量系統(tǒng)是對(duì)堆芯溫度進(jìn)行檢測(cè),保證防止由于堆內(nèi)溫度熱分布不平衡產(chǎn)生的安全性事故。反應(yīng)堆堆芯測(cè)量系統(tǒng)將堆芯分為4個(gè)區(qū)域,每個(gè)區(qū)域都設(shè)置了不同數(shù)量的溫度傳感器。反應(yīng)堆堆芯測(cè)量系統(tǒng)的報(bào)警功能實(shí)現(xiàn)過程是由每個(gè)區(qū)域的溫度測(cè)量信號(hào)到報(bào)警信號(hào)的轉(zhuǎn)換過程。區(qū)域內(nèi)通過對(duì)采樣信號(hào)進(jìn)行去噪處理后對(duì)最大最小溫度值求差,再通過對(duì)溫度信號(hào)與報(bào)警信號(hào)閾值的比較,從而產(chǎn)生報(bào)警信息,分為溫度信號(hào)去噪、溫度值求差、閾值檢測(cè)三階段工作,以區(qū)域P1內(nèi)溫度值求差及閾值檢測(cè)階段工作過程為例說明基于合約的組件集成自動(dòng)化測(cè)試用例集生成過程。

    溫度值求差:通過溫度信號(hào)去噪階段傳遞而來的溫度數(shù)值信號(hào),使用組件MAX、MIN分別求出5個(gè)溫度傳感器的最大、最小溫度值,再使用MUL組件分別對(duì)最大、最小溫度值進(jìn)行符號(hào)設(shè)定及數(shù)值補(bǔ)償,再通過SUM組件求溫度差,此過程共使用5個(gè)組件。

    閾值檢測(cè):通過溫度值求差子系統(tǒng)傳遞而來的溫差信號(hào),使用THC組件檢查閾值以產(chǎn)生報(bào)警信號(hào)。此過程中共使用1個(gè)組件。

    暫時(shí)忽略溫度信號(hào)去噪階段VSB組件與溫度值求差階段MAX、MIN組件之間存在的數(shù)據(jù)傳遞狀態(tài),僅考慮MAX、MIN組件與MUL組件、MUL組件與SUM組件、SUM組件與THC組件之間存在數(shù)據(jù)傳遞狀態(tài)。靜態(tài)分析組件間的依賴關(guān)系,生成組件依賴如圖4所示。

    根據(jù)組件依賴圖,使用算法1中組件計(jì)算順序算法進(jìn)行排序,生成組件計(jì)算順序。

    使用微軟公司開發(fā)的組合測(cè)試工具(PICT),結(jié)合二維組合覆蓋準(zhǔn)則,根據(jù)合約模型的前置條件使用算法2中組件初始數(shù)據(jù)生成算法,生成滿足邏輯公式的MAX、MIN組件的測(cè)試用例輸入、狀態(tài)及MUL_1-2、THC的參數(shù)值,即進(jìn)行布爾表達(dá)式判別,生成滿足布爾表達(dá)式為“真”時(shí)的數(shù)據(jù),并根據(jù)數(shù)據(jù)名稱和值建立映射表。

    根據(jù)組件計(jì)算順序,使用算法3中組件處理算法來對(duì)組件進(jìn)行處理,依次取出映射表中存儲(chǔ)的組件初始輸入數(shù)據(jù),及接收的被依賴組件傳遞而來的數(shù)據(jù),對(duì)組件逐級(jí)計(jì)算求解。

    圖4 溫度值求差階段及閾值檢測(cè)階段組件依賴

    首先獲取MAX組件映射表中的測(cè)試用例輸入及狀態(tài),輸入數(shù)據(jù)見表1。

    根據(jù)不同的前置條件劃分不同工作模式,即進(jìn)行布爾表達(dá)式的判別,獲取布爾表達(dá)式為“真”時(shí)對(duì)應(yīng)的工作模式。此處判別5個(gè)接口,接收到溫度信號(hào)去噪階段,5個(gè)組件傳遞而來的數(shù)據(jù)中(此處使用PICT模擬生成),哪個(gè)接口接收到的數(shù)據(jù),是狀態(tài)為無故障前提條件下的最大溫度,MAX組件前置條件見表2。

    MIN組件結(jié)構(gòu)類于MAX組件,得到輸出O2(最小溫度),此處不再贅述。

    MUL_1組件接口見表3,具備參數(shù)G1(模擬信號(hào)、最大溫度增幅),輸入接口I1獲取被依賴組件MAX的輸出值及狀態(tài),并作為自己的輸入數(shù)據(jù),即最大溫度添加進(jìn)映射表。根據(jù)不同工作模式,對(duì)應(yīng)后置條件輸出增幅后的最大溫度,MUL_1組件前置及后置條件見表4。

    MUL_2組件結(jié)構(gòu)類似于MUL_1組件,具備參數(shù)G2(模擬信號(hào)、最小溫度增幅)得到輸出O2_min(增幅后的最小溫度),此處不再贅述。

    SUM組件在接收MUL_1、2組件傳遞的數(shù)據(jù)及狀態(tài)后,作為輸入添加進(jìn)映射表,并計(jì)算溫差,其中SUM輸入數(shù)據(jù)見表5。

    THC組件接口見表6,具備參數(shù)SVAL(模擬信號(hào)、報(bào)警信號(hào)跳變閾值)、參數(shù)HYST(模擬信號(hào)、遲滯參數(shù)),組件參數(shù)見表7。輸入接口I1獲取被依賴組件SUM組件傳遞來的溫差值及狀態(tài),作為輸入添加進(jìn)映射表,并從映射表中取出PICT生成的SVAL及HYST的參數(shù)值。根據(jù)當(dāng)前不同工作模式,選擇輸出不同信號(hào)。例,當(dāng)輸入數(shù)據(jù)值大于SVAL,則超出閾值上限,信號(hào)從“0”跳變至“1”,輸出報(bào)警信號(hào)。并根據(jù)不變式條件,約簡(jiǎn)布爾表達(dá)式為“假”時(shí)的測(cè)試用例,最終得到滿足所有合約的測(cè)試用例集,THC組件條件見表8。

    表2 MAX組件前置條件

    表3 MUL_1組件接口

    表4 MUL_1組件前置條件及后置條件

    表5 SUM組件輸入數(shù)據(jù)

    表6 THC組件接口

    表7 THC組件參數(shù)

    表8 THC組件條件

    根據(jù)測(cè)試用例生成方法生成測(cè)試用例實(shí)例,見表9。

    在滿足組件合約的情況下使用生成了15組測(cè)試數(shù)據(jù),測(cè)試用例覆蓋率見表10。

    測(cè)試用例平均覆蓋率達(dá)到97.27%。在解決了問題的同時(shí)保證了較高的合約覆蓋率。

    4 結(jié)束語

    核電廠DCS軟件的系統(tǒng)級(jí)的測(cè)試用例生成,與系統(tǒng)的性質(zhì)特征密切相關(guān)。目前還沒有通用的自動(dòng)化測(cè)試用例生成方法,通常根據(jù)有經(jīng)驗(yàn)的測(cè)試人員來進(jìn)行人工設(shè)計(jì)測(cè)試用例,并結(jié)合自動(dòng)化測(cè)試工具進(jìn)行測(cè)試,效率較低。受到人員經(jīng)驗(yàn)、習(xí)慣等人為因素的制約,測(cè)試充分度會(huì)產(chǎn)生一定的影響,導(dǎo)致生成的測(cè)試用例不具備足夠的客觀性與通用性;且復(fù)雜的DCS軟件系統(tǒng)求解系統(tǒng)合約是一個(gè)NP難問題,在進(jìn)行測(cè)試用例分析設(shè)計(jì)時(shí)成本高、難度大。因此提出一種基于合約的組件逐級(jí)測(cè)試用例生成方法。這種自動(dòng)化測(cè)試用例生成方法可以使用組合測(cè)試策略生成充分多的符合組件合約的測(cè)試用例集。根據(jù)實(shí)驗(yàn)結(jié)果表明,生成的測(cè)試用例的合約覆蓋度達(dá)到97.27%。后續(xù)工作應(yīng)加強(qiáng)算法對(duì)難覆蓋節(jié)點(diǎn)的處理,實(shí)現(xiàn)工作模式的全覆蓋。

    表9 測(cè)試用例實(shí)例

    表10 測(cè)試用例覆蓋率

    猜你喜歡
    前置條件測(cè)試用例合約
    基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
    房屋建筑和市政基礎(chǔ)設(shè)施工程施工招標(biāo)投標(biāo)管理辦法研究
    寫真地理(2020年21期)2020-09-06 14:12:26
    人工智能技術(shù)構(gòu)筑智能政府的前置條件研究
    論“自動(dòng)投案”的司法適用
    基于混合遺傳算法的回歸測(cè)試用例集最小化研究
    基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
    我國(guó)工程項(xiàng)目建設(shè)前期工作中一個(gè)亟待修正的程序——項(xiàng)目的“可行性研究報(bào)告”不應(yīng)設(shè)為“方案設(shè)計(jì)”的前置條件
    合約必守,誰能例外!——對(duì)“情勢(shì)變更”制度不可寄于過高期望
    軟件回歸測(cè)試用例選取方法研究
    资中县| 正镶白旗| 通道| 宿松县| 临湘市| 盐池县| 翼城县| 凯里市| 龙游县| 洛南县| 吉安市| 错那县| 延安市| 大荔县| 天祝| 罗定市| 思茅市| 岳阳市| 南京市| 定日县| 永修县| 祁门县| 都兰县| 西乡县| 中阳县| 建阳市| 黄石市| 云安县| 特克斯县| 津南区| 丹棱县| 石阡县| 建水县| 嘉定区| 五原县| 宣汉县| 韩城市| 梁山县| 安新县| 花莲县| 安岳县|