• 沒有找到結果。

軟體代理人程式測試研究之分析介紹

2.2. 相關研究

2.2.1. 軟體代理人程式測試研究之分析介紹

1. Test Agent[4]中首先提出一些軟體代理人系統測試的挑戰:

i. 軟體代理人間的溝通主要是透過訊息傳遞而非函式呼叫,因此傳統 的元件測試技術無法適用。

ii. 軟體代理人是自動化且並行執行的,因此可能本身執行正確但是溝 通出錯,反之亦然。

iii. 訊息的描述通常會不正確或不完整,所以訊息的形象化是必須的。

iv. 軟體代理人可能具有學習能力,所以成功的測試必須對於相同的測 試資料會產生不同的結果。

Test Agent 提供了一套滾動式(Incrementally)軟體代理人系統的測試 方法,首先針對每個單一的軟體代理人作測試,如圖 2- 17 所示,軟體代理

圖 2- 17 測試單一的軟體代理人

人本身的功能必須透過外部的事件來觸發,這些事件可能由外部的環境、其 他的軟體代理人或學習產生,首先針對來自其他軟體代理人的輸入,解決的 方法是由使用者來設計一些假軟體代理人(Dummy Agent)來提供適當的輸入 來測試軟體代理人,並且定義一些在開發軟體代理人時可能發生的錯誤:

然而越大型的軟體代理人社群越難以去測試,所以能夠提供給開發者的 幫助有兩個方面:

i. 可以將訊息的傳遞形象化,並且可以被重複的播放。

ii. 集中控制包含能夠開始、暫停,甚至控制軟體代理人執行的速度,

讓所有軟體代理人的動作以及溝通可以被監視。

這些部分都是透過一個能夠測試並監視的 Test Agent 來完成,Test Agent 必須要能與開發者互動,藉由讓開發者觀察軟體代理人間的互動來測試、除

Test Agent 支援兩種軟體代理人訊息處理能力的測試方式:Regression 和 Progression,Regression 測試使用在確任指定規格的軟體代理人的執行 行為,且對軟體代理人的修改不會影響已經存在的訊息處理能力。而 Progression 測試則是當增加新的訊息處理能力時,支援軟體代理人開發者 作開發。

圖 2- 18 Test Agent 的架構

所以整體來說,使用者提供 Test Agent 欲測試的軟體代理人的相關資 料,包含訊息規格等,由 Test Agent 代為執行測試的動作並蒐集相關的資 料提供使用者判斷軟體代理人是否有錯誤,而測試的方法為先測試單一軟體 代理人的功能,在測試整個軟體代理人社群內所有的溝通的情況。

2. JAMES[5](JAVA Based agent modeling environment for simulation) 針對 Mole 的軟體代理人程式語言,提供測試軟體代理人系統一個虛擬 環境的測試平台,同時在虛擬的環境中可以設定一個 Representative 來表示欲測試的軟體代理人,並建立兩者間的關聯,利用

Representative 來讓使用者作軟體代理人的測試,因此 JAMES 必須具 有兩個特性:

i. 具有讓測試的軟體代理人如同設定的 Representative 一樣地執 行,且隨意切換實際的執行環境與虛擬的測試環境。

ii. 軟體代理人是測試設定不可或缺的一部分,軟體代理人應該被了解 且可以控制的,而不是如同黑箱般的與測試環境互動。

JAMES 利用"Plug & Test"的方式來執行軟體代理人的測試,一個欲測試 的軟體代理人,必須要在 JAMES 中設定一個 Representative,如圖 2- 19 所示,

Representative 被描述成一個 time-triggered 自動程式,稱為 atomic model,

包含 Heart beat 負責控制時間依據設定來觸發事件讓軟體代理人執行,以及提 供對應事件的函式,Satellites 則提供一個抽象的觀點來描述軟體代理人的狀 態跟行為,如圖 2- 20 所示,並且提供 Peripheral port 讓 Representative 跟軟 體代理人可互動的連結,藉由輸入的 port 來根據 Satellites 流程送出觸發的事 件來讓軟體代理人產生對應的測試動作,而輸出的 port 來得到執行之後的結 果,以讓使用者判斷是否執行正確。

圖 2- 19 軟體代理人與 Representative 的互動

圖 2- 20 Satellite

相關文件