王 影
(中國(guó)航發(fā)商用航空發(fā)動(dòng)機(jī)有限責(zé)任公司 控制系統(tǒng)部,上海 200241) E-mail:wyltm@126.com
理想的軟件測(cè)試方法需要同時(shí)具有錯(cuò)誤檢測(cè)能力高、成本消耗低和適用性廣泛等特點(diǎn)[1].等價(jià)類、邊界值、判定表等經(jīng)典方法在軟件測(cè)試領(lǐng)域具有普遍的適用性,能夠檢驗(yàn)軟件實(shí)現(xiàn)正常功能及魯棒性需求的正確性,發(fā)現(xiàn)軟件缺陷.不過,由于軟件應(yīng)用場(chǎng)合等的不同,有時(shí)照搬經(jīng)典方法可能無法準(zhǔn)確暴露所有缺陷.因此,需要結(jié)合實(shí)踐經(jīng)驗(yàn),不斷總結(jié)軟件故障模式,優(yōu)化測(cè)試策略[2],或基于經(jīng)典方法衍生出對(duì)特定場(chǎng)景效果更好的新方法[3].
在計(jì)算機(jī)通信領(lǐng)域,除了傳統(tǒng)的局域網(wǎng)、互聯(lián)網(wǎng)、移動(dòng)通信網(wǎng)和衛(wèi)星通信網(wǎng),物聯(lián)網(wǎng)[4]、車聯(lián)網(wǎng)[5]、空天地一體化網(wǎng)絡(luò)[6,7]等技術(shù)也不斷推陳出新,在各種通信線路和設(shè)備上,通過網(wǎng)絡(luò)軟件落實(shí)通信協(xié)議,與整個(gè)世界甚至太空、外太空實(shí)現(xiàn)數(shù)據(jù)交換.在航空[8,9]、航天[10,11]等工業(yè)自動(dòng)化領(lǐng)域,隨著工業(yè)數(shù)據(jù)總線、雙口RAM、EEPROM等技術(shù)的發(fā)展,數(shù)字通信不斷取代模擬、開關(guān)量信號(hào)的點(diǎn)對(duì)點(diǎn)傳輸,實(shí)現(xiàn)了不同設(shè)備、系統(tǒng)之間或控制器與執(zhí)行機(jī)構(gòu)之間的批量數(shù)據(jù)傳輸,構(gòu)成多機(jī)冗余/協(xié)同系統(tǒng)、現(xiàn)場(chǎng)總線網(wǎng)絡(luò)或可調(diào)參數(shù)在線存取系統(tǒng);這些系統(tǒng)中運(yùn)行的信息交換軟件不僅要基于需求進(jìn)行數(shù)據(jù)處理、設(shè)備控制和監(jiān)測(cè),又要基于統(tǒng)一的數(shù)據(jù)收發(fā)協(xié)議,完成批量數(shù)據(jù)的組包發(fā)送和拆包接收,實(shí)現(xiàn)信息交換.
在具有數(shù)據(jù)交換功能的各類系統(tǒng)中,數(shù)據(jù)收發(fā)協(xié)議是信息交換雙方約定的共同語(yǔ)言,通常定義為數(shù)據(jù)包的形式,不同數(shù)據(jù)占據(jù)數(shù)據(jù)包中的指定字段;字段之間因位置上的相鄰或嵌套關(guān)系而相互影響,產(chǎn)生松散或緊密的耦合作用.如果數(shù)據(jù)收發(fā)雙方所應(yīng)用的通信或存取協(xié)議版本不統(tǒng)一,或雙方采用不同語(yǔ)言編程、且處理數(shù)組時(shí)的下標(biāo)范圍不同(如C語(yǔ)言數(shù)組下標(biāo)從0開始,PASCAL從1開始),都可能在數(shù)據(jù)拼裝和解析過程中引入特定類型的錯(cuò)誤.除非測(cè)試人員充分了解數(shù)據(jù)拼裝缺陷的故障模式、并為此精心設(shè)計(jì)測(cè)試用例,否則通常難以及時(shí)捕獲異常.因此,本文基于邊界值分析法和單缺陷假設(shè),提出針對(duì)性的軟件著色測(cè)試解決方案.
對(duì)于網(wǎng)絡(luò)及信息交換軟件來說,數(shù)據(jù)收發(fā)協(xié)議定義的拼裝關(guān)系越復(fù)雜,軟件越容易出錯(cuò).常見錯(cuò)誤類型包括數(shù)據(jù)裝入與提取位置錯(cuò)位,數(shù)據(jù)交換雙方定義的數(shù)據(jù)類型/排序不一致等.即使數(shù)據(jù)包中所有數(shù)據(jù)均為同構(gòu)信息,仍有可能出現(xiàn)數(shù)組下標(biāo)索引類錯(cuò)誤.例如某型號(hào)發(fā)控計(jì)算機(jī)為雙機(jī)冗余系統(tǒng),主機(jī)通過雙口RAM把關(guān)鍵參數(shù)周期性地發(fā)給備機(jī);主備切換后,備機(jī)基于主機(jī)發(fā)送的最新參數(shù)維持運(yùn)行.如果主、備機(jī)之間對(duì)某個(gè)關(guān)鍵參數(shù)的數(shù)據(jù)類型定義不匹配(如收、發(fā)分別是long和char類型),則該缺陷會(huì)傳播到序號(hào)靠后的數(shù)據(jù),引起后續(xù)數(shù)據(jù)存儲(chǔ)位置繼發(fā)性錯(cuò)位,依靠這些數(shù)據(jù)進(jìn)行處理的相關(guān)軟件功能間接出錯(cuò)等連鎖反應(yīng).
由于經(jīng)典測(cè)試方法主要檢驗(yàn)軟件配置項(xiàng)內(nèi)部處理邏輯的正確性,對(duì)通信/存取數(shù)據(jù)之間相互依存的耦合關(guān)系不加限制,對(duì)通信協(xié)議不同字段中無關(guān)數(shù)據(jù)的測(cè)試賦值不做顯式隔離,有時(shí)因偶然性賦值相似可能相互干擾、掩蓋錯(cuò)誤.有時(shí)測(cè)試結(jié)果看似正確,但并非源自應(yīng)與其匹配的輸入(如所有測(cè)試數(shù)據(jù)取值為0時(shí),即使數(shù)據(jù)包內(nèi)部存在部分錯(cuò)位,也無法發(fā)現(xiàn)基本數(shù)據(jù)類型不匹配的錯(cuò)誤).對(duì)于參與復(fù)雜數(shù)值計(jì)算的通信/存取數(shù)據(jù),由于計(jì)算過程復(fù)雜或存在多周期的連續(xù)積分運(yùn)算(如對(duì)于伺服回路閉環(huán)控制,部分輸入數(shù)據(jù)來自作動(dòng)機(jī)構(gòu)的反饋,測(cè)試過程無法完全控制),有時(shí)經(jīng)過仔細(xì)推敲雖然可以看出測(cè)試結(jié)果與期望值并不匹配,但卻在有效的值域區(qū)間內(nèi),易被錯(cuò)誤地當(dāng)作計(jì)算精度的合理?yè)p失,測(cè)試人員對(duì)其不敏感或出現(xiàn)視覺疲勞,異?,F(xiàn)象不能及時(shí)捕獲.
針對(duì)此類軟件缺陷漏測(cè)多發(fā)的情況,本文提出了一種軟件數(shù)據(jù)著色測(cè)試方法,通過隔離邏輯無關(guān)的測(cè)試輸入數(shù)據(jù)消除干擾,突出容易出錯(cuò)的數(shù)據(jù)字段,將軟件可能產(chǎn)生的數(shù)據(jù)交換錯(cuò)誤充分暴露.
著色也稱染色或上色,指用化學(xué)或其他方法影響物質(zhì)本身而使其著色.紡織品染色技術(shù)[12]是指通過適當(dāng)?shù)娜旧に?,使用染料和助劑?duì)紡織品進(jìn)行著色;在生命科學(xué)研究[13]、醫(yī)學(xué)病理分析[14]領(lǐng)域,通過染色劑將生物組織細(xì)胞的某一部分染上與其他部分不同的顏色或深度不同的顏色,產(chǎn)生不同的折射率,方便觀察;在非多孔性材料表面探傷領(lǐng)域[15],著色滲透探傷是檢查原材料、毛坯、半成品、工具等各種材料表面缺陷的一種非破壞性檢驗(yàn)方法:利用帶特殊染料的滲透劑的毛細(xì)管滲透作用及毛細(xì)管的吸附作用,來檢查零件表面的開口缺陷.
無論紡織品染色、生物細(xì)胞染色還是著色探傷,染色的目的都是為了突出重點(diǎn),使聚焦的觀察對(duì)象從其周圍背景中脫穎而出.
本文的描述基于以下概念:
1)位串是由0和1組成的二進(jìn)制位序列,表示為B;長(zhǎng)度為n的位串B的第i(i∈[1,n])個(gè)二進(jìn)制位表示為B[i].位串對(duì)應(yīng)的十進(jìn)制整數(shù)值,稱為位串值.長(zhǎng)度為n的位串有2n個(gè)可能的取值(或排列形式).
2)數(shù)據(jù)類型指高級(jí)編程語(yǔ)言能接受的標(biāo)準(zhǔn)類型(整型、字符型、浮點(diǎn)型)或用戶自定義類型(結(jié)構(gòu)體、共用體、數(shù)組、枚舉類型),以字母T表示.每種數(shù)據(jù)類型占據(jù)指定位數(shù)的存儲(chǔ)空間,對(duì)應(yīng)指定長(zhǎng)度的位串.
3)以位串為補(bǔ)碼轉(zhuǎn)換成指定數(shù)據(jù)類型的十進(jìn)制數(shù)值,稱為位串的等價(jià)數(shù)據(jù);不同數(shù)據(jù)類型可能具有相同的存儲(chǔ)位數(shù),因此同一個(gè)位串可能存在多個(gè)不同的等價(jià)數(shù)據(jù).
4)將十進(jìn)制數(shù)據(jù)按其所屬類型占用的存儲(chǔ)位數(shù),轉(zhuǎn)換成二進(jìn)制補(bǔ)碼形式的位串,稱為數(shù)據(jù)的等價(jià)位串.把位串作為補(bǔ)碼,按指定數(shù)據(jù)類型轉(zhuǎn)換為等價(jià)十進(jìn)制整數(shù)的過程,稱為位串的解析;將十進(jìn)制數(shù)據(jù)按其指定類型轉(zhuǎn)換為補(bǔ)碼形式的等價(jià)位串的過程,稱為數(shù)據(jù)的翻譯.
5)測(cè)試輸入數(shù)據(jù)包I是由m個(gè)不同類型Ti的數(shù)據(jù)Di組成的有序m元組,數(shù)據(jù)Di稱為I的第i(i∈[1,m])個(gè)元素,在存儲(chǔ)時(shí)需要占用Ri個(gè)二進(jìn)制位.特殊地,若?i∈[2,m],Ti=Ti-1,稱測(cè)試輸入數(shù)據(jù)包是等分的.若?i∈[2,m],Ti≠Ti-1,稱測(cè)試輸入數(shù)據(jù)包是非等分的,i稱為數(shù)據(jù)包的非等分點(diǎn),所有非等分點(diǎn)的集合稱為非等分集合.
6)測(cè)試輸入數(shù)據(jù)包位串B是由測(cè)試輸入數(shù)據(jù)包I中m個(gè)數(shù)據(jù)對(duì)應(yīng)的位串Bi,i∈[1,m],首尾連接組成,B=B1B2…Bi…Bm,Bi是第i個(gè)子位串,串長(zhǎng)為Ri.第1個(gè)子位串的起始位置Z1總是1,第i個(gè)子位串的起始位置Zi=Zi-1+Ri-1.數(shù)據(jù)包位串的總串長(zhǎng)n=∑Ri(i=1…m)=Rm+Zm-1.
為方便描述,定義如下術(shù)語(yǔ):
定義1.位串的劃分與合成:一個(gè)長(zhǎng)度為n的位串B可按照順序劃分為m,m∈[1,n],個(gè)長(zhǎng)度分別為R1、R2…Rm的子位串Bi,i∈[1,m],n=∑Ri,i=1…m,稱子位串Bi是位串B的第i個(gè)元素.特殊地,當(dāng)m=1時(shí),R1=n,子位串B1=B;當(dāng)m=n時(shí),Ri=1,子位串Bi是單個(gè)二進(jìn)制位;若?i∈[2,m],Ri=Ri-1,則定義位串B是等分的.m個(gè)長(zhǎng)度為R1、R2…Rm的位串Bi,i∈[1,m],可按升序合成一個(gè)新的位串B=B1B2…Bi…Bm.位串的合成結(jié)果是唯一的,但位串的劃分結(jié)果不唯一,導(dǎo)致位串的等價(jià)數(shù)據(jù)不唯一,因此位串的劃分與合成操作不可逆.
定義2.位串間關(guān)系:對(duì)于長(zhǎng)度分別為R1、R2的位串B1與B2,若R1=R2,且?i∈[1,R1],B1[i]=B2[i],稱位串B1與位串B2相等;若R1>R2,且?i∈[1,R2],B1[i]=B2[i](稱B2是B1的前綴)或B1[i]=B2[R1-R2+i](稱B2是B1的后綴),或?i∈[1,R2],?j∈[1,R1-R2],使得B1[i+j]=B2[i](稱B2是B1的中綴),統(tǒng)稱位串B1包含位串B2,或位串B2包含于位串B1;若存在長(zhǎng)度為R3(R3 定義3.位著色:若一個(gè)二進(jìn)制位取值為0,定義該位著白色;若該位取值為1,定義其著黑色. 定義4.位串灰度G:一個(gè)長(zhǎng)度為n的位串B1取值V1與等長(zhǎng)位串B2各位均取1的位串值V2之比,定義為位串灰度G=V1/V2,G∈[0,1].特殊地,當(dāng)位串B1各位均取0時(shí),位串灰度G=0,定義位串著白色;當(dāng)位串B1各位均取1時(shí),位串灰度G=1,定義位串著黑色;當(dāng)位串B1部分位為0其余位為1時(shí),位串灰度0 定義5.位串雙色著色:若位串B中只有特定位置的一個(gè)或幾個(gè)子位串著黑色/白色,剩余子位串全部著相反的白色/黑色,稱該位串B是雙色著色. 定義6.位串彩色著色:位串中只要有一個(gè)子位串的灰度0 基于單缺陷假設(shè)和邊界值測(cè)試思想,針對(duì)等分?jǐn)?shù)據(jù)包和非等分?jǐn)?shù)據(jù)包,分別辨識(shí)多數(shù)據(jù)組包傳輸和讀寫中的易出錯(cuò)點(diǎn)數(shù)據(jù)項(xiàng)如下: 定義8.等分?jǐn)?shù)據(jù)包差異點(diǎn):若測(cè)試輸入數(shù)據(jù)包I是等分的,收發(fā)雙方可能存在三種類型匹配錯(cuò)誤:1)相同索引的數(shù)據(jù)元素等價(jià)位串長(zhǎng)度不相等;2)相同索引的數(shù)據(jù)元素有符號(hào)與無符號(hào)類型不匹配;3)收發(fā)雙方引用數(shù)據(jù)的索引差1.因數(shù)據(jù)包I是等分的,在其首尾邊界附近最容易發(fā)現(xiàn)錯(cuò)誤,故定義數(shù)據(jù)包正序的第1或第2個(gè)數(shù)據(jù)為第一差異點(diǎn)U1,倒數(shù)第1個(gè)或第2個(gè)數(shù)據(jù)為第二差異點(diǎn)U2. 定義9.非等分?jǐn)?shù)據(jù)包差異點(diǎn) 若測(cè)試輸入數(shù)據(jù)包I是非等分的,除定義其首尾邊界數(shù)據(jù)為第一差異點(diǎn)和第二差異點(diǎn)外,另將非等分集合中非等分點(diǎn)最小值,即先導(dǎo)同類型數(shù)據(jù)與異型數(shù)據(jù)的分界線,定義為臨界差異點(diǎn)U3;若非等分集合中存在自定義數(shù)據(jù)類型(結(jié)構(gòu)體或位段),考慮到收發(fā)雙方分別自定義結(jié)構(gòu)體時(shí)可能存在差異,將非等分集合中每個(gè)自定義類型數(shù)據(jù)定義為特征差異點(diǎn)U4,特征差異點(diǎn)不是唯一的.如果數(shù)據(jù)包中只有一個(gè)自定義類型數(shù)據(jù),則只定義一個(gè)特征差異點(diǎn)U4,不再定義U1、U2和U3. 根據(jù)軟件研制經(jīng)驗(yàn),在數(shù)據(jù)打包與拆包過程中最容易出現(xiàn)的錯(cuò)誤是等分?jǐn)?shù)據(jù)包打包與拆包索引差1錯(cuò)誤,導(dǎo)致打包前的數(shù)據(jù)在拆包后受到相鄰數(shù)據(jù)的污染,該錯(cuò)誤可以通過第一、第二差異點(diǎn)U1、U2與相鄰數(shù)據(jù)特征的比對(duì)來暴露;非等分?jǐn)?shù)據(jù)包打包與拆包時(shí)容易出現(xiàn)相同索引的數(shù)據(jù)類型不匹配,導(dǎo)致打包前的數(shù)據(jù)在拆包后受到相鄰或間隔數(shù)據(jù)的污染,該類錯(cuò)誤可以通過臨界差異點(diǎn)U3或特征差異點(diǎn)U4與相鄰或間隔數(shù)據(jù)特征的比對(duì)來暴露. 根據(jù)差異點(diǎn)檢錯(cuò)能力分析,若在測(cè)試輸入數(shù)據(jù)包中放大差異點(diǎn)數(shù)據(jù)與其他數(shù)據(jù)(特別是相鄰和間隔數(shù)據(jù))的視覺特征落差,則錯(cuò)誤更容易捕獲.為此引入軟件著色測(cè)試的概念. 軟件著色測(cè)試法[16]把邏輯相關(guān)的測(cè)試輸入數(shù)據(jù)包劃分為焦點(diǎn)對(duì)象和周圍背景兩組,將焦點(diǎn)對(duì)象和周圍背景采用視覺落差較大的不同顏色著色(賦值).焦點(diǎn)對(duì)象是可能出錯(cuò)或容易暴露錯(cuò)誤的特殊數(shù)據(jù),如測(cè)試輸入數(shù)據(jù)包中的差異點(diǎn)或包含差異點(diǎn)在內(nèi)的部分特征數(shù)據(jù);周圍背景是輸入數(shù)據(jù)包中除焦點(diǎn)對(duì)象外的其他數(shù)據(jù)集合. 若焦點(diǎn)對(duì)象與周圍背景之間形成二維平面或三維以上立體結(jié)構(gòu),稱周圍背景是全包圍的.如多級(jí)嵌套結(jié)構(gòu)體,在一個(gè)結(jié)構(gòu)體內(nèi)定義了多個(gè)字段,部分字段也是結(jié)構(gòu)體或位段,字段內(nèi)一個(gè)數(shù)據(jù)與同一字段其他數(shù)據(jù)和該數(shù)據(jù)與其他字段之間,形成二維、三維甚至更多維度的關(guān)系網(wǎng).以結(jié)構(gòu)體或位段字段為焦點(diǎn)對(duì)象,其他字段作為全包圍型的背景,推薦采用彩色著色測(cè)試方案,示意如圖1所示. 周圍背景周圍背景焦點(diǎn)對(duì)象周圍背景周圍背景 圖1 全包圍型周圍背景示意 若焦點(diǎn)對(duì)象與周圍背景之間形成線性結(jié)構(gòu),則稱周圍背景是半包圍的.如數(shù)組元素組成的等分?jǐn)?shù)據(jù)包,以標(biāo)準(zhǔn)類型(如int、char等)或位段來定義數(shù)據(jù)元素的無嵌套單層結(jié)構(gòu)體(非等分?jǐn)?shù)據(jù)包)等.半包圍型的背景分為左鄰和右舍,推薦采用雙色著色測(cè)試方案,示意如圖2所示. 左鄰焦點(diǎn)對(duì)象右舍 圖2 半包圍型左鄰右舍背景示意 4.4.1 軟件雙色著色測(cè)試方案 圖3 軟件雙色著色測(cè)試流程圖Fig.3 Flow chart of software double-color testing 在長(zhǎng)度為m的測(cè)試數(shù)據(jù)包I中,以數(shù)據(jù)包差異點(diǎn)U1、U2、U3、U4為焦點(diǎn)對(duì)象,以黑色進(jìn)行著色;其他數(shù)據(jù)為左鄰右舍或周圍背景,以白色進(jìn)行著色,形成軟件雙色著色方案.以白色為背景色,軟件處理焦點(diǎn)對(duì)象得到的輸出結(jié)果黑色更加容易判讀,只要結(jié)果中的背景非白色,即可確認(rèn)數(shù)據(jù)被污染,方便追蹤污染源,最大限度屏蔽未知因素出錯(cuò)對(duì)背景數(shù)據(jù)的影響,降低缺陷定位的難度. 軟件雙色著色測(cè)試流程如圖3所示. 4.4.2 軟件彩色著色測(cè)試方案 在長(zhǎng)度為m的測(cè)試輸入數(shù)據(jù)包I中,將數(shù)據(jù)包差異點(diǎn)U1、U2、U3、U4附近指定n(n 軟件彩色著色測(cè)試流程圖如圖4所示. 圖4 軟件彩色著色測(cè)試流程圖Fig.4 Flow chart of software multi-color testing 4.4.3 軟件著色測(cè)試方案應(yīng)用說明 軟件雙色著色和彩色著色測(cè)試方案均可在差異點(diǎn)附近發(fā)現(xiàn)索引錯(cuò)誤和類型匹配錯(cuò)誤等數(shù)據(jù)收發(fā)錯(cuò)誤,可視情綜合使用.彩色著色方案可用相對(duì)較少的用例一次性發(fā)現(xiàn)多處缺陷;雙色著色方案在發(fā)現(xiàn)錯(cuò)誤時(shí),缺陷定位更準(zhǔn)確. 采用著色法設(shè)計(jì)用例時(shí),對(duì)于第一、第二或臨界差異點(diǎn)U1、U2、U3,數(shù)據(jù)包單個(gè)字段往往代表完整物理信息,直接選擇單字段為焦點(diǎn)對(duì)象,其余數(shù)據(jù)為周圍背景. 而自定義數(shù)據(jù)類型(結(jié)構(gòu)體/位段)比較復(fù)雜,可由多個(gè)物理量拼湊而成;一個(gè)完整的物理量可能拆成多份,分散在不同或不連續(xù)的字段中;表示物理量的數(shù)據(jù)符號(hào)位可能與數(shù)值部分隔離等,而特征差異點(diǎn)U4仍以數(shù)據(jù)包中代表特定物理信息的完整數(shù)據(jù)為焦點(diǎn)對(duì)象,其余數(shù)據(jù)為周圍背景. 軟件著色測(cè)試法重點(diǎn)關(guān)注數(shù)據(jù)傳輸、讀寫過程是否嚴(yán)格遵照相同的協(xié)議來實(shí)現(xiàn),檢驗(yàn)數(shù)據(jù)收發(fā)雙方對(duì)于約定協(xié)議的實(shí)現(xiàn)是否同步,數(shù)據(jù)類型解析是否正確,無關(guān)數(shù)據(jù)有沒有污染.測(cè)試輸入值限于數(shù)據(jù)類型二進(jìn)制表示范圍的上、下限值(所有位全0、全1),不關(guān)注物理量的有效功能范圍. 理想的著色測(cè)試方案能夠通過一次著色立即發(fā)現(xiàn)并定位缺陷,但是焦點(diǎn)對(duì)象的選取和著色方案不同對(duì)于缺陷的定位存在一定影響.有些軟件缺陷隱藏較深,無法一步到位,需要多次試探著色,不斷逼近出錯(cuò)點(diǎn).當(dāng)然,通過優(yōu)化選取焦點(diǎn)對(duì)象和著色方案,可能更加高效地定位軟件缺陷. 實(shí)驗(yàn)方法如下: 1)首先根據(jù)數(shù)據(jù)包是否等分,辨別數(shù)據(jù)組包協(xié)議中的易出錯(cuò)數(shù)據(jù)點(diǎn),標(biāo)識(shí)差異點(diǎn)類型和個(gè)數(shù). 2)根據(jù)差異點(diǎn)性質(zhì)選擇焦點(diǎn)對(duì)象,確定采用數(shù)據(jù)雙色著色或彩色著色方案,進(jìn)行初步著色測(cè)試以便暴露缺陷. 3)根據(jù)測(cè)試結(jié)果中的缺陷形式,進(jìn)一步調(diào)整、優(yōu)化著色方案,遞進(jìn)式發(fā)現(xiàn)和定位缺陷. 下面選取實(shí)例進(jìn)行數(shù)據(jù)著色測(cè)試分析: 某型號(hào)導(dǎo)引頭微波子系統(tǒng)主要由角信號(hào)處理組合(J)、微波時(shí)延接收組合(W)、信號(hào)分選組合(X)等部分組成.J接收W的3個(gè)信道A、B、C的固定和可變延遲線.調(diào)試計(jì)算機(jī)通過CAN總線將固定延遲線數(shù)碼及小直流調(diào)節(jié)量燒寫入J計(jì)算機(jī)的EEPROM;X通過同步串口BSP向J發(fā)送載頻碼命令,J計(jì)算機(jī)根據(jù)收到的載頻碼大小(與A、B或C信道之一對(duì)應(yīng)),按照EEPROM存取協(xié)議,讀出相應(yīng)信道的固定延遲線數(shù)碼和小直流調(diào)節(jié)量,用于改變固定延遲線的控制碼,完成回路閉合,解算空間目標(biāo)角度并調(diào)節(jié)其輸出直流零位,然后經(jīng)濾波處理后輸出. 角信號(hào)處理組合計(jì)算機(jī)軟件在EEPROM中使用兩個(gè)16bit的字來存儲(chǔ)固定延遲線數(shù)碼(1符號(hào)位+6數(shù)值位,有效取值范圍為-10~+9,數(shù)據(jù)2)和小直流調(diào)節(jié)量(1符號(hào)位+2數(shù)值位,有效取值范圍為-1~+1,數(shù)據(jù)1).每個(gè)信道的數(shù)據(jù)分為一組,共A、B、C三組.固定延遲線數(shù)碼和小直流調(diào)節(jié)量寫入EEPROM中的數(shù)據(jù)拼裝協(xié)議定義如圖5所示. 字號(hào)b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b01A組數(shù)據(jù)1A組數(shù)據(jù)2B組數(shù)據(jù)1B組數(shù)據(jù)2200A組數(shù)據(jù)1符號(hào)A組數(shù)據(jù)2符號(hào)B組數(shù)據(jù)1符號(hào)B組數(shù)據(jù)2符號(hào)C組數(shù)據(jù)1符號(hào)C組數(shù)據(jù)2符號(hào)C組數(shù)據(jù)1C組數(shù)據(jù)2 圖5 數(shù)據(jù)拼裝布局圖 圖5 A、B組數(shù)據(jù)1、2的數(shù)值均存在第1個(gè)雙字節(jié)的字中,符號(hào)位存放在第2個(gè)字中;C組數(shù)據(jù)1、2的數(shù)值、符號(hào)位均存在第2個(gè)字中.其中符號(hào)位:0表示正,1表示負(fù). 根據(jù)等價(jià)類和邊界值分析測(cè)試用例設(shè)計(jì)原則和單缺陷假設(shè)思想,本例中的6個(gè)輸入數(shù)據(jù)可分別劃分為1個(gè)有效等價(jià)類和1個(gè)無效等價(jià)類;上、下邊界附近各包括2個(gè)上點(diǎn)(等于邊界值)、2個(gè)離點(diǎn)(與邊界值差1的無效值)和一組內(nèi)點(diǎn)(上下邊界間的有效值),用例設(shè)計(jì)如表1所示. 表1 經(jīng)典方法測(cè)試用例設(shè)計(jì)表Table 1 Classic method test case design table 使用邊界值測(cè)試法,每個(gè)數(shù)據(jù)至少需要5個(gè)測(cè)試用例,6個(gè)數(shù)據(jù)至少需要6*5=30個(gè)測(cè)試用例.使用等價(jià)類測(cè)試法,由于每個(gè)數(shù)據(jù)存在1個(gè)有效等價(jià)類和2個(gè)無效等價(jià)類,需要至少設(shè)計(jì)3個(gè)測(cè)試用例,因此,6個(gè)數(shù)據(jù)至少需要6*3=18個(gè)測(cè)試用例.由于6個(gè)數(shù)據(jù)的內(nèi)點(diǎn)或有效等價(jià)類均可合并在一個(gè)用例中測(cè)試,測(cè)試用例總數(shù)可減少5個(gè),因此,實(shí)際使用30-5=25(邊界值)或18-5=13(等價(jià)類)個(gè)測(cè)試用例即可完成基于需求的功能和魯棒性測(cè)試,驗(yàn)證軟件配置項(xiàng)內(nèi)部的完整處理邏輯是否正確. 由數(shù)據(jù)拼裝布局圖可見,數(shù)據(jù)包不等分,6個(gè)物理信息均被拆分成符號(hào)位和數(shù)值兩部分,且分散在不連續(xù)的字段中.因此,該數(shù)據(jù)包為自定義位段結(jié)構(gòu)體,只須定義一個(gè)特征差異點(diǎn)U4,不再定義U1、U2和U3.如果采用雙色著色測(cè)試法,焦點(diǎn)對(duì)象是6個(gè)數(shù)據(jù)整體,周圍背景是第2個(gè)字b15和b14的固定值0.通過1個(gè)測(cè)試用例可觀察填充位是否被污染,無法判斷6個(gè)數(shù)據(jù)之間是否相互污染,無法充分暴露可能的數(shù)據(jù)拼裝缺陷. 表2 著色法測(cè)試用例設(shè)計(jì)表Table 2 Coloring method test case design table 因此采用彩色著色測(cè)試法,A、B、C組各兩個(gè)數(shù)據(jù)與其符號(hào)位一起可分別當(dāng)作焦點(diǎn)對(duì)象,其余字段當(dāng)作周圍背景,共設(shè)計(jì)6個(gè)測(cè)試用例,可通過周圍背景是否被污染及污染情況,初步判定可能的拼裝缺陷的位置,如表2所示. 如選取測(cè)試B組數(shù)據(jù)1為焦點(diǎn)對(duì)象,著色方案如圖6所示. 字號(hào)b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b01A組數(shù)據(jù)1:00A組數(shù)據(jù)2:000000B組數(shù)據(jù)1:11B組數(shù)據(jù)2:000000200A組數(shù)據(jù)1符號(hào):0A組數(shù)據(jù)2符號(hào):0B組數(shù)據(jù)1符號(hào):1B組數(shù)據(jù)2符號(hào):0C組數(shù)據(jù)1符號(hào):0C組數(shù)據(jù)2符號(hào):0C組數(shù)據(jù)1:00C組數(shù)據(jù)2:000000 圖6 B組數(shù)據(jù)1著色圖 如測(cè)試結(jié)果B組數(shù)據(jù)1解析為-3,結(jié)果正確;如解析為3,則符號(hào)位引用錯(cuò)誤;如解析為0、-1或-2,則數(shù)值位引用錯(cuò)誤;如解析為1或2,則數(shù)值位和符號(hào)位同時(shí)引用錯(cuò)誤. 設(shè)B組數(shù)據(jù)1解析為3,為進(jìn)一步定位錯(cuò)誤來源,擴(kuò)大焦點(diǎn)范圍,將數(shù)據(jù)包除B組數(shù)據(jù)1之外的剩余29個(gè)比特位無差別地輪流置1,直到B組數(shù)據(jù)1解析為-3止,因此最多增加29個(gè)用例即可定位缺陷來源.擴(kuò)大焦點(diǎn)著色如圖7所示. 字號(hào)b15b14b13b12b11b10b9b8b7b6b5b4b3b2b1b01A組數(shù)據(jù)1:00A組數(shù)據(jù)2:000000B組數(shù)據(jù)1:11B組數(shù)據(jù)2:000000200A組數(shù)據(jù)1符號(hào):0A組數(shù)據(jù)2符號(hào):0B組數(shù)據(jù)1符號(hào):1B組數(shù)據(jù)2符號(hào):1C組數(shù)據(jù)1符號(hào):0C組數(shù)據(jù)2符號(hào):0C組數(shù)據(jù)1:00C組數(shù)據(jù)2:000000 圖7 B組數(shù)據(jù)1缺陷定位著色圖 對(duì)于本例,假設(shè)軟件數(shù)據(jù)收發(fā)雙方對(duì)于B組數(shù)據(jù)1存在引用符號(hào)位不一致的錯(cuò)誤.為了發(fā)現(xiàn)并準(zhǔn)確定位該缺陷,應(yīng)排除數(shù)據(jù)包中無關(guān)字段可能造成的干擾,最佳方案之一是將B組數(shù)據(jù)1賦值為-3(其次是同時(shí)設(shè)計(jì)兩個(gè)測(cè)試用例,分別賦值為-1和-2,二者互補(bǔ)地排除該數(shù)據(jù)內(nèi)部?jī)蓚€(gè)數(shù)值位對(duì)符號(hào)位的干擾)、其余數(shù)據(jù)賦值為0,由于從內(nèi)點(diǎn)或等價(jià)類集合中選取任一數(shù)值的概率相等,且不同數(shù)據(jù)的賦值相互獨(dú)立,滿足方案的測(cè)試數(shù)據(jù)賦值概率等于B組數(shù)據(jù)1為-3(加上分別賦值為-1和-2)、A/C組數(shù)據(jù)1及A/B/C組數(shù)據(jù)2為0的概率P0. 如果使用著色法,只需彩色著色測(cè)試方案中的全套6個(gè)測(cè)試用例,就可發(fā)現(xiàn)錯(cuò)誤,錯(cuò)誤檢出率P0=1/6=16.7%.根據(jù)5.2節(jié)分析,最多35(=6+29)個(gè)測(cè)試用例即可確定缺陷位置,缺陷定位率P1=1/35=2.9%,工作量仍在可接受范圍,因此表明軟件著色測(cè)試技術(shù)在發(fā)現(xiàn)數(shù)據(jù)通信拼裝缺陷方面具有明顯的特異性和高效性. 表3 實(shí)驗(yàn)結(jié)果對(duì)比表Table 3 Comparison table for experiment result 著色法與等價(jià)類、邊界值分析法的實(shí)驗(yàn)結(jié)果對(duì)比如表3所示. 軟件著色測(cè)試法是對(duì)經(jīng)典測(cè)試方法在多數(shù)據(jù)組包傳輸和讀寫領(lǐng)域的增強(qiáng),通過將通信協(xié)議輸入數(shù)據(jù)包劃分為焦點(diǎn)對(duì)象與周圍背景并分別著色,消除了周圍背景對(duì)焦點(diǎn)對(duì)象的干擾,有助于發(fā)現(xiàn)軟件處理焦點(diǎn)對(duì)象可能引入的缺陷,解決了數(shù)據(jù)收發(fā)、存取雙方未嚴(yán)格遵循協(xié)議導(dǎo)致的漏測(cè)問題. 本文研究成果具有理論和工程的重要意義: 1)理論意義:首次將其他領(lǐng)域廣泛應(yīng)用的著色技術(shù)引入軟件測(cè)試領(lǐng)域,系統(tǒng)地解決了因相鄰或相隔數(shù)據(jù)誤用而導(dǎo)致軟件處理缺陷的測(cè)試方法問題,后續(xù)研究中將進(jìn)一步擴(kuò)大該方法的適用范圍. 2)工程意義:軟件著色測(cè)試法來源于航空航天高安全型號(hào)軟件測(cè)試經(jīng)驗(yàn),在多數(shù)據(jù)組包存儲(chǔ)、傳輸?shù)膱?chǎng)合,解決數(shù)據(jù)錯(cuò)位取用類缺陷的暴露和定位方法問題,對(duì)軟件測(cè)試工程實(shí)踐有較強(qiáng)的指導(dǎo)意義.4.2 數(shù)據(jù)包易出錯(cuò)點(diǎn)識(shí)別
4.3 差異點(diǎn)檢錯(cuò)能力分析
4.4 軟件著色測(cè)試方案
Fig.1 Diagram of full-surrounding neighborhood
Fig.2 Diagram of half-surrounding neighborhood5 實(shí)驗(yàn)驗(yàn)證
Fig.5 Layout of data assembling5.1 經(jīng)典方法測(cè)試設(shè)計(jì)
5.2 著色法測(cè)試用例設(shè)計(jì)
Fig.6 Color graph for datum1in group B
Fig.7 Color graph for datum1in group B for defect location5.3 實(shí)驗(yàn)結(jié)果對(duì)比分析
6 結(jié)束語(yǔ)