學位論文
Permanent URI for this collectionhttp://rportal.lib.ntnu.edu.tw/handle/20.500.12235/73912
Browse
Item 對於單一通道多個接收者非同步訊息傳遞程式的動態測試(2012) 周柏宏; Bo Hung Chou軟體測試(software testing)是軟體工程一重要的階段,產品上市之前藉由軟體測試可以讓工程師驗證是否與當初設計的原意符合,也可以找出許多產品上的缺陷,在循序結構(sequential)的程式中做測試往往得到的結果都是可以預料的,但是在並行結構(concurrent)執行時,若程式規模較大所產生的結果就未必能夠預測。 所謂並行程式是指包含多個行程(Process)或是執行緒(thread)同時執行,並且完成所指派某些的任務,常見的並行程式測試的方法包含非決定性測試(Non-deterministic Testing)、決定性的測試(deterministic testing)、可達性測試(Reachability Testing),前面兩者第一個主要缺點是程式執行測試所找到的交錯(Interleaving)的涵蓋率極低,第二個缺點是在於按照自訂的順序所執行,產生較繁瑣,第三個方法去除了上述兩個缺點,且能夠找到程式執行時的交錯(Interleaving)也能完全找到。 本論文主要是在以單一通道多個接收者非同步訊息傳遞為基礎的程式(Single-Channel-Multiple-Receivers Asynchronous Message Passing-Based Programs)上做動態測試,由於非同步訊息傳遞為基礎的程式可能存在潛在的競爭情況(message race),若在設計程式時未考慮到有非決定性的行為(non-deterministic behavior),所產生的結果可能會造成嚴重的損失,甚至導致整體的系統停擺,我們使用的架構是採用可達性測試(Reachability Testing),可達性測試結合了非決定性測試以及決定性測試的特性,可以根據收集來的資訊,有效的分析競爭情況,進而導出執行時各種競爭情況可能產生的執行順序,但是單純使用傳統的可達性測試在非同步訊息傳遞程式上做測試可能會有死結(Deadlock)問題,因為可達性架構所設計的情況是針對share memory裡的read和write事件,所以必須針對整體架構做大幅度的修改,才能方便在受測程式上做動態測試(Dynamic Testing),且可針對欲分析的情況做紀錄特定的資訊,將分析結果收集判定是否存在錯誤情況的發生。