鄭 直 張司明
(中國人民解放軍空軍航空大學 研究生隊,吉林 長春 130022)
并行測試技術是支持下一代自動測試系統的關鍵技術之一,相對于傳統串行測試系統,其技術特點與優勢在于提高了測試系統的吞吐率、提高了測試儀器資源的利用率、縮短了測試執行時間。實現并行測試技術的關鍵在于測試任務的調度,而并行測試任務的分解則為并行測試任務調度的基礎。
在傳統的串行自動測試系統中,測試任務被事先整體規定,然后測試中按照一定的順序流程運行,測試任務的安排由于不涉及并行性,所以待測任務之間可能無法進行并行測試。因此,將一個總體的復雜測試任務,經過分解形成多項容易被測量的子任務,通過完成子任務測試從而解決復雜測試的思想,對于并行測試系統來說是尤為必要的。

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