999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于數據流需求模型的測試用例生成方法

2023-11-21 14:12:42虞礪琨陳華南王小麗
電子設計工程 2023年22期
關鍵詞:模型

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

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

航天嵌入式軟件功能算法復雜度高、涉及數據多,功能正確性與應用場景、上下文緊密關聯,傳統的需求分析方式難以清晰展示復雜功能邏輯、數據關聯關系,用例設計的質量依賴于人員經驗,存在大量重復性工作[1]。基于模型的測試方法[2],依據需求規格說明建立測試模型,模型的語義和語法定義嚴格,抽象程度高,所生成的測試用例集來自于模型中的數據流、對象流、消息流等形成的路徑集合,具有輸入數據和預期輸出結果,可以滿足嵌入式軟件測試標準和要求[3-6]。當前模型測試中的覆蓋準則和方法主要圍繞模型結構、路徑的覆蓋策略開展[6-7],與數據流相關的功能需求需要驗證數據值與執行邏輯的對應關系及正確性。當前針對數據流的測試基于程序的控制流圖CFG 開展,主要關注程序中變量的定義、使用之間的關聯[8]。基于程序代碼的分析技術涉及大量表達式和變量,生成數據的消耗非常大,文獻引入了基于蟻群算法[9-11]、神經網絡算法[12]、遺傳算法[13-14]等多種測試數據生成方法來提升數據生成效率。

文中從星載嵌入式軟件數據特性出發,選取活動圖模型作為需求建模語言,對比控制流、數據流對象的語義模型,說明適用功能場景、用例數據上的差異性,針對數據流對象需求模型,提出了一種基于路徑數據覆蓋的測試數據生成方法,并選取一個典型功能模型驗證方法的有效性。

1 需求模型及用例設計

1.1 模型及圖元語義

系統建模語言(Systems Modeling Language,SysML)是標準的面向對象的建模語言,使用活動圖、狀態機圖、序列圖著重表現系統的動態行為[15-16]。活動圖圖元有活動節點和活動邊,使用活動節點和活動邊對操作之間的流對象進行建模,既能夠表示控制流,也能夠表示對象流。

控制流用虛線表示,用于對一個節點流向另一個節點的情況進行建模。當一個動作或活動節點結束執行時,控制流將馬上傳遞到下一個動作或者活動節點,類似于控制流程,對象是前一個活動的輸出,后一個活動的輸入。控制流強調軟件執行一串活動、動作的過程情況,控制流對象是軟件的活動、動作。

對象流用實線表示,包括數據流和信號流兩種。數據流的對象是一個活動的輸入或輸出,表示一種數據流關系。信號流將一個信號發送、信號接收與一個對象相連接,表示向該對象發送、該對象接收一個信號。數據流強調數據從一個活動、動作流向下一個活動、動作的數據變化,數據流對象是軟件活動、動作所產生的數據。

1.2 典型模型及應用場景

以指令接收功能為例,如圖1 和圖2 所示,具體說明控制流、數據流對象模型的差異性、功能場景適用性。

圖1 控制流模型

圖2 數據流模型

圖1 表示軟件接收到數據指令后的一系列動作、行為。軟件從接收到啟動接收指令后,開始接收數據。如果數據接收完成或者接收數據超時,則處理接收到數據;如果接收數據未完成,則繼續接收數據。控制流模型中經常會出現環路。

圖2 表示對接收到數據進行校驗和處理。軟件對接收到的數據進行校驗,如果校驗和正確,則組包正確應答數據包;如果校驗和錯誤,則組包錯誤應答數據包。應答包組包完成后,發送該數據包。

采用等價類劃分的方法對上述控制流和數據流模型開展用例設計。圖1 的控制流模型測試用例有三個:

用例1,對應路徑(1)-(2)-(3)-(4)-(6)-(7)。輸入:a.接收到啟動接收指令;b.接收數據正常。預期結果:輸出接收數據狀態為“接收數據完成”。

用例2,對應路徑(1)-(2)-(3)-(4)-(5)-(3)-(4)-(6)-(7)。輸入:a.接收到啟動接收指令;b.接收數據超時(數據包長度字段大于實際接收到數據包字節數)。預期結果:輸出接收數據狀態為“接收數據超時”。

用例3,對應路徑(1)-(2)-(3)-(4)-(5)-(3)-(4)-(6)-(7)。輸入:a.接收到啟動接收指令;b.接收數據超時(接收數據過程中,暫停一段時間,繼續接收數據)。預期結果:輸出接收數據狀態為“接收數據超時”。

用例2 和用例3 具有相同的測試路徑,均存在環路(3)-(4)-(5)-(3)-(4),但是步驟b 的測試場景(輸入數據)有所不同。

圖2 的數據流模型測試用例有兩個:

用例1,對應路徑(1)-(2)-(3)-(6)。輸入:接收到校驗和正確的串口數據。預期結果:輸出“正確應答數據包”。

用例2,對應路徑(1)-(4)-(5)-(6)。輸入:接收到校驗和錯誤的串口數據。預期結果:輸出“錯誤應答數據包”。

采用控制流建立模型時,重點關注測試需求設計中來自于外部事件觸發的執行動作、邏輯是否正確。針對動作執行序列、狀態轉換過程等功能,一般建立控制流模型。

采用數據流建立模型時,重點關注數據值對執行邏輯的影響。針對數值計算、數據采集與轉換等關注于數據處理的功能,一般建立數據流模型。

2 用例數據生成

針對數據流模型,測試用例的覆蓋性和充分性決定于測試輸入數據能否有效覆蓋模型中的全部有效路徑。

根據數據流模型中圖元的語義,對模型結構進行解析,將其轉換為有向圖,計算可執行路徑;根據路徑上變量類型和輸入域、輸出域范圍、表達式類型及測試覆蓋要求,求解表達式中變量數據值,作為測試用例的數據。數據流模型計算轉換過程如圖3 所示。

圖3 計算轉換過程

2.1 數據流模型

根據需求模型中數據對象的變化過程進行建模,判定節點上為判定表達式,動作節點上為賦值表達式。

2.2 模型結構解析與計算

根據模型圖元及屬性對結構進行解析,建立數據流模型中圖元與有向圖的映射關系,活動、動作節點對應有向圖的節點,數據流對應有向圖的邊,確定有向圖的初始節點、終止節點等基本屬性。采用深度優先搜索遍歷有向圖,考慮節點是否有父節點、是否有子節點、父節點名稱、相鄰節點、是否遍歷終止節點等情況,計算得到可執行路徑的集合。

2.3 數據表達式求解

2.3.1 變量基本屬性

模型中涉及的所有變量都需要進行基本屬性定義,基本屬性有變量名、輸入/輸出、變量類型(靜態、動態)、數據類型(整形、單精度浮點型、雙精度浮點、結構體等)、有效范圍、離散/連續、步長、初值。

對于模型變量類型,靜態變量表示初值可觀,數值來自于外部設定;動態變量表示初值無法直接觀測,數值由模型中表達式求解所得。

2.3.2 表達式類型及測試覆蓋要求

將模型中的表達式分為兩種類型和四種子類型。類型有判定表達式和賦值表達式;子類型有邏輯表達式、關系表達式、條件表達式、算術表達式。表達式子類型不同,生成數據的覆蓋要求不同,要求如圖4 所示。

圖4 表達式類型及數據覆蓋要求

數據覆蓋要求如下:

1)等價類數據:有效等價類數據為有效取值范圍內的典型或者任意數據;無效等價類數據為有效取值范圍外的典型或者任意數據。

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

3)修正條件判定數據:數據集合應滿足每個輸入輸出至少出現一次,每一個判定中的每一個條件必須能夠獨立影響一個判定的輸出,即在其他條件不變的前提下僅改變這個條件的值,而使判定結果改變的數據。4)初始數據:算術表達式變量的初始值。5)指定數據:算術表達式的指定數據值。

2.3.3 表達式求解

建立路徑上表達式組的集合,依據每類表達式所需滿足的數據覆蓋要求求解表達式組。算法實現過程如圖5 所示。

圖5 表達式組求解過程

2.4 用例數據

根據測試用例設計要求對測試數據進行分組,形成測試用例集。確定某個或多個靜態變量的數值變化規律作為用例前提條件,測試用例可包括多個步驟,每個步驟包括輸入數據和輸出數據,一個用例中多個步驟之間的輸入數據值應有所不同。

3 實例驗證

選取星載嵌入式軟件某數據處理功能建立數據流對象模型,該功能屬于算法類功能,模型中涉及多個輸入數據排列組合的表達式,設計測試用例時考慮輸入數據的覆蓋情況。

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

圖6 數據處理功能模型

1)變量定義

根據變量基本屬性對圖6 中的模型變量進行定義,共定義九個變量:

①In_A[N]、In_B[N]、In_C[N]:輸入,靜態,整型,有效范圍0/1,離散,步長無,初值無;

②t_Cal[N]、t_P[N]:輸入,動態,整型,有效范圍0/1,離散,步長無,初值無;

③N:輸入,靜態,整型,有效范圍6,離散,步長無,初值無;

④i:輸入,靜態,整型,有效范圍0~N-1,離散,步長1,初值0;

⑤num:輸入,靜態,整型,有效范圍3,離散,步長無,初值3;

⑥g_Flag:輸出,靜態,整型,有效范圍0/1,離散,步長無,初值無。

2)變量操作說明

FOR 表示依次遍歷某個變量中指定范圍的數據;SUM 表示計算指定范圍內數值的和。

3)生成路徑集合

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

4)生成表達式組集合

根據表達式類型建立每條路徑上的表達式組集合,求解生成表達組的輸入數據集合,在三條可執行路徑上共生成六組表達式集合,選取可執行路徑1和3 上表達式組進行說明,如圖7 所示。

圖7 表達式組示例

5)測試用例集生成

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

當In_A 有且僅有四個1 時,生成15 組數據;當In_A 有且僅有五個1 時,生成6 組數據;當In_A 有且僅有六個1 時,生成1 組數據。

滿足等價類數據覆蓋要求,形成三個測試用例,具體如表1-3 所示。測試用例1 考慮當In_A 有且僅有四個1 的情況;測試用例2 考慮當In_A 有且僅有五個1 的情況;測試用例3 考慮當In_A 有且僅有六個1 的情況。

表1 測試用例1

表2 測試用例2

表3 測試用例3

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

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

滿足等價類數據覆蓋要求,形成三個測試用例。

4 結論

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

基于模型的自動化測試方法,在提升需求分析能力的同時保證測試充分性,后續結合領域軟件特征及用例設計要求,繼續研究典型需求建模方法,推進模型測試在航天領域的工程化應用。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 天天色综网| 99re热精品视频国产免费| av一区二区三区高清久久| 四虎在线观看视频高清无码 | 中文无码毛片又爽又刺激| 视频一区亚洲| 熟女视频91| 国产无码精品在线| 国产高潮视频在线观看| 亚洲国产精品一区二区第一页免 | 精品一区二区三区水蜜桃| 日本日韩欧美| 四虎国产在线观看| 美女无遮挡被啪啪到高潮免费| 亚洲最黄视频| 无码 在线 在线| 9丨情侣偷在线精品国产| 美女内射视频WWW网站午夜| 国产成人一区二区| 9999在线视频| 天天综合色网| 亚洲无码37.| 亚洲欧洲日韩综合色天使| 四虎AV麻豆| 91青青在线视频| 无码有码中文字幕| 亚洲制服丝袜第一页| 国产香蕉一区二区在线网站| 白浆视频在线观看| 久久精品无码一区二区国产区 | 亚洲欧洲日韩国产综合在线二区| 亚洲区第一页| 免费国产高清精品一区在线| 国产成人a毛片在线| 狠狠躁天天躁夜夜躁婷婷| 欧美日韩国产成人在线观看| 国产精品亚欧美一区二区| 欧美一区福利| 亚洲精品国产精品乱码不卞| 无码精品国产dvd在线观看9久 | 波多野结衣视频网站| 国产亚洲精品97在线观看| 欧洲成人免费视频| 麻豆精品在线| 国产主播在线一区| 国产激情无码一区二区三区免费| 日本尹人综合香蕉在线观看| 青青热久免费精品视频6| 久久夜色精品| 欧美a在线看| 国产第一页免费浮力影院| 美女一级毛片无遮挡内谢| 精品人妻一区二区三区蜜桃AⅤ| 欧美特黄一级大黄录像| 亚洲 欧美 日韩综合一区| 亚洲无码视频图片| a级免费视频| 91系列在线观看| 美女一级免费毛片| 少妇被粗大的猛烈进出免费视频| 国产精品黄色片| 欧美在线视频a| 国产福利小视频在线播放观看| 国产成人调教在线视频| 国产白浆视频| 一级毛片基地| 精品色综合| 日本91视频| 九九香蕉视频| 久久精品aⅴ无码中文字幕 | 中文字幕在线不卡视频| 在线视频一区二区三区不卡| 欧美一区精品| 国产丝袜无码一区二区视频| 综合亚洲网| 国产精品丝袜在线| 日韩大片免费观看视频播放| 蝌蚪国产精品视频第一页| 亚洲国产第一区二区香蕉| 久青草国产高清在线视频| 成年A级毛片| 一区二区三区国产|