• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于擴展同步序列的Java多線程程序可達性測試思路構建探索

    2014-01-01 00:00:00孫小淋
    計算機光盤軟件與應用 2014年4期

    摘 要:針對Java程序的并發(fā)性特點,應用可達性測試是一種有效的方法。但是,為了克服Java多線程程序在應用可達性測試的過程中,所產生的局限性和不能實現(xiàn)對事件的同步檢測,或者同步檢測錯誤等問題,需要應用一種基于擴展同步序列的可達性測試方法。

    關鍵詞:擴展;同步序列;Java多線程程序;可達性;測試思路

    中圖分類號:TP311.11

    基于擴展同步序列的Java多線程程序可達性測試,是一種測試Java多線程程序的有效方法,主要包括3個部分,分別是構建Java多線程程序流圖、計算擴展同步序列和確定性測試。經過一定的試驗和研究之后發(fā)現(xiàn),應用同步擴展序列,可以有效的解決可達性測試的局限性、事件不同步或者同步等錯誤。

    1 簡述基于擴展同步序列的Java多線程程序可達性測試

    1.1 Java可達性測試的定義

    1994年,可達性測試方法的提出,在非確定性測試方法的思想基礎上,總結出了新的測試思想。并且,以確定性測試方法作為基礎進行了一定的改革和創(chuàng)新。通過這些有效的結合和改革,形成了一種新的方法,用于實現(xiàn)對Java并發(fā)程序的測試。在實現(xiàn)對Java程序測試的時候,應用的測試策略主要是基于路徑的測試策略。測試Java的并發(fā)程序,應用的方法主要是同步序列,覆蓋了測試度量。同步序列主要是指一種有序的時間序列,是由同步的對象和事件共同組成的。同步對象是指一種共享對象,Java并發(fā)程序中的多個不同的進程或者線程都可實現(xiàn)訪問;同步事件主要是指一個操作過程,針對的是同步對象,也是人們說的對象事件。在Java多線程程序的可達性測試過程中,保證測試象數(shù)據的完整性,需要保證同步對象操作的同步化。這種同步化操作過程,就是可達性測試中的同步事件。而在Java多線程程序的可達性測試過程中,不能實現(xiàn)同步化操作的過程,就是非同步事件。

    1.2 基于擴展同步序列Java可達性測試的必要性

    傳統(tǒng)的可達性方法在測試過程中的基礎是度量同步序列的覆蓋,但是同步序列中,同步對象的同步事件是基本的組成元素,沒有涉及到源Java程序中的非同步事件等程序的組成部分。這種現(xiàn)象導致Java程度的可達性測試過程中,對錯誤的覆蓋率比較低,檢測的范圍也受到了一定的限制,存在比較大的局限性。這種檢測方法不能實現(xiàn)對Java程序中并發(fā)性的有效檢測。例如,Java程度檢測的過程中,同步的對象沒有實現(xiàn)對象事件的同步,以及因為同步對象的事件同步不當所造成的一些問題等。這些問題充分的說明了傳統(tǒng)Java程序可達性測試的局限性。針對這一現(xiàn)象,需要在對Java多線程程序的并發(fā)性進行測試的過程中,應用基于擴展同步序列的可達性測試方法。

    1.3 基于擴展同步序列Java可達性測試

    針對Java程序并發(fā)性可達性測試過程中出現(xiàn)的局限性,人們提出了基于擴展同步序列的Java可達性測試方法,有效的解決了Java程序可達性測試中出現(xiàn)的問題。這種方法主要是從線程的角度出發(fā),將擴展同步序列作為并發(fā)程序的測試覆蓋的度量基礎,實現(xiàn)對Java多線程程序的可達性測試。擴展同步序列主要是指一個有序的時間序列,基本的構成元素是同步事件和并行事件。其中,在Java程序的并發(fā)程序中,對同步對象進行語法判定為同步操作過程的事件,被稱為同步事件。

    2 基于擴展同步序列的可達性測試方法

    基于擴展同步序列的可達性測試方法,主要是一個有序的時間序列,構成的基本元素包括同步事件和并行事件。就Java多線程程序而言,可達性測試中的同步事件主要是指一種同步方法或者是一種同步塊實現(xiàn)的操作過程。本文以JTFD這一Java多線程程序流圖為例,分析Java多線程程序的基于擴展同步序列的可達性測試方法。

    圖1 生產者-消費者程序JTFD圖

    2.1 Java多線程程序執(zhí)行事件的序列

    根據JTFD,Java程序的測試人員可以完成對事件序列的構建,并且分析出競態(tài)條件。一般情況下,對于同步事件,測試人員可以抽象出同步讀事件或者同步寫事件,分別用sr和sw表示。同步寫事件主要是指針對Java多線程程序中的同步對象,所操作的同步信息更新過程;同步讀事件主要是指抽取同步信心所實施的同步操作過程。單個線程的執(zhí)行事件序列,主要是按照一定的順序排列組成的,是在測試用例條件下對同步事件和并行事件的排列,表示的公式是:其中線程用i進行表示,并行事件用p表示,同步事件用s表示,上標是對同步對象版本號的一種表示,主要的作用是反映出Java多線程程序中更新同步對象和事件的一種狀況。版本號的初始值是0。

    2.2 Java多線程程序的擴展同步序列計算

    針對Java多線程程序中并發(fā)程序p的其中一個可行性同步序列s,并發(fā)程序p中的其它可行性同步序列前綴,可以看做是是同步序列s的競爭對手。換一種說法就是,針對Java多線程程序中并發(fā)程序p的其中一個可行性同步序列s’來說,并發(fā)程序p中的其它可行性同步序列前綴,都可以當做是自身的競爭對手。同步序列的競爭對手,主要的計算依據就是競爭對手圖的構造。根據同步擴展序列的定義,可以得出計算擴展同步序列的定理:可行性擴展同步序列中由同步事件組成的次序不變子序列是一個可行性同步序列。根據這一定理,可以針對JTFD的多線程程序可行性同步序列進行計算,消費者線程執(zhí)行的事件序列是: 2.3 Java多線程程序的確定性測試

    在構建完成Java多線程程序的擴展同步序列之后,測試人員要實現(xiàn)對所有擴展同步序列的確定性測試。目前,在Java多線程程序中的擴展同步序列確定性測試過程中,應用的方法主要有兩種。第一種是修改編譯器、程序運行操作系統(tǒng)或者運行環(huán)境,實現(xiàn)對程序事件執(zhí)行順序的控制;第二種是通過Java程序語言的自身實現(xiàn)對程序事件執(zhí)行順序的控制。在實際的Java多線程程序可達性測試過程中,測試人員可以根據實際的情況,選擇合適的方式實現(xiàn)對程序事件執(zhí)行順序的控制。

    3 結束語

    計算機信息技術的迅速發(fā)展,為我國不同程度的開發(fā)和設計提供了有效的技術支持。Java程序是目前我國程序中的應用比較廣泛的一種,它的并發(fā)性測試筆串行程序的測試更加困難。應用基于擴展同步序列的可達性測試方法實現(xiàn)對Java多線程程序的并發(fā)性測試,具有良好的效果,促進了我國程序的開發(fā)和設計。

    參考文獻:

    [1]孫玉霞,陳火炎.一個用于Java程序可達性測試的改進方案[J].微計算機信息,2006(18).

    [2]孫玉霞.一個生成Java程序同步序列集的新算法[J].暨南大學學報(自然科學與醫(yī)學版),2006(05).

    [3]王艷臣.并發(fā)程序測試——基于擴展同步序列的Java多線程程序可達性測試方法[M].東南大學(軟件與理論),2007.

    作者簡介:孫小淋(1981.08-),女,山東煙臺人,本科,助教,研究方向:計算機、動漫教育。

    作者單位:煙臺職業(yè)學院,山東煙臺 264670

    饶阳县| 太白县| 乌拉特后旗| 钦州市| 六枝特区| 深水埗区| 灵台县| 宽甸| 乐清市| 昌黎县| 赤水市| 白玉县| 德保县| 壤塘县| 陆川县| 高淳县| 馆陶县| 金昌市| 永川市| 耒阳市| 肇庆市| 缙云县| 尚义县| 日喀则市| 沙洋县| 安图县| 凤庆县| 正阳县| 安溪县| 桂阳县| 乌拉特前旗| 沁水县| 常德市| 阿拉尔市| 浦城县| 扶沟县| 桓台县| 唐河县| 涿鹿县| 甘泉县| 宁强县|