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