熊夢(mèng) 劉小同 陽(yáng)小華 劉杰
摘要:隨著核電國(guó)產(chǎn)化率的不斷提高,核電軟件的開(kāi)發(fā)也在不斷的進(jìn)行。而軟件測(cè)試作為軟件生命周期中一個(gè)必要的環(huán)節(jié),對(duì)于保證軟件的質(zhì)量與可靠性有著重要的意義。在核電軟件中,部分軟件系統(tǒng)需要使用包含大量參數(shù)名與參數(shù)值的文件作為輸入卡進(jìn)行測(cè)試。在針對(duì)該類軟件的集成測(cè)試中,主要使用非漸增式測(cè)試方法,通過(guò)對(duì)輸入卡進(jìn)行參數(shù)值替換來(lái)生成相應(yīng)的測(cè)試用例,從而進(jìn)行測(cè)試。因此存在人工測(cè)試時(shí)工作量大、效率低、準(zhǔn)確性低等問(wèn)題。對(duì)于此類的集成測(cè)試工作,由于輸入卡中參數(shù)多、參數(shù)可選值多、系統(tǒng)輸出文件對(duì)比困難等原因,筆者提出了基于K-V(Key-Value)模型的集成測(cè)試工具,以解決測(cè)試過(guò)程人工測(cè)試所面臨的問(wèn)題。
關(guān)鍵詞:軟件測(cè)試自動(dòng)化;集成測(cè)試工具;K-V模型;非漸增式測(cè)試;替換輸入卡值
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2017)10-0230-03
1.背景
核電國(guó)產(chǎn)化正在持續(xù)進(jìn)行,核電軟件也隨之在一步步的開(kāi)發(fā)。而軟件測(cè)試作為軟件開(kāi)發(fā)的重要有機(jī)組成部分,在軟件開(kāi)發(fā)的系統(tǒng)工程中占據(jù)著相當(dāng)大的比重。集成測(cè)試作為軟件測(cè)試的一個(gè)重要環(huán)節(jié),其充分性、高效性在測(cè)試過(guò)程中尤為重要。如何高效地完成集成測(cè)試,并且在確保其充分性基礎(chǔ)下減少測(cè)試成本,提高測(cè)試效率,成為集成測(cè)試的一個(gè)重要研究方向。
對(duì)于集成測(cè)試,通常有非漸增式組裝測(cè)試和漸增式組裝測(cè)試兩種不同的組裝方式。非漸增式組裝測(cè)試是指一次性將所有模塊按照設(shè)計(jì)要求組裝成完整的系統(tǒng),然后將龐大的系統(tǒng)作為一個(gè)整體來(lái)進(jìn)行測(cè)試。漸增式組裝測(cè)試是指先將某個(gè)模塊作為系統(tǒng)的基礎(chǔ)開(kāi)始測(cè)試,之后每次將測(cè)試過(guò)的單個(gè)模塊組裝到系統(tǒng)中進(jìn)行測(cè)試,直到整個(gè)系統(tǒng)組裝完成。對(duì)于核電軟件來(lái)說(shuō),在單元測(cè)試完成的情況下,所有計(jì)算代碼集成的系統(tǒng)可能具有許多未知的缺陷。所以使用非漸增式組裝測(cè)試方法,根據(jù)系統(tǒng)需求經(jīng)過(guò)分析生成測(cè)試用例,使用黑盒測(cè)試對(duì)整個(gè)軟件系統(tǒng)進(jìn)行集成測(cè)試,發(fā)現(xiàn)集成后的系統(tǒng)中不可預(yù)知的缺陷。從而修復(fù)軟件系統(tǒng)缺陷,完善整個(gè)系統(tǒng)。
集成測(cè)試是在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測(cè)試,從而確保各單元在組合之后能夠按照要求正常的協(xié)作運(yùn)行。而測(cè)試用例的設(shè)計(jì)原理作為軟件測(cè)試必須遵守的準(zhǔn)則,是軟件測(cè)試質(zhì)量最根本的保障。好的測(cè)試用例應(yīng)該具有如下特點(diǎn):有效性、可復(fù)用性、易組織性、可評(píng)估性和可管理性。因此,有一個(gè)好的用例設(shè)計(jì)原理,能夠讓測(cè)試人員設(shè)計(jì)出更加優(yōu)秀的測(cè)試用例,從而降低測(cè)試成本,并得到準(zhǔn)確的測(cè)試結(jié)果。
核電類計(jì)算軟件,數(shù)值計(jì)算過(guò)程復(fù)雜,中間過(guò)程不透明,運(yùn)算結(jié)果的正確性判定使用一個(gè)分析程序進(jìn)行分析判斷。通過(guò)輸出結(jié)果中相應(yīng)參數(shù)的值與分析程序得到的值的對(duì)比得到相關(guān)信息,所以此類軟件的集成測(cè)試方法主要是非漸增式組裝測(cè)試,屬于黑盒測(cè)試。黑盒測(cè)試將軟件作為一個(gè)黑盒子,不考慮內(nèi)部程序結(jié)構(gòu),只檢查程序功能是否按照需求規(guī)格說(shuō)明書(shū)與軟件設(shè)計(jì)文檔上的規(guī)定正常使用,程序是否能接受輸入并產(chǎn)生正確的輸出。因此,黑盒測(cè)試只著眼于程序外部的結(jié)構(gòu),主要針對(duì)軟件的功能進(jìn)行測(cè)試。
基于K-V模型測(cè)試的集成測(cè)試的工作內(nèi)容主要是在提供的base算例基礎(chǔ)上,根據(jù)需求中輸入?yún)?shù)生成測(cè)試用例。Base算例即為軟件運(yùn)行所需要的輸入數(shù)據(jù)構(gòu)所成的輸入卡,base算例中的數(shù)據(jù)來(lái)自于核電軟件所運(yùn)行的環(huán)境中具有的各種環(huán)境數(shù)據(jù)以及其他相關(guān)參數(shù)。本文主要針對(duì)基于K-V模型的集成測(cè)試工具如何解決基于K-V模型的核電軟件在軟件集成測(cè)試-過(guò)程中出現(xiàn)的耗時(shí)高、工作量大、容易出現(xiàn)誤差等問(wèn)題,提出合理的工具設(shè)計(jì)與實(shí)現(xiàn)方案,并在此研究方案的可靠性、高效性與實(shí)用性。
2.基于K-V模型的集成測(cè)試
對(duì)于核電數(shù)值類計(jì)算軟件系統(tǒng),其運(yùn)算是基于一組輸入卡參數(shù)。大量的輸入卡以參數(shù)名(key)與參數(shù)值(value)的組合作為基礎(chǔ)輸入元素輸入到軟件系統(tǒng)中。依據(jù)Key與Value的對(duì)應(yīng)關(guān)系構(gòu)建測(cè)試用例生成模型,生成測(cè)試用例。在其集成測(cè)試過(guò)程中將輸入?yún)?shù)以K-V模型的形式存入輸入卡中,作為軟件的輸入。在K-V模型中,K指的是Key,代表輸入卡中的參數(shù)名;v指的是Value,代表輸入卡中的參數(shù)值。Key與Value為——對(duì)應(yīng)的關(guān)系。設(shè)計(jì)測(cè)試用例過(guò)程中,我們需要考慮的Key,來(lái)自可變參數(shù)對(duì)應(yīng)表,可變參數(shù)表中包含了需要測(cè)試的所有參數(shù)的參數(shù)名。參數(shù)值可能是單個(gè)數(shù)值,也可能是一個(gè)數(shù)組。在測(cè)試用例設(shè)計(jì)過(guò)程中,如果參數(shù)值為單個(gè)數(shù)值,則將生成的測(cè)試用例值直接替換base輸入卡中的值,生成測(cè)試用例輸入卡。如果參數(shù)值為數(shù)值數(shù)組,那么要將測(cè)試用例值逐個(gè)替換數(shù)組中的值,對(duì)應(yīng)一組測(cè)試用例,生成一組測(cè)試用例輸入卡。
針對(duì)K-V模型,我們對(duì)其進(jìn)行總結(jié)分類,劃分出四個(gè)類別:1)Key為邊界值類時(shí),我們對(duì)其Value取上下邊界值以及上下邊界外的值作為測(cè)試用例。2)Key為枚舉類時(shí),對(duì)其Value取值域集合中的每個(gè)值作為測(cè)試用例。3)Key為數(shù)值類時(shí),對(duì)其Value取默認(rèn)值的上下一個(gè)數(shù)量級(jí)的值作為測(cè)試用例。4)Key為組合數(shù)據(jù)類時(shí),對(duì)其Value值進(jìn)行便利替換,將所要取得值便利替換默認(rèn)值中的每一個(gè)數(shù)據(jù),得到多個(gè)測(cè)試用例。
根據(jù)K-V模型得到測(cè)試用例后,根據(jù)每個(gè)測(cè)試用例,改變且僅改變Base算例中測(cè)試用例對(duì)應(yīng)的變量,未改變變量值與Base算例中的變量值保持一致,以此生成測(cè)試用例輸入卡,用于后續(xù)測(cè)試工作
3.基于K-V模型的集成測(cè)試工具結(jié)構(gòu)設(shè)計(jì)
基于K-V模型的集成測(cè)試工具,主要用于生成測(cè)試用例,執(zhí)行測(cè)試用例,比較輸出文件并提取其中的差異項(xiàng),生成誤差報(bào)表以提高人工走查的效率。該工具在結(jié)構(gòu)設(shè)計(jì)上,采用三層結(jié)構(gòu),分為輸入層、處理層、數(shù)據(jù)層。1)10層包括整個(gè)工具對(duì)外的輸入輸出接口,包括BASE算例、參數(shù)約束、調(diào)用驅(qū)動(dòng)、BUG清單等模塊。2)處理層連接10層與數(shù)據(jù)層,根據(jù)10層的輸入輸出以及調(diào)用命令,進(jìn)行相應(yīng)的操作,包括用例生成、驅(qū)動(dòng)程序、差異分析等模塊。3)數(shù)據(jù)層包括對(duì)整個(gè)工具的數(shù)據(jù)存取,包含測(cè)試用例、待測(cè)程序、分析程序以及輸出文件等模塊。
根據(jù)各層各模塊間的調(diào)用關(guān)系,整個(gè)工具主要分為三個(gè)功能塊:測(cè)試用例生成;調(diào)用驅(qū)動(dòng)程序;分析輸出文件。
1)測(cè)試用例生成
測(cè)試用例生成模塊根據(jù)Base算例和參數(shù)約束表,生成測(cè)試用例與測(cè)試用例輸入文件,主要包括CaseVariableToDict類、GenenrateCases類和CopyTestCaseInput類。CaseVariableToDict類對(duì)Base算例、參數(shù)約束表進(jìn)行解析,生成相應(yīng)的數(shù)據(jù)字典;GeneragCases依據(jù)測(cè)試用例生成規(guī)則將Base算例和參數(shù)約束表的數(shù)據(jù)字典生成測(cè)試用例字典;CopyTestCaseInput類將測(cè)試用例字典中的數(shù)據(jù)逐個(gè)替換Base算例輸入卡,生成測(cè)試用例輸入卡。
2)調(diào)用驅(qū)動(dòng)程序
調(diào)用驅(qū)動(dòng)程序模塊,主要為CallDriver類,通過(guò)調(diào)用驅(qū)動(dòng)程序驅(qū)動(dòng)待測(cè)程序與分析程序運(yùn)行測(cè)試用例,生成相應(yīng)的輸出文件。
3)分析輸出文件
分析輸出文件模塊,主要為AnalyseOutputFiles類,對(duì)待測(cè)程序與分析程序所生成的輸出文件進(jìn)行對(duì)比并進(jìn)行誤差分析后,得最終差異信息,生成BUG清單。
4.基于K-V模型的集成測(cè)試工具運(yùn)行實(shí)例
根據(jù)初步的工具設(shè)計(jì)與實(shí)現(xiàn),我們?nèi)∧耻浖糠謨?nèi)容作為待測(cè)軟件用于對(duì)工具進(jìn)行初步驗(yàn)證,并講述具體文件格式(驗(yàn)證具體流程如圖5)。
該待測(cè)軟件用于實(shí)時(shí)監(jiān)測(cè)某種儀器的狀態(tài),包含四個(gè)輸入?yún)?shù),分別為:狀態(tài)state、溫度temp、速度speed、加速度accel。狀態(tài)表示當(dāng)前儀器的狀態(tài),-1為異常,0為未啟動(dòng),1為正常啟動(dòng);溫度表示儀器所處環(huán)境溫度;速度表示儀器當(dāng)前速度;加速度表示儀器水平四個(gè)方向的受力情況。
表2中,“變量名”表示待測(cè)軟件的輸入?yún)?shù)名,“分析程序變量名”表示分析程序中所對(duì)應(yīng)的輸入?yún)?shù)的參數(shù)名,類型為參數(shù)值的類型,含義為參數(shù)的具體含義,默認(rèn)值為默認(rèn)狀態(tài)下參數(shù)的取值,值域?yàn)閰?shù)的取值范圍。
3)根據(jù)base算例以及參數(shù)約束表,可以生成測(cè)試用例設(shè)計(jì)表如圖7上。
其中,“name=xxx”表示測(cè)試用例編號(hào),name為測(cè)試用例編號(hào)名,用于與參數(shù)名做區(qū)分,可取任意非參數(shù)名的單詞作為編號(hào)名,默認(rèn)為name。用例編號(hào)下對(duì)應(yīng)為測(cè)試用例所取參數(shù)的取值。
4)根據(jù)測(cè)試用例設(shè)計(jì)表,逐個(gè)將base算例中的相應(yīng)參數(shù)替換,即可生成對(duì)應(yīng)的測(cè)試用力輸入文件,用于對(duì)待測(cè)程序進(jìn)行測(cè)試。其中部分測(cè)試用例輸入文件圖7下。
根據(jù)上述過(guò)程生成測(cè)試用例后,調(diào)用驅(qū)動(dòng)程序執(zhí)行測(cè)試用例得到輸出文件,對(duì)待測(cè)程序與分析程序的輸出文件進(jìn)行差異分析,得到差異報(bào)表,生成BUG清單,完成集成測(cè)試的初步任務(wù)。
5.結(jié)束語(yǔ)
針對(duì)基于K-V模型的核電軟件的集成測(cè)試進(jìn)行了討論,目的是研究其測(cè)試過(guò)程由測(cè)試工具來(lái)自動(dòng)化完成的可行性,闡述了工具的設(shè)計(jì)與實(shí)現(xiàn)等相關(guān)內(nèi)容。
在工具的設(shè)計(jì)過(guò)程中,測(cè)試用例設(shè)計(jì)原理作為重點(diǎn)內(nèi)容,使用了黑盒測(cè)試的有關(guān)測(cè)試用例設(shè)計(jì)原理,有效地提高了測(cè)試用例可靠性與充分性。在實(shí)際應(yīng)用試驗(yàn)中,該工具解決了人工測(cè)試過(guò)程中容易出現(xiàn)的用例設(shè)計(jì)不完整、結(jié)果對(duì)比不準(zhǔn)確等問(wèn)題,有效地降低了測(cè)試周期,提高了測(cè)試效率。但是仍存在不足的地方,輸入卡解析模塊只能適配固定格式的輸入卡,遇到格式略有改變的輸入卡需測(cè)試人員修改解析模塊來(lái)適配新的格式,有待后續(xù)進(jìn)一步研究改進(jìn)。