2. Background and Related Work
2.2 Testing of Message Passing Program
訊息傳遞[4]是一種溝通的形式使用在如:平行運算(parallel computing)、物件 導向程式(object-oriented programming)、行程間的通訊(Interprocess communication) 等..,因為訊息競爭(Message race),所以訊息傳遞程式存在著非決定性行為,使 得在訊息傳遞程式測詴上極具挑戰,訊息競爭存在主要原因為當分散各處的節點
n(n>2),同時對相同目的地做發送/接收,可能因為訊息延遲等原因,得到未預期 結果,以下將討論在訊息傳遞程式測詴相關文獻。
[6]採用的方法為以非決定性測詴(Nondeterministic Testing)方法對非同步訊
息傳遞程式做測詴,在[6]中提到傳統的非決定性測詴方法存在著兩個主要問題,
第一、如何識別插入的延遲點(delay point),傳統是以人工的方式插入,但這不 是最佳解,反而較耗費時間,第二、測詴何時會停止?傳統的方法無法判別,必 頇以人工的方式判斷,在這篇論文中他提出自動在每回合測詴完記錄一些資訊,
並做分析得到下一次延遲點該放入程式哪個位置,並且提供詳細的條件判斷測詴 何時會停止,實驗結果指出在較簡單的程式能達到百分之百的涵蓋率,而在複雜
11
的程式中測詴也較優於傳統方法。
在[18]中,則是單純的對訊息傳遞程式可能存在著訊息競爭,提出三種競爭 分析演算法分別考慮在三種不同類型的發送以及接收運算之間的同步(Asynch、
FIFO、Causal),方便用來測詴以及除錯非同步訊息傳遞程式,而這些競爭分析 演算法也將被用在之後新的可達性測詴的論文中。
在[16]、[19]中,則是提到對非同步訊息傳遞程式測詴採用方法為可達性測 詴(Reachability Testing),找出執行時所有可能的發送以及接收同步化事件所組成 序列(SR-Sequence),而在[19]中針對[16]執行時的效率性做改善,修改產生競爭 變異(Race Variant)演算法的部分,使得整體使用可達性測詴在非同步訊息傳遞程 式上更加迅速。
在[7]、[15]中,作者提出一新的可達性測詴,用在測詴非同步以及同步訊息 傳遞程式上,因為是採用通用模組(General Model),所以除了上述兩種同步化事 件外還可測詴包含訊號機、互斥鎖(lock)以及 monitor,使用時間郵戳(time stamp) 的方式記錄事件發生的先後順序,並且使用競爭集合(race set)來存放可能有競爭 情況的接收(receive)事件,然後再利用一競爭分析演算法產生競爭表(race table) 來導出該次同步化序列的競爭變異(Race Variant),此架構能有效的改善傳統可達 性測詴存在的問題,不頇額外花費空間儲存同步化序列來做比對是否執行產生重 複,保證同樣的序列只會出現一次。對整體效能的提升有很大的幫助。
在上述介紹的論文中,以非同步訊息傳遞程式中所滿足的特性為多個發送者
12
還有單一接收者(Multiple Sender /Single Receiver),訊息傳送到的 Channel 為
(Port),不幸的是,這並不是測詴在 Single-Channel-Multiple-Receivers 架構下,本 篇目的旨在針對 Single-Channel-Multiple-Receives 架構的訊息傳遞程式做測詴,
並針對可達性測詴架構做修改來達成在非同步訊息傳遞程式上的測詴。
13