|
Java語言是一種新的並行物件導向程式語言,提供了物件導向與並行程 式兩類指令,目前還沒有Java程式測試方法被提出,也無Java程式測試環 境被提出。本論文即在探討Java程式之測試方法,進而設計其測試環境。 從Java程式中是否使用到並行相關指令,可將Java程式分為兩類:(1)循 序Java程式與(2)並行Java程式。循序Java程式之語法與C++程式十分相似 ,Java僅將C++語言的一部份語法簡化並且新增包裹(package)與界面( interface)相關指令,因此本論文是將現有的C++程式測試方法做一些簡 化及修正,修正的部份主要是針對包裹與界面對現有C++程式測試方法造 成的影響,進而提出循序Java程式測試方法。所製作之循序Java程式測試 環境具有(1)自動決定包裹及類別測試順序,(2)自動產生類別驅動程式, 及(3)提供類別動態測試環境等功能。 本論文依據李正國學長所提之並 行Java程式測試方法來測試並行Java程式,並製作一並行Java程式測試環 境以支援此測試方法之使用,此環境之功能包括:(1) 自動產生受測並 行路徑上所有可能的函式呼叫執行順序。(2) 提供類別動態測試環境, 自動產生thread執行受測函式之 並行路徑,並提供強制執行的功能 。(3) 偵測並行路徑發生死結之情況。 The Java language is a new concurrent object-oriented program language. There is neither Java program testing method nor Javaprogram testing environment available now. The purpose of this thesis is to investigate Java program testing methods, and then a Java program testing environment is designed. Java programs are classified into sequential Java programs and concurrent Java programs depending on whether concurrent related instructions are included or not. The syntax of Sequential Java language is similar to that of C++ language except that Java adds two new components (i.e., interface and package) and their related instructions. Therefore the proposed sequential Java program testing method is based on the C++ program testing methods with some extension caused by package and interface. The implemented testing environment provides the following facilities to support the testing of sequential Java programs: (1) automatic package test order arrangement and automatic class test order arrangement, (2) automatic class driver generation, (3) dynamic class test environment. To test concurrent Java programs, the concurrent Java program testing method proposed by Jen-Gwo Lee is applied. The implemented testing environment for concurrent Java programs provides the following facilities to apply the method: (1) automatic generation of all possible invoked method execution sequences on share objects for each concurrent path, (2) dynamic class test environment with the features of (a) automatic creation of new threads to execute the concurrent method path under test, and (b) force execution, (3) runtime deadlock detection.
|