• 沒有找到結果。

軟體代理人系統的測試策略

根據對軟體代理人系統分析的結果,軟體代理人系統的測試包含兩個部分,

決定軟體代理人的測試順序與軟體代理人特性的測試,本節就是針對這兩個部分 提出完整的軟體代理人測試策略。

若軟體代理人系統只具有單一軟體代理人,則直接測試該軟體代理人即可。

若為多軟體代理人系統,首先必須利用根據軟體代理人間的主從關係找出相同主 從架構的軟體代理人們,將這些軟體代理人包成一個成份,可能分成下列三種情 況:

1. 若軟體代理人系統只具有一個成份,且 Slave 間沒有供需關係,如圖 3- 20 所示,則直接測試該成分即可,根據主從的關係,由最底層的 Slave 先測,再往上一層測試,直到測試到最上層的 Master 為止;若 Slave 與 Master 間具有訊息傳遞或發送的動作,則 Slave 先利用 stub 來測 試,Master 則直接利用測試完的 Slave 來測試。

圖 3- 20 單一成份的軟體代理人系統

2. 若軟體代理人系統只具有一個成份,但 Slave 間具有供需關係,則再根 據 Slave 間的主從關係找出相同主從架構的 Slave 們,分別包成數個小

成份,先測試獨立的小成份內的軟體代理人,再根據小成份間的供需關 係,扮演 Provider 的小成份先測,再測扮演 Requestor 的小成分,小成 份內的軟體代理人仍利用主從關係來決定測試順序,且 Provider 的訊息 傳遞需利用 stub 來測試,而 Requestor 則可直接利用測試完的 Provider 來協助訊息傳遞的測試。若小成分內的 Slave 仍具有供需關係,則依據 遞迴處理,直到不再具有供需關係為止。

3. 軟體代理人系統具有多個成份(如圖 3- 21 所示),成份間會具有供需關 係,先根據成份間的供需關係來決定測試順序,扮演 Provider 的成份先 測,再測扮演 Requestor 的成分,且 Provider 的訊息傳遞需利用 stub 來 測試,而 Requestor 則可直接利用測試完的 Provider 來協助訊息傳遞的 測試,而成份內的測試順序,根據 Slave 間是否具有供需關係,來決定 利用上述 1 或 2 的方法來決定。

圖 3- 21 多成份的軟體代理人系統

總合上述的策略,可得到軟體代理人的測試順序的安排原則是(1)Slave 較 Master 先測,(2)Provider 較 Requestor 先測。這樣的安排原則有以下兩個優點:

(1)減輕撰寫 stub 的成本,因為受測的軟體代理人的 Slave 以及需要傳遞訊息的

Provider 皆已事先測試過,所以可以直接拿來協助測試,除非遇到循環關係, 則軟體代理人的 itinerary 為變動的參數,由測試者提供 itinerary,

根據提供的 itinerary 來驗證是否正確的執行遷徙的動作。

ii. 發送:發送的動作發生於 Master 跟 Slave 之間,可藉由 Proxy 來 找出對應的被發送者,則 Slave 必須先測完本身的特性,再透過 stub 來測試被發送的行為,而 Master 則直接利用已測試完 Slave 來驗證發送的指令是否正確。

iii. 訊息傳遞:分成傳送者跟接收者來討論。

a. 傳送者根據傳送的動作可分成三種來討論:

vii. 同步傳送(Synchronous Send)針對下列兩種可能的情況來測試:

i. 給予正確的 Proxy 的情況。

ii. 給予錯誤的 Proxy,以致於無法訊息傳遞或將訊息送給錯誤的 軟體代理人的情況。

viii. 非同步傳送(Asynchronous Send):除了要測試上述的兩種測試情 況,還必須測試等待回傳時,軟體代理人是否能夠繼續正確執行工 作。

ix. 群播(Multicast):若此傳送者對多接收者,則先一一測試每個傳 遞訊息的組合,測試方法與非同步傳送相同,再測試同時與所有接 收者作訊息傳遞的動作是否正確。

b. 接收者根據處理訊息的方式分成兩種

i. 循序式訊息處理(Sequential Message Handle):需測試下 列兩種情況:

甲、測試 Message Handler 中所有處理訊息可能的執行路徑 乙、是否有應該支援的訊息,卻在 Message Handler 中沒有對

應處理的路徑。

ii. 並行式訊息處理(Parallel Message Handle),其中並行式

訊息處理除了測試各種訊息處理的執行路徑之外,還要測試所 有可能的並行路徑的情況,以圖 3- 22 為例,並行執行的路徑

圖 3- 22 並行式訊息處理

為處理訊息為 2 的路徑,根據不同的接收訊息的情況,若訊息 為 1、2、3,則 1 與 2 的路徑會發生並行的情況,如圖 3- 23(A);

若訊息為 3、2、1,則 2 與 3 的路徑會發生並行的情況,如圖 3- 23(B) , 除 此 之 外 還 要 考 量 是 否 有 呼 叫 共 用 物 件 [7][8][9][10],則實際上

圖 3- 23 不同的並行情況

只需要測試 2 與 3 並行的情況,下面針對這樣的情況提出完整 的產生出需測試的並行組合之方法:

(1) 根據 exitMoinitor 的指令,將"handleMessage"內的所 有路徑分成"multithread"跟"singlethread"兩個集 合。

(2) 建立"multithread"中所有路徑間共用物件的關係。

(3) 找出所有具有共用物件關係的"multithread"路徑,根 據找出的順序當作是訊息的接收順序。取

出"singlethread"中的一條路徑,找出與它有共用物件 關係的"multithread"路徑,根據找出的順序當作是訊 息的接收順序,而"singlethread"的路徑則為最後接收 的訊息。

(5) 重複步驟 4~5,直到所有"singlethread"中的路徑都產 生出所有需測試的訊息的接收順序。

第4章 軟體代理人系統的測試方法

依據上一章所提軟體代理人系統的測試策略,在本章進一步提出一套系統化 的軟體代理人系統測試方法,軟體代理人系統測試方法可以分成:軟體代理人測 試順序與軟體代理人程式之測試,在 4.1 節介紹軟體代理人程式前置作業分析已 得到軟體代理人間的關係及特性,進而在 4.2 節,提出軟體代理人測試順序安排 方法,4.3 節中,提出軟體代理人程式測試方法。

相關文件