廣東省工商高級技工學校 陳 偉
?
基于擴展同步序列的Java多線程程序可達性測試方法探討
廣東省工商高級技工學校 陳 偉
【摘要】隨著計算機技術的不斷創新與發展,傳統Java多線程程序測試方法的局限性越加明顯,基于拓展同步系列的可達性測試方法可以解決傳統可達性測試方法的檢測錯誤,并在Java多線程程序檢測中嶄新出明顯的優勢。本文主要通過分析基于擴展同步序列的Java多線程程序可達性測試,探討基于擴展同步序列的可達性測試方法,旨在為我國計算機程序的編寫和測試提供參考。
【關鍵詞】擴展同步序列;可達性測試;Java多線程程序
隨著計算機應用技術的不斷進步和發展,傳統Java多線程程序的測試方法已經不能滿足現代計算機編程語言的開發和利用。而擴展同步序列的Java多線程程序可達性測試解決了傳統測試方法出現的檢測事件未同步錯誤或者同步不當的現象。擴展同步序列的Java多線程程序可達性測試主要由三個部分組成,包括計算拓展同步序列、構建Java多線程程序流圖、確定性測試。
可達性測試的方法是上個世紀提出來的,這種新的測試思想是以非確定性測試方法為思想基礎。可達性測試方法的提出是計算機技術領域的一次重大的創新和改革,在原有測試思想技術的的基礎上實現了測試Java的并發程序。在進行Java程序的測試的時候,是以路徑測試策略作為基礎進行相關測試策略。其中Java并發程序的測試是以同步序列作為測試方法,同時徹底覆蓋了傳統測試思想為基礎的測試度量。同步序列的測試方法是在一定規范的時間內進行的一種有序的時間序列,主要由兩個關鍵的同步因素組成,分別是同步的對象和同步的的事件。在Java的并發程序中有不同路徑的線程以及對線程的進程實現相關同步對象的共享或者直接訪問。并且在特定的操作過程或者操作的環境中,針對不同的同步對象進行實現不同方式的操作,就是同步事件。在進行Java多線程程序可達性測試的時候,首要注意的問題就是的要保證進行同步對象操作的時候,實現操作對象的同步化,在此基礎上,才能保證測試對象數據的完整性。這種同步操作的方式就是可達性測試中的同步事件。其中在Java多線程程序的可達性測試中,還存在的一種事件類型是非同步事件,這種事件的主要表現方式是在可達性測試過程中不能進行同步化的操作。
同步序列的的同步對象和同步事件是同步序列中最基本的兩個組成因素,和傳統的可達性測試存在一定的差異性。傳統的可達性測試中是以度量同步序列的覆蓋作為測試基礎,但是在同步序列中沒有涉及到程序中的非同步事件,所以在Java的可達性測試中還是會出現一定比例程度的錯誤,造成檢測的范圍存在一定的局限性,在進行Java程序并發性檢測的時候不能保證檢測結果的有效性。舉例說明,如果在進行Java程序檢測的時候,同步對象和同步事件沒有得到關聯性的同步,或者同步對象在事件同步的時候操作的不當出現一些技術性的問題等。出現的這些問題有效證明了傳統Java程序的可達性測試存在很多的弊端。所以要應用基于拓展同步序列的可達性測試方法來突破傳統Java程序可達性測試的局限性。
因為傳的Java程序的可達性測試的局限性,很大程度上限制了Java程序測試結果的準確性。在計算機技術不斷發展的過程中,提出了基于拓展同步序列的Java可達性測試方法,在這種測試方法的基礎上解決了很多傳統Java程序的可達性測中出現的問題。基于拓展同步的Java可達性測試,以線程的角度將拓展同步序列作為并發程序測試覆蓋的度量基礎,最終對Java多線程程序進行可達性測試。拓展同步序列的主要工作原理是一定的時間序列范圍內,在構成元素的基礎上實現同步事件和并行事件的關聯。
在有序時間序列和構成元素的同步事件關聯并行事件的基礎上,進行基于拓展同步序列可達性測試方法,是Java多線程程序中同步事件測試的一種有效的同步方法,也可以稱為是一種同步實現的操作過程。下列是擴展同步序列的Java多線程程序可達性測試方法的具體操作的要點和方法。
4.1Java多線程程序執行事件的序列
執行事件的構建需要由專業的Java程序的測試人員來完成,在測試過程中得出程序的靜態條件。程序執行事件中的同步事件,需要技術人員對抽象的同步讀事件或者同步寫事件,用Sr或者Sw進行表示。根據多線程程序中的同步對象進行同步信息的更新,這個過程就程序執行事件中的執行寫事件;對抽取的相關同步信息進行操作就是同步讀事件。在進行單個線程事件序列執行的過程中,要嚴格按照一定的公式順序對測試的各種程序事件進行排列組合,其依據的公式是s[i]=(pk,,…,pm,),其中i表示測試的線程,s表示相關的同步事件,p表示相關的并行事件,上標的數字表示同步對象的版本號,能夠直觀的反映出Java多線程程序中更新同步對象和事件具體狀況。
4.2Java多線程程序的擴展同步序列計算
公式s[i]=(pk,,…,pm,)中的s是Java多線程程序中并發程序中的一個可行性同步序列,p可以看做是其他相關可行性序列的一個前綴。在Java多線程程序的并發程序中,相關可行性同步序列的前綴也是自身序列的一種的競爭元素,這種競爭的元素可以利用計算機構建出相關的競爭元素構成圖,在構成圖的基礎上可以對一定的拓展同步序列進行計算,最終可以得出:如果要保證在可行性擴展同步序列中的子序列具有一定的同步可行性,同步序列中由同步事件的組成的次序保持不變。根據這個得出的結果,可以對多線程程序的可行性同步序列進行計算,計算過程要依據兩個執行序列的公式,分別是消費者執行事件序列和生產者事件執行序列,其執行事件序列公式的分別是:s[2]=(,p1,…,,p1,…)和s[3]=(p2,,p2,,…),最終實現對多線程程序的可行性同步序列的計算。
4.3Java多線程程序的確定性測試
相關的程序測試人員要根據已經構建的Java多線程程序的拓展的同步序列,進行同步序列測試的確定性操作。從現在的對具體操作實踐的具體情況分析來看,同步序列的確定性測試操作經常采用的方法有兩種,分別有:第一,對程序應用的編譯器進行修改,并且根據編譯器的運行情況適當做出程序運行操作系統的和運行環境的修改,最終實現對Java多線程程序事件執行順序的有效控制。第二,利用Java編程程序語言的特殊性實現自身對Java多線程程序事件執行順序的控制。兩種同步序列的確定性測試操作的方法都可以實現同步序列測試確定性操作的有效性,相關的測試人員可以根據實際的Java多線程程序可達性測試的情況,選擇適合當前運行方式和運行環境的方法對程序事件執行順序的控制。
綜上所述,隨著科學技術的不斷發展,計算機信息技術實現在眾多領域中的應用,為我國相關的開發和設計事業提供了技術型的支持。在我國眾多開發領域中較為廣泛應用的一種程序的就是Java程序,雖然在具體的多線程程序可達性測試進行中存在一定難度,但是基于擴展同步序列的可達性測試方法的應用,Java多線程程序的并發性測試取得了良好的應用效果,為我國計算機程序的設計和開發提供了技術參考。
參考文獻
[1]孫玉霞.一個生成Java程序同步序列集的新算法[J].暨南大學學報,2012(05).
[2]王艷臣.基于擴展同步序列的Java多線程程序可達性測試方法[J].東南大學學報,2011(12).
[3]孫小淋.基于擴展同步序列的Java多線程程序可達性測試思路構建探索[J].計算機光盤軟件與應用,2014(04).