• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于數(shù)據(jù)流需求模型的測(cè)試用例生成方法

      2023-11-21 14:12:42虞礪琨陳華南王小麗
      電子設(shè)計(jì)工程 2023年22期
      關(guān)鍵詞:控制流接收數(shù)據(jù)測(cè)試用例

      黃 晨,于 倩,虞礪琨,陳華南,王小麗

      (1.北京軒宇信息技術(shù)有限公司,北京 100190;2.北京控制工程研究所,北京 100190)

      航天嵌入式軟件功能算法復(fù)雜度高、涉及數(shù)據(jù)多,功能正確性與應(yīng)用場(chǎng)景、上下文緊密關(guān)聯(lián),傳統(tǒng)的需求分析方式難以清晰展示復(fù)雜功能邏輯、數(shù)據(jù)關(guān)聯(lián)關(guān)系,用例設(shè)計(jì)的質(zhì)量依賴于人員經(jīng)驗(yàn),存在大量重復(fù)性工作[1]?;谀P偷臏y(cè)試方法[2],依據(jù)需求規(guī)格說(shuō)明建立測(cè)試模型,模型的語(yǔ)義和語(yǔ)法定義嚴(yán)格,抽象程度高,所生成的測(cè)試用例集來(lái)自于模型中的數(shù)據(jù)流、對(duì)象流、消息流等形成的路徑集合,具有輸入數(shù)據(jù)和預(yù)期輸出結(jié)果,可以滿足嵌入式軟件測(cè)試標(biāo)準(zhǔn)和要求[3-6]。當(dāng)前模型測(cè)試中的覆蓋準(zhǔn)則和方法主要圍繞模型結(jié)構(gòu)、路徑的覆蓋策略開(kāi)展[6-7],與數(shù)據(jù)流相關(guān)的功能需求需要驗(yàn)證數(shù)據(jù)值與執(zhí)行邏輯的對(duì)應(yīng)關(guān)系及正確性。當(dāng)前針對(duì)數(shù)據(jù)流的測(cè)試基于程序的控制流圖CFG 開(kāi)展,主要關(guān)注程序中變量的定義、使用之間的關(guān)聯(lián)[8]?;诔绦虼a的分析技術(shù)涉及大量表達(dá)式和變量,生成數(shù)據(jù)的消耗非常大,文獻(xiàn)引入了基于蟻群算法[9-11]、神經(jīng)網(wǎng)絡(luò)算法[12]、遺傳算法[13-14]等多種測(cè)試數(shù)據(jù)生成方法來(lái)提升數(shù)據(jù)生成效率。

      文中從星載嵌入式軟件數(shù)據(jù)特性出發(fā),選取活動(dòng)圖模型作為需求建模語(yǔ)言,對(duì)比控制流、數(shù)據(jù)流對(duì)象的語(yǔ)義模型,說(shuō)明適用功能場(chǎng)景、用例數(shù)據(jù)上的差異性,針對(duì)數(shù)據(jù)流對(duì)象需求模型,提出了一種基于路徑數(shù)據(jù)覆蓋的測(cè)試數(shù)據(jù)生成方法,并選取一個(gè)典型功能模型驗(yàn)證方法的有效性。

      1 需求模型及用例設(shè)計(jì)

      1.1 模型及圖元語(yǔ)義

      系統(tǒng)建模語(yǔ)言(Systems Modeling Language,SysML)是標(biāo)準(zhǔn)的面向?qū)ο蟮慕UZ(yǔ)言,使用活動(dòng)圖、狀態(tài)機(jī)圖、序列圖著重表現(xiàn)系統(tǒng)的動(dòng)態(tài)行為[15-16]。活動(dòng)圖圖元有活動(dòng)節(jié)點(diǎn)和活動(dòng)邊,使用活動(dòng)節(jié)點(diǎn)和活動(dòng)邊對(duì)操作之間的流對(duì)象進(jìn)行建模,既能夠表示控制流,也能夠表示對(duì)象流。

      控制流用虛線表示,用于對(duì)一個(gè)節(jié)點(diǎn)流向另一個(gè)節(jié)點(diǎn)的情況進(jìn)行建模。當(dāng)一個(gè)動(dòng)作或活動(dòng)節(jié)點(diǎn)結(jié)束執(zhí)行時(shí),控制流將馬上傳遞到下一個(gè)動(dòng)作或者活動(dòng)節(jié)點(diǎn),類(lèi)似于控制流程,對(duì)象是前一個(gè)活動(dòng)的輸出,后一個(gè)活動(dòng)的輸入??刂屏鲝?qiáng)調(diào)軟件執(zhí)行一串活動(dòng)、動(dòng)作的過(guò)程情況,控制流對(duì)象是軟件的活動(dòng)、動(dòng)作。

      對(duì)象流用實(shí)線表示,包括數(shù)據(jù)流和信號(hào)流兩種。數(shù)據(jù)流的對(duì)象是一個(gè)活動(dòng)的輸入或輸出,表示一種數(shù)據(jù)流關(guān)系。信號(hào)流將一個(gè)信號(hào)發(fā)送、信號(hào)接收與一個(gè)對(duì)象相連接,表示向該對(duì)象發(fā)送、該對(duì)象接收一個(gè)信號(hào)。數(shù)據(jù)流強(qiáng)調(diào)數(shù)據(jù)從一個(gè)活動(dòng)、動(dòng)作流向下一個(gè)活動(dòng)、動(dòng)作的數(shù)據(jù)變化,數(shù)據(jù)流對(duì)象是軟件活動(dòng)、動(dòng)作所產(chǎn)生的數(shù)據(jù)。

      1.2 典型模型及應(yīng)用場(chǎng)景

      以指令接收功能為例,如圖1 和圖2 所示,具體說(shuō)明控制流、數(shù)據(jù)流對(duì)象模型的差異性、功能場(chǎng)景適用性。

      圖1 控制流模型

      圖2 數(shù)據(jù)流模型

      圖1 表示軟件接收到數(shù)據(jù)指令后的一系列動(dòng)作、行為。軟件從接收到啟動(dòng)接收指令后,開(kāi)始接收數(shù)據(jù)。如果數(shù)據(jù)接收完成或者接收數(shù)據(jù)超時(shí),則處理接收到數(shù)據(jù);如果接收數(shù)據(jù)未完成,則繼續(xù)接收數(shù)據(jù)??刂屏髂P椭薪?jīng)常會(huì)出現(xiàn)環(huán)路。

      圖2 表示對(duì)接收到數(shù)據(jù)進(jìn)行校驗(yàn)和處理。軟件對(duì)接收到的數(shù)據(jù)進(jìn)行校驗(yàn),如果校驗(yàn)和正確,則組包正確應(yīng)答數(shù)據(jù)包;如果校驗(yàn)和錯(cuò)誤,則組包錯(cuò)誤應(yīng)答數(shù)據(jù)包。應(yīng)答包組包完成后,發(fā)送該數(shù)據(jù)包。

      采用等價(jià)類(lèi)劃分的方法對(duì)上述控制流和數(shù)據(jù)流模型開(kāi)展用例設(shè)計(jì)。圖1 的控制流模型測(cè)試用例有三個(gè):

      用例1,對(duì)應(yīng)路徑(1)-(2)-(3)-(4)-(6)-(7)。輸入:a.接收到啟動(dòng)接收指令;b.接收數(shù)據(jù)正常。預(yù)期結(jié)果:輸出接收數(shù)據(jù)狀態(tài)為“接收數(shù)據(jù)完成”。

      用例2,對(duì)應(yīng)路徑(1)-(2)-(3)-(4)-(5)-(3)-(4)-(6)-(7)。輸入:a.接收到啟動(dòng)接收指令;b.接收數(shù)據(jù)超時(shí)(數(shù)據(jù)包長(zhǎng)度字段大于實(shí)際接收到數(shù)據(jù)包字節(jié)數(shù))。預(yù)期結(jié)果:輸出接收數(shù)據(jù)狀態(tài)為“接收數(shù)據(jù)超時(shí)”。

      用例3,對(duì)應(yīng)路徑(1)-(2)-(3)-(4)-(5)-(3)-(4)-(6)-(7)。輸入:a.接收到啟動(dòng)接收指令;b.接收數(shù)據(jù)超時(shí)(接收數(shù)據(jù)過(guò)程中,暫停一段時(shí)間,繼續(xù)接收數(shù)據(jù))。預(yù)期結(jié)果:輸出接收數(shù)據(jù)狀態(tài)為“接收數(shù)據(jù)超時(shí)”。

      用例2 和用例3 具有相同的測(cè)試路徑,均存在環(huán)路(3)-(4)-(5)-(3)-(4),但是步驟b 的測(cè)試場(chǎng)景(輸入數(shù)據(jù))有所不同。

      圖2 的數(shù)據(jù)流模型測(cè)試用例有兩個(gè):

      用例1,對(duì)應(yīng)路徑(1)-(2)-(3)-(6)。輸入:接收到校驗(yàn)和正確的串口數(shù)據(jù)。預(yù)期結(jié)果:輸出“正確應(yīng)答數(shù)據(jù)包”。

      用例2,對(duì)應(yīng)路徑(1)-(4)-(5)-(6)。輸入:接收到校驗(yàn)和錯(cuò)誤的串口數(shù)據(jù)。預(yù)期結(jié)果:輸出“錯(cuò)誤應(yīng)答數(shù)據(jù)包”。

      采用控制流建立模型時(shí),重點(diǎn)關(guān)注測(cè)試需求設(shè)計(jì)中來(lái)自于外部事件觸發(fā)的執(zhí)行動(dòng)作、邏輯是否正確。針對(duì)動(dòng)作執(zhí)行序列、狀態(tài)轉(zhuǎn)換過(guò)程等功能,一般建立控制流模型。

      采用數(shù)據(jù)流建立模型時(shí),重點(diǎn)關(guān)注數(shù)據(jù)值對(duì)執(zhí)行邏輯的影響。針對(duì)數(shù)值計(jì)算、數(shù)據(jù)采集與轉(zhuǎn)換等關(guān)注于數(shù)據(jù)處理的功能,一般建立數(shù)據(jù)流模型。

      2 用例數(shù)據(jù)生成

      針對(duì)數(shù)據(jù)流模型,測(cè)試用例的覆蓋性和充分性決定于測(cè)試輸入數(shù)據(jù)能否有效覆蓋模型中的全部有效路徑。

      根據(jù)數(shù)據(jù)流模型中圖元的語(yǔ)義,對(duì)模型結(jié)構(gòu)進(jìn)行解析,將其轉(zhuǎn)換為有向圖,計(jì)算可執(zhí)行路徑;根據(jù)路徑上變量類(lèi)型和輸入域、輸出域范圍、表達(dá)式類(lèi)型及測(cè)試覆蓋要求,求解表達(dá)式中變量數(shù)據(jù)值,作為測(cè)試用例的數(shù)據(jù)。數(shù)據(jù)流模型計(jì)算轉(zhuǎn)換過(guò)程如圖3 所示。

      圖3 計(jì)算轉(zhuǎn)換過(guò)程

      2.1 數(shù)據(jù)流模型

      根據(jù)需求模型中數(shù)據(jù)對(duì)象的變化過(guò)程進(jìn)行建模,判定節(jié)點(diǎn)上為判定表達(dá)式,動(dòng)作節(jié)點(diǎn)上為賦值表達(dá)式。

      2.2 模型結(jié)構(gòu)解析與計(jì)算

      根據(jù)模型圖元及屬性對(duì)結(jié)構(gòu)進(jìn)行解析,建立數(shù)據(jù)流模型中圖元與有向圖的映射關(guān)系,活動(dòng)、動(dòng)作節(jié)點(diǎn)對(duì)應(yīng)有向圖的節(jié)點(diǎn),數(shù)據(jù)流對(duì)應(yīng)有向圖的邊,確定有向圖的初始節(jié)點(diǎn)、終止節(jié)點(diǎn)等基本屬性。采用深度優(yōu)先搜索遍歷有向圖,考慮節(jié)點(diǎn)是否有父節(jié)點(diǎn)、是否有子節(jié)點(diǎn)、父節(jié)點(diǎn)名稱、相鄰節(jié)點(diǎn)、是否遍歷終止節(jié)點(diǎn)等情況,計(jì)算得到可執(zhí)行路徑的集合。

      2.3 數(shù)據(jù)表達(dá)式求解

      2.3.1 變量基本屬性

      模型中涉及的所有變量都需要進(jìn)行基本屬性定義,基本屬性有變量名、輸入/輸出、變量類(lèi)型(靜態(tài)、動(dòng)態(tài))、數(shù)據(jù)類(lèi)型(整形、單精度浮點(diǎn)型、雙精度浮點(diǎn)、結(jié)構(gòu)體等)、有效范圍、離散/連續(xù)、步長(zhǎng)、初值。

      對(duì)于模型變量類(lèi)型,靜態(tài)變量表示初值可觀,數(shù)值來(lái)自于外部設(shè)定;動(dòng)態(tài)變量表示初值無(wú)法直接觀測(cè),數(shù)值由模型中表達(dá)式求解所得。

      2.3.2 表達(dá)式類(lèi)型及測(cè)試覆蓋要求

      將模型中的表達(dá)式分為兩種類(lèi)型和四種子類(lèi)型。類(lèi)型有判定表達(dá)式和賦值表達(dá)式;子類(lèi)型有邏輯表達(dá)式、關(guān)系表達(dá)式、條件表達(dá)式、算術(shù)表達(dá)式。表達(dá)式子類(lèi)型不同,生成數(shù)據(jù)的覆蓋要求不同,要求如圖4 所示。

      圖4 表達(dá)式類(lèi)型及數(shù)據(jù)覆蓋要求

      數(shù)據(jù)覆蓋要求如下:

      1)等價(jià)類(lèi)數(shù)據(jù):有效等價(jià)類(lèi)數(shù)據(jù)為有效取值范圍內(nèi)的典型或者任意數(shù)據(jù);無(wú)效等價(jià)類(lèi)數(shù)據(jù)為有效取值范圍外的典型或者任意數(shù)據(jù)。

      2)邊界值數(shù)據(jù):高端邊界值考慮有效取值范圍內(nèi)等于邊界值,稍小于邊界值,有效取值范圍外稍大于邊界值;低端邊界值考慮有效取值范圍內(nèi)等于邊界值,稍小于邊界值,有效取值范圍外稍大于邊界值。

      3)修正條件判定數(shù)據(jù):數(shù)據(jù)集合應(yīng)滿足每個(gè)輸入輸出至少出現(xiàn)一次,每一個(gè)判定中的每一個(gè)條件必須能夠獨(dú)立影響一個(gè)判定的輸出,即在其他條件不變的前提下僅改變這個(gè)條件的值,而使判定結(jié)果改變的數(shù)據(jù)。4)初始數(shù)據(jù):算術(shù)表達(dá)式變量的初始值。5)指定數(shù)據(jù):算術(shù)表達(dá)式的指定數(shù)據(jù)值。

      2.3.3 表達(dá)式求解

      建立路徑上表達(dá)式組的集合,依據(jù)每類(lèi)表達(dá)式所需滿足的數(shù)據(jù)覆蓋要求求解表達(dá)式組。算法實(shí)現(xiàn)過(guò)程如圖5 所示。

      圖5 表達(dá)式組求解過(guò)程

      2.4 用例數(shù)據(jù)

      根據(jù)測(cè)試用例設(shè)計(jì)要求對(duì)測(cè)試數(shù)據(jù)進(jìn)行分組,形成測(cè)試用例集。確定某個(gè)或多個(gè)靜態(tài)變量的數(shù)值變化規(guī)律作為用例前提條件,測(cè)試用例可包括多個(gè)步驟,每個(gè)步驟包括輸入數(shù)據(jù)和輸出數(shù)據(jù),一個(gè)用例中多個(gè)步驟之間的輸入數(shù)據(jù)值應(yīng)有所不同。

      3 實(shí)例驗(yàn)證

      選取星載嵌入式軟件某數(shù)據(jù)處理功能建立數(shù)據(jù)流對(duì)象模型,該功能屬于算法類(lèi)功能,模型中涉及多個(gè)輸入數(shù)據(jù)排列組合的表達(dá)式,設(shè)計(jì)測(cè)試用例時(shí)考慮輸入數(shù)據(jù)的覆蓋情況。

      依據(jù)輸入文件,建立活動(dòng)圖數(shù)據(jù)流模型作為功能需求模型,生成滿足路徑和數(shù)據(jù)覆蓋的測(cè)試用例集。功能需求模型如圖6 所示。

      圖6 數(shù)據(jù)處理功能模型

      1)變量定義

      根據(jù)變量基本屬性對(duì)圖6 中的模型變量進(jìn)行定義,共定義九個(gè)變量:

      ①I(mǎi)n_A[N]、In_B[N]、In_C[N]:輸入,靜態(tài),整型,有效范圍0/1,離散,步長(zhǎng)無(wú),初值無(wú);

      ②t_Cal[N]、t_P[N]:輸入,動(dòng)態(tài),整型,有效范圍0/1,離散,步長(zhǎng)無(wú),初值無(wú);

      ③N:輸入,靜態(tài),整型,有效范圍6,離散,步長(zhǎng)無(wú),初值無(wú);

      ④i:輸入,靜態(tài),整型,有效范圍0~N-1,離散,步長(zhǎng)1,初值0;

      ⑤num:輸入,靜態(tài),整型,有效范圍3,離散,步長(zhǎng)無(wú),初值3;

      ⑥g_Flag:輸出,靜態(tài),整型,有效范圍0/1,離散,步長(zhǎng)無(wú),初值無(wú)。

      2)變量操作說(shuō)明

      FOR 表示依次遍歷某個(gè)變量中指定范圍的數(shù)據(jù);SUM 表示計(jì)算指定范圍內(nèi)數(shù)值的和。

      3)生成路徑集合

      對(duì)需求模型進(jìn)行解析,圖5 中的數(shù)據(jù)流用編號(hào)進(jìn)行標(biāo)識(shí),生成全部路徑六條,可執(zhí)行路徑三條,刪除不可執(zhí)行三條路徑。路徑集合為:①路徑1:(1)-(2)-(3)-(5)-(6)-(8)-(9),可執(zhí)行;②路徑2:(1)-(2)-(3)-(5)-(7)-(8)-(9),可執(zhí)行;③路徑3:(1)-(2)-(4)-(8)-(10),可執(zhí)行;④路徑4:(1)-(2)-(3)-(5)-(6)-(8)-(10),不可執(zhí)行;⑤路徑5:(1)-(2)-(3)-(5)-(7)-(8)-(10),不可執(zhí)行;⑥路徑6:(1)-(2)-(4)-(8)-(9),不可執(zhí)行。

      4)生成表達(dá)式組集合

      根據(jù)表達(dá)式類(lèi)型建立每條路徑上的表達(dá)式組集合,求解生成表達(dá)組的輸入數(shù)據(jù)集合,在三條可執(zhí)行路徑上共生成六組表達(dá)式集合,選取可執(zhí)行路徑1和3 上表達(dá)式組進(jìn)行說(shuō)明,如圖7 所示。

      圖7 表達(dá)式組示例

      5)測(cè)試用例集生成

      ①路徑1(1)-(2)-(3)-(5)-(6)-(8)-(9)表達(dá)式組

      當(dāng)In_A 有且僅有四個(gè)1 時(shí),生成15 組數(shù)據(jù);當(dāng)In_A 有且僅有五個(gè)1 時(shí),生成6 組數(shù)據(jù);當(dāng)In_A 有且僅有六個(gè)1 時(shí),生成1 組數(shù)據(jù)。

      滿足等價(jià)類(lèi)數(shù)據(jù)覆蓋要求,形成三個(gè)測(cè)試用例,具體如表1-3 所示。測(cè)試用例1 考慮當(dāng)In_A 有且僅有四個(gè)1 的情況;測(cè)試用例2 考慮當(dāng)In_A 有且僅有五個(gè)1 的情況;測(cè)試用例3 考慮當(dāng)In_A 有且僅有六個(gè)1 的情況。

      表1 測(cè)試用例1

      表2 測(cè)試用例2

      表3 測(cè)試用例3

      ③路徑3(1)-(2)-(4)-(8)-(10)表達(dá)式組

      在In_A有且僅有兩個(gè)1,In_B、In_C輸入值有解情況下,生成15 組數(shù)據(jù);在In_A 有且僅有一個(gè)1,In_B、In_C 輸入值有解的情況下,生成六組數(shù)據(jù);在In_A 全0,In_B、In_C 輸入值有解的情況下,生成一組數(shù)據(jù)。

      滿足等價(jià)類(lèi)數(shù)據(jù)覆蓋要求,形成三個(gè)測(cè)試用例。

      4 結(jié)論

      文中選取活動(dòng)圖模型作為需求建模語(yǔ)言,活動(dòng)圖中控制流和數(shù)據(jù)流對(duì)象在適用功能場(chǎng)景、用例數(shù)據(jù)方面具有差異,控制流強(qiáng)調(diào)軟件執(zhí)行一串活動(dòng)、動(dòng)作的過(guò)程情況;數(shù)據(jù)流強(qiáng)調(diào)從一個(gè)活動(dòng)、動(dòng)作流向下一個(gè)活動(dòng)、動(dòng)作的數(shù)據(jù)變化。建立數(shù)據(jù)流對(duì)象模型,設(shè)定變量類(lèi)型、有效范圍等基本屬性,對(duì)模型解析后得到可執(zhí)行路徑及表達(dá)式組,可求解生成滿足測(cè)試覆蓋要求的數(shù)據(jù)及測(cè)試用例集,這種方法將測(cè)試重點(diǎn)放在測(cè)試需求分析及建模上,既能有效縮短用例設(shè)計(jì)時(shí)間又同時(shí)保證生成測(cè)試用例的充分性,大幅提升測(cè)試效率。

      基于模型的自動(dòng)化測(cè)試方法,在提升需求分析能力的同時(shí)保證測(cè)試充分性,后續(xù)結(jié)合領(lǐng)域軟件特征及用例設(shè)計(jì)要求,繼續(xù)研究典型需求建模方法,推進(jìn)模型測(cè)試在航天領(lǐng)域的工程化應(yīng)用。

      猜你喜歡
      控制流接收數(shù)據(jù)測(cè)試用例
      沖激噪聲背景下基于幅度預(yù)處理的測(cè)向新方法*
      抵御控制流分析的Python 程序混淆算法
      工控系統(tǒng)中PLC安全漏洞及控制流完整性研究
      電子科技(2021年2期)2021-01-08 02:25:58
      抵御控制流分析的程序混淆算法
      基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
      低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計(jì)方法
      基于混合遺傳算法的回歸測(cè)試用例集最小化研究
      單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
      基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
      基于控制流隱藏的代碼迷惑
      石河子市| 开封市| 庆云县| 武安市| 太湖县| 宜宾县| 潮安县| 商水县| 宜都市| 沿河| 济源市| 溧阳市| 名山县| 保靖县| 安新县| 嘉祥县| 荥阳市| 桃园县| 台北市| 湘乡市| 清丰县| 五峰| 绥阳县| 大丰市| 西充县| 临猗县| 靖安县| 高安市| 定西市| 固始县| 顺昌县| 昌邑市| 兴安盟| 沛县| 白水县| 巩留县| 杂多县| 蓬莱市| 淳化县| 保亭| 乐东|