標題: 並行Java程式之迴歸測試
Regression Testing of Concurrent Jav aProgram
作者: 黃萬慶
Wan-Ching Huang
鍾乾癸
Chyan-Goei Chung
資訊科學與工程研究所
關鍵字: 爪哇;並行;迴歸;測試;Java;concurrent;regression;test
公開日期: 2000
摘要: 迴歸測試是在維護軟體階段一項重要、昂貴但不可避免的工作。其主要的目的是要確定修改過的程式之正確性,如何能在安全(safe)的前提下,達到最有效率(minimal effort)是迴歸測試的目標。Java是一個熱門的內建並行機制的語言,而且越來越多的並行程式選擇以Java語言來開發,但目前還沒有並行Java程式的迴歸測試方法被提出。 本研究首先分析現有的循序Java程式迴歸測試方法及所遭遇的問題,並改進現有方法不足之處而提出一個改良過後的循序Java程式迴歸測試方法。 在並行Java迴歸測試方面,本研究首先依並行程式中一般類別、共用類別、主動類別之可能改變情形探討如何以最少功夫作類別測試,進而探討對main()或run()方法展開路徑執行行為之影響而定出展開路徑循序性質之測試策略方法,並定出所展開路徑是否需作並行行為測試之判斷準則與新並行路徑產生準則,依此而提出並行程式迴歸測試方法。此方法首先依新增或修改類別所屬之main()或run()方法類別集合,依類別測試順序逐一檢查是否為新增或修改類別,若是則依需重測方法之路徑準備測試個案及執行重測。修改類別之狀態若會改變,對呼叫此修改類別之路徑均需判別其測試個案是否需重新準備及執行測試,重複上述步驟直到main()或run()方法之展開路徑出為止. 當main()或run方法之展開路徑可能對並行行為產生影響,再檢討或準備其測試個案並執行重測。
Regression testing is an important, expensive, but unavoidable activity performed during maintenance of evolving software. The main purpose of the regression testing is to validate modified software and ensure that no new errors are introduced into previously tested code. How to execute regression testing to verify the correctness of a modified program with minimal effort is the main issue of the regression testing. Java is a new and popular language in support of multithreading into the language itself, and more and more concurrent programs are developed with Java. However, no regression testing method of con-current Java program is available now. The main purpose of this research is to develop a regression testing method for concurrent Java programs. This research first reviews the existing regression testing method of sequential Java program. An improved step-by-step regression testing method for sequential Java program is proposed. To develop the regression testing of concurrent Java program, this paper first discusses how to retest a new or modified class, including general, shared, and active class, with minimal effort. How to verify the correctness of the classes which directly or indirectly use or inherit the modified class is detailly described. Then, the impact of the modifications of a class to the execution behavior of the cor-responding expanded paths of the run() method(or main() method) is discussed. Finally, the impact of a modified expanded path of a run() method(or main() method) to the execution behavior of the corresponding concurrent paths is detailly discussed. Based on these analyses, a regression testing method for concurrent Java programs which follows the two-step bottom-up testing strategy is proposed. Several examples are described to illustrate how to apply the proposed method in this thesis too.
URI: http://140.113.39.130/cdrfb3/record/nctu/#NT890392075
http://hdl.handle.net/11536/66865
Appears in Collections:Thesis