人的 Master,則先測試自己的特性,測試順循序為先測試自動化,
再測試學習能力,然後測試行動力,最後利用 stub 來測試合作能 力;接著根據 slave 間的供需關係,依序抓出 indegree 最小的 Slave,根據該 Slave 的 Provider Link,測試在相同主從架構下 與其他 Slave 間的合作能力,若出現雙向的供需關係,則利用第三 章的方法先檢查是否為循序式的訊息傳遞來處理,最後測試所有 Master-Slave 間的合作能力。
3. 若有多個主從位元為 0 的 Node,則利用 2 的方法先測試完每個主從架 構,當所有的主從架構都測試完後,則根據主從位元為 0 的 Node 間的
供需關係,依序抓出 indegree 最小的 Master,找出為它的 Provider 之其他主從架構來測試合作能力,若出現雙向的供需關係,則利用第三 章的方法先檢查是否為循序式的訊息傳遞來處理。
下列提出軟體代理人的特性的測試方法:
1. 自動化:先來討論軟體代理人的程式架構,如圖 4- 11 所示,分別針對 這些部分來介紹:
i.onCreation 為軟體代理人的起始函式。
ii. run 為軟體代理人的執行函式,自動化的執行邏輯都在該函式 中。
iii. run 執行完後,則軟體代理人會等待下一步指令。
iv. 如果有其他軟體代理人傳送訊息過來,由 wait 轉換到 handleMessage 函式來負責處理接收訊息。
v.軟體代理人在執行遷徙的指令前,由 wait 轉換到 onDispatching 來處理。
vi. 軟體代理人在遷徙到目的地後,則由 onDispatching 轉換到 onArrival 來起始軟體代理人繼續執行它的工作。
vii. 軟體代理人在結束前,則由 wait 轉換到 onDisposing 來 處理動作。
圖 4- 11 軟體代理人的程式架構
因此可以得知,若要測試軟體代理人的自動化,則只需測試軟體代理人 程式中的 onCreation 與 run 兩個函式,而要單獨只執行這兩個函式必須先將 軟體代理人其它的特性排除,若軟體代理人具有行動力的特性,則可由前置 作業已經建立好的行動力資料表,根據程式碼位置先取消掉這些特性的指 令,且透過訊息傳遞來取得的資料,改由 stub 來輸入所需資料,因此利用 前製作業建立好的傳送資料表,找出指令所在的位置,依下列的方法,根據 傳送方式來編寫對應的 stub:
i. 同步傳送:必須將程式碼改寫成,如圖 4- 12 所示,讓 proxy 指 向測試者設計的 stub,讓測試者先由 stub 輸入所需資料,來測試 自動化。
圖 4- 12 修改後同步傳送的程式
ii. 非同步傳送:必須將程式碼改寫成,如圖 4- 13 所示,讓 proxy 指向測試者設計的 stub,讓測試者先由 stub 輸入所需資料,來測 試自動化。
圖 4- 13 修改後非同步傳送的程式
iii. 群播:測試者編寫一個訂閱該訊息的 stub,如圖 4- 14 所示,由 stub 輸入所需資料,來測試自動化。
圖 4- 14 對應群播的 stub 程式
除了上述的三種情況,其餘的合作能力指令,則利用前置作業已建立好的產生資 料表、發送資料表與傳送資料表,找出特性指令所在程式碼的位置先取消掉其功 能,則便可在軟體代理人執行環境上,測試軟體代理人的 onCreation 與 run 函 式,利用 JAVA 測試方法來產生測試的路徑,只要提供充足的資料便可測試所有 測試路徑,以判斷自動化是否正確。
2. 學習能力:因為無法找出學習能力的指令動作,所以若軟體代理人有寫 入知識庫的動作,則比較寫入知識庫的結果是否與預期的結果相同,來 判斷學習能力是否正確。
3. 行動力:在 onCreation 與 run 函式中找出具有行動力特性的函式路徑,
一一去測試每一條函式路徑,而根據 itinerary 是否為常數來判斷,執 行遷徙的次數以及必須設置的測試環境數,若為常數則依照指定的位址 設置足夠資源,比較是否遷徙到正確的地點,以及在遷徙位置上的工作 是否正確執行,否則,必須由測試者輸入 itinerary 給軟體代理人,並
會在遷徙到的地點設置足夠的資源,比較是否遷徙到正確的地點,以及 在遷徙位置上的工作是否正確執行。
4. 合作能力:先利用 stub 來測試所有的合作能力的指令動作,傳送的動 作,必須在所有的函式中找出傳送的動作,並將其 Proxy 指向 stub,
而接收的動作,則需設計測試 stub 程式,如圖 4- 15 所示,一一測試 handleMessage 中所有的函式路徑,若具有並行式訊息處理的函式路 徑,則利用第三章所提的方法來產生所有可能的並行處理路徑的組合。
圖 4- 15 測試接收的 stub 程式
第5章 結論
(1) 歸納出軟體代理人間的主從關係與供需關係:透過這兩種關係可以建立 出各軟體代理人系統的關聯性,並利用這兩種關係建立軟體代理人間測 試順序,使得多軟體代理人系統的測試上更有效率且具系統化。
(2) 提出系統化的一軟體代理人程式測試方法:針對軟體代理人的每項特 性,提出對應的測試方法。以及測試的步驟,使得軟體代理人程式的測 試能夠採用滾動式的方式,先測試自動化特性,在測試行動特性,最後 才測試合作能力,使測試者能夠更容易去發現軟體代理人程式的錯誤。
未來的研究方向為
(1)本論文在測試的執行環境上,是直接使用 IBM Aglets 的執行環境,雖完 成大部分功能,但限於時間,仍無法使用,實有必要予以完成,以驗證 所提方法的可行。
(2)目前異質軟體代理人的合作研究越來越多,透過 ACL(Agent
Communication Language)的方式,使得不同軟體代理人程式語言的軟體 代理人程式可以互相合作,可將這樣的情況考量進來,以進行更完善的 測試。
參考文獻
1. J. M. Bradshaw, “An Introduction to Software Agents,"
AAAIPress/The MIT Press, 1997
2. H. S. Nwana. “ Software Agents: An Overview," Knowledge Engineering Review, 11(3), pp.1-40, Sep 1996.
3. 許嘉容, “利用行動代理人的互助式學習之網路管理系統", 國立交 通大學資訊工程研究所, 碩士論文, 2001
4. Christopher Rouff, “A Test Agent for Testing Agents and their Communities" In Proceedings of the IEEE Aerospace Conference, 2002.
5. Adelinde M. Uhrmacher, Bernd G. Kullick, “PLUG AND TEST" – SOFTWARE AGENTS IN VIRTUAL ENVIRONMENTS", Proceedings of the 2000 Winter Simulation Conference.
6. D. B. Lange and M. Oshima, “Programming and Deploying JavaTM Mobile Agents with AgletsTM" , Addison Wesley Longman, Inc., August 1998
7. 李正國、林浩澄、鍾乾癸,“Java 程式測試方法“,第八屆物件導向
11. M. Baldi, S. Gai, G. Picco and P. d. Torino, “Exploiting Code Mobility in Decentralized and Flexible Network Management,"
Proceedings of First International Workshop on Mobile Agent (MA'97), Berlin, Germany, April 1997.
12. Roger S. Pressman, “Software Engineering - A Practitioner's Approach, 4th edition", McGraw-Hill, 1997
13. P. Morreale, “Agents on the Move", IEEE Spectrum, Vol. 35, p34-41, April 1998.
14. G. P. Picco, “Understanding, Evaluating, Formalizing, and Exploiting Code Mobility," PhD thesis, DIPARTIMENTO DI AUTOMATICA E INFORMATICA, 1998.
15. C. Ghezzi, G. Vigna and P. D. Milano, “Mobile Code Paradigms and
Technologies: A Case Study," Proceedings of First International Workshop on Mobile Agent (MA'97), Berlin, Germany, April 1997.
16. Y. Labrou, T. Finin and Y. Peng, “The interoperability problem:
bringing together mobile agents and agent communication languages," Proceedings of the 32nd Annual Hawaii International Conference on Systems Sciences, pp. 10, Jan 1999.