鄭 直 張司明
(中國人民解放軍空軍航空大學(xué) 研究生隊,吉林 長春 130022)
并行測試技術(shù)是支持下一代自動測試系統(tǒng)的關(guān)鍵技術(shù)之一,相對于傳統(tǒng)串行測試系統(tǒng),其技術(shù)特點與優(yōu)勢在于提高了測試系統(tǒng)的吞吐率、提高了測試儀器資源的利用率、縮短了測試執(zhí)行時間。實現(xiàn)并行測試技術(shù)的關(guān)鍵在于測試任務(wù)的調(diào)度,而并行測試任務(wù)的分解則為并行測試任務(wù)調(diào)度的基礎(chǔ)。
在傳統(tǒng)的串行自動測試系統(tǒng)中,測試任務(wù)被事先整體規(guī)定,然后測試中按照一定的順序流程運行,測試任務(wù)的安排由于不涉及并行性,所以待測任務(wù)之間可能無法進行并行測試。因此,將一個總體的復(fù)雜測試任務(wù),經(jīng)過分解形成多項容易被測量的子任務(wù),通過完成子任務(wù)測試從而解決復(fù)雜測試的思想,對于并行測試系統(tǒng)來說是尤為必要的。
圖1 并行測試系統(tǒng)自身特點
并行測試系統(tǒng)本身的特點決定了總體的復(fù)雜測試任務(wù)分解的可行性:對于并行測試系統(tǒng)本身而言,現(xiàn)階段的自動測試系統(tǒng)均采用嵌入式計算機控制、模塊化的測試儀器資源,這就使得各個資源模塊可以根據(jù)測試系統(tǒng)的需求同時單獨工作,相互之間沒有影響;新的接口適配器技術(shù),使得自動測試系統(tǒng)與待測設(shè)備間的連接、信號轉(zhuǎn)換更加靈活;計算機多線程與多核處理技術(shù),使得控制軟件能夠同時控制運行多個測試任務(wù)。上述的這些自動測試系統(tǒng)本身的特點,均為經(jīng)分解后的多項子測試任務(wù)能夠?qū)崿F(xiàn)并行技術(shù)奠定了基礎(chǔ)。
子測試任務(wù)的大小能夠通過增加或減少測試參數(shù)來改變,那么子測試任務(wù)的大小即表現(xiàn)為測試任務(wù)粒度的粗細。任務(wù)粒度能夠體現(xiàn)某測試任務(wù)集合的層次結(jié)構(gòu),同時也能體現(xiàn)整體測試任務(wù)的規(guī)模與數(shù)目。任務(wù)粒度與任務(wù)數(shù)量存在反比關(guān)系:任務(wù)粒度越大,任務(wù)數(shù)量越??;任務(wù)粒度越小,任務(wù)數(shù)量就越大[1]。反映到并行測試技術(shù)上來說,就是任務(wù)粒度與子測試任務(wù)的并行性和可求解性質(zhì)是相關(guān)聯(lián)的:通常來說,子測試任務(wù)的獨立性隨著任務(wù)粒度大小的增加而增加,但子測試任務(wù)的信息接口、交互性、任務(wù)之間的并行性卻隨著子測試任務(wù)粒度大小的增加而減少。因此,測試任務(wù)分解,要控制適宜的子測試任務(wù)粒度。
并行測試任務(wù)分解的目的是把復(fù)雜測試任務(wù)分解為多個簡單易處理的子任務(wù),子任務(wù)之間盡可能錯開資源競爭,從而有效地加快執(zhí)行速度,縮短測試時間。但是過度的分解將使系統(tǒng)中有大量的任務(wù),經(jīng)常進行任務(wù)的切換,任務(wù)與任務(wù)之間還需要很多的同步和互斥控制,將大量增加系統(tǒng)服務(wù)工作,降低系統(tǒng)的速度和有效性。
因此,在進行任務(wù)分解的過程中,必須遵循一定的原則。測試任務(wù)分解的原則有以下幾點[3]:
(1)獨立性:任務(wù)應(yīng)有相對的獨立性,任務(wù)間的相互協(xié)調(diào)、通訊工作應(yīng)少,以減少系統(tǒng)的開銷;
(2)層次性:對總體測試任務(wù)依次從被測單元、被測參數(shù)到具體功能操作進行逐層分解;
(3)均勻性:任務(wù)粒度的大小要適中、均勻,避免某一任務(wù)的執(zhí)行時間過長,導(dǎo)致資源負載不均,同時也要避免任務(wù)過細,導(dǎo)致系統(tǒng)任務(wù)切換開銷過大;
(4)相似性:不同的測試任務(wù)分解的子任務(wù)應(yīng)盡可能的相似,以便軟件設(shè)計時可用相同的程序代碼實現(xiàn),提高軟件編程效率。
實際工程中可根據(jù)被測對象的特點,采用自頂而下逐層分解的策略對測試任務(wù)進行分解。被測裝備通常會包括多個被測單元,而被測單元一般會有多個參數(shù)需要檢測,在這一層按被測參數(shù)對測試任務(wù)進行分解,在各參數(shù)的檢測中一些參數(shù)的檢測可能存在相同的初始化操作,可以提取相同的操作,提高系統(tǒng)效率。
在弄清并行測試任務(wù)分解要遵循的原則后,要明確子測試任務(wù)之間可能存在某種關(guān)聯(lián)。那么,分解后的子測試任務(wù)之間是否可以進行并行測試,如果不能進行并行測試,子測試任務(wù)之間的執(zhí)行優(yōu)先順序又是怎樣的。子測試任務(wù)之間的相互關(guān)聯(lián),決定了上述問題。
在討論并行測試任務(wù)分解策略方法要點與方案之前,先對測試任務(wù)之間的關(guān)聯(lián)引入形式化定義[3]:
定義3.1 設(shè)t1和t2為兩個測試任務(wù),I1和O1分別為t1的輸入變量集和輸出變量集,I2和O2分別為t2的輸入變量集和輸出變量集,若I1與 O2,I2與 O1,O1與 O2之間均無交集,則稱 t1與 t2數(shù)據(jù)相關(guān);否則,稱之為數(shù)據(jù)無關(guān)。
定義3.2 設(shè)t1和t2為兩個測試任務(wù),若t1的測試能夠決定t2是否測試,則稱t2控制相關(guān)于t1;否則,稱之為控制無關(guān)。
定義3.3 設(shè)t1和t2為兩個測試任務(wù),R1和R2分別是t1和t2占用的資源集,若R1和R2無交集,則稱t1和t2資源相關(guān);否則,稱之為資源無關(guān)。
定義 3.4 設(shè) t1,t2,…,tm為測試項目中的各項測試任務(wù),若 t1,t2,…,tm按所有可能的任意順序測試的結(jié)果相同即t1,t2,…,tm任務(wù)優(yōu)先級相同,且 t1,t2,…,tm資源相關(guān),則稱 t1,t2,…,tm是可并行測試的。
對上述定義作出說明:對于測試任務(wù)t1和t2,若其滿足數(shù)據(jù)相關(guān),那么t1和t2是不能夠進行并行測試的,但反過來,若t1和t2數(shù)據(jù)無關(guān),不能肯定t1和t2能夠進行并行測試。例如,兩個測試任務(wù)中可能含有中間測試變量或任務(wù),使得t1和t2雖然數(shù)據(jù)相關(guān)條件,但實際只能依次測試。同理,對于測試任務(wù)t1和t2間滿足控制相關(guān)也存在相應(yīng)不能同一時刻進行并行測試的問題。
在明確測試任務(wù)之間所能存在的相互關(guān)系后,便可以根據(jù)這些相互關(guān)系,對一個總體復(fù)雜測試任務(wù)進行分解。由于隨著被測設(shè)備的不同,一個總體任務(wù)能被分解的程度、依據(jù)就不同,因此,沒有一種具體有明確步驟的詳細方法,能通用所有自動測試系統(tǒng)的測試任務(wù)分解。通??傮w分解方法要點如下:
(1)詳細了解被測設(shè)備特點,明確被測設(shè)備的測試需求,明確各個被測單元以及各被測單元所需測量參數(shù);
(2)根據(jù)被測設(shè)備中的某些具體帶有測試時序要求的測試任務(wù),從總體上即采用自頂向下逐層分解的方法對各個被測任務(wù)劃分層級網(wǎng)絡(luò),明確哪些測試目標(biāo)任務(wù)經(jīng)層級劃分后是復(fù)合任務(wù),哪些是不可在分的測試任務(wù);
(3)分析初步劃分后的測試任務(wù),看是否有哪些被測參數(shù)可以進行層次的調(diào)整,是否能夠合并成新的測試任務(wù)。例如,某些參數(shù)的檢測可能存在相同的初始化操作,可以對這些操作進行提取公因式,提高系統(tǒng)效率;
(4)經(jīng)細化、合并、調(diào)整順序后,完成任務(wù)分解,形成測試任務(wù)集合。
并行測試系統(tǒng)測試任務(wù)分解是并行測試系統(tǒng)實現(xiàn)并行測試任務(wù)調(diào)度這個NP-HARD難題的前提,遵循怎樣的分解原則和分解測量方法要點對總體測試任務(wù)進行分解,對分解后子測試任務(wù)的粒度有著影響。根據(jù)本文提出的分解策略方法要點進行并行測試任務(wù)分解,能夠較好的控制子任務(wù)粒度,為后續(xù)并行測試任務(wù)調(diào)度打下基礎(chǔ)。
[1]何玉安.基于本體的制造網(wǎng)格任務(wù)管理關(guān)鍵技術(shù)研究[D].上海:上海大學(xué),2008.
[2]卓家靖,孟晨.并行測試系統(tǒng)的任務(wù)分解和任務(wù)過程模型[J].電子測量技術(shù),2008,8,31(8):109-112.
[3]肖明清.自動測試概論[M].北京:國防工業(yè)出版社,2012,8:108-109.