一種基于功能塊圖測試模型自動生成測試用例的方法
【技術領域】
[0001] 本發明涉及嵌入式軟件開發的軟件測試技術,具體涉及一種基于功能塊圖測試模 型自動生成測試用例的方法。
【背景技術】
[0002] 軟件測試是軟件質量的一個重要保證,在軟件測試領域,測試用例和測試腳本的 編寫一直是軟件測試的一項重要工作,測試用例和測試腳本的質量對于測試的質量和被測 軟件的質量有重大的影響,針對同樣的需求,不同水平的測試人員編寫的測試用例和測試 腳本質量相差很大,而且人工編寫測試用例和測試腳本工作量很大,效率較低。
[0003] 基于模型的測試(Model based testing,簡稱MBT)屬于軟件測試領域的一種測 試方法,它通過建立測試場景或測試模型(以下簡稱測試模型),自動生成測試用例和測試 代碼。它是軟件測試的一種新興技術,與傳統測試技術相比,MBT更直觀、更容易理解,能夠 自動生成測試數據,測試覆蓋率高,測試用例的邏輯路徑能方便的展示出來,方便校核需求 與代碼,省去大量的重復代碼的編寫工作,測試用例的代碼由測試模型生成,能夠提升測試 效率,而且MBT模型形象直觀、更容易理解,它通過算法自動生成測試用例與測試腳本,能 夠提高測試設計與測試用例的質量。目前基于模型的測試研宄主要有因果圖、判定表、正 交表、FSM有限狀態機、UML統一建模語言模型等建模方法,但是因果圖、正交表測試建模方 法,無法處理時序問題和狀態轉移問題;基于FSM有限狀態機的測試建模存在模型爆炸的 缺點;UML適用于面向對象的軟件開發的測試建模,不適用于面向過程的軟件開發的測試 建模。
[0004] 如圖1所示,基于模型的測試的一般步驟為:分析軟件的需求規格、根據需求建 立模型、模型分析與檢查、根據模型生成測試用例以及根據模型或測試用例生成測試腳本。 目前,國內外對于MBT測試技術的都進行了大量的研宄,形成了一些MBT的測試方法,目 前典型的MBT測試方法有以下幾類:基于因果圖模型的測試方法、基于判定表(Decision Tables)模型的測試方法、基于正交表模型的測試方法、基于FSM (Finite-state machine) 有限狀態機模型的測試建模方法、基于UML (Unified Modeling Language)統一建模語言的 測試方法模型。
[0005] 因果圖(cause effect graphics)是一種形式化語言,是一種組合邏輯網絡圖。因 果圖把輸入條件視為原因,把輸出或程序狀態的改變視為結果,將黑盒看成是從因到果的 網絡圖,采用邏輯圖的形式來表達功能說明書中輸入條件的各種組合與輸出的關系。基于 因果圖模型的測試方法的基本原理是通過因果圖,把用自然語言描述的功能說明轉換為判 定表,然后為判定表的每一列設計一個測試用例。
[0006] 因果圖模型輸入輸出主要包含以下兩種關系:原因與結果之間的關系、輸入及輸 出條件的關系。如圖2所示,原因與結果之間的關系包括恒等、非、或和與四種關系。如圖 3所示,輸入及輸出條件的關系包括異、或、唯一、要求和強制五種關系。
[0007] 如圖4所示,現有技術的基于因果圖模型的測試方法一般分為5個步驟:(1)分析 需求規格,提取原因和結果。分析軟件規格說明描述中,哪些是原因(即輸入條件或輸入條 件的等級類),哪些是結果(即輸出條件),并給每個原因和結果賦予一個標識符。(2)建立 因果圖模型。分析軟件規格說明描述中的語義,找出原因與結果之間,原因與原因之間對應 的關系,根據這些關系,畫出因果圖。(3)建立因果圖中輸入、輸出的約束關系。由于語法或 環境限制,有些原因與原因之間,原因與結果之間的組合情況不可能出現,為表明這些特殊 情況,在因果圖上用一些記號表明約束或限制條件。(4)把因果圖轉換為判定表。(5)根 據判定表生成測試用例。把判定表的每一列拿出來作為依據,自動生成測試用例。
[0008] 基于因果圖建模的測試方法邏輯性強,對于需求的表達清晰明了、易于理解,它不 僅僅考慮輸入之間的邏輯組合,并且考慮了輸入之間的約束關系,可以通過約束關系,避免 輸入組合的爆炸,降低測試用例數量,但是基于因果圖模型的測試方法存在以下缺點:(1)、 基于因果圖模型的測試方法對于時序關系不敏感,當需求中涉及時序(延時、脈沖)關系 時,因果圖模型無法清晰地表述。(2)、基于因果圖模型的測試對于邊界不敏感,當出現比 較邏輯(大于、等于、大于等于、小于、小于等于)時,因果圖建模無法提取相應的邊界,只能 人工去提取邊界。(3)、基于因果圖模型的測試方法對于運算邏輯不敏感,當出現運算邏輯 (加、減、乘、除、求模、取余)時,因果圖模型無法對這些運算邏輯進行識別,也無法對運算 邏輯進行測試分解。(4)、基于因果圖模型的測試方法無法識別軟件的狀態和狀態之間的轉 移關系,因此只能生成測試用例,而無法生成可執行的自動化測試腳本。
【發明內容】
[0009] 本發明要解決的技術問題是:針對現有技術的上述問題,提供一種對時序關系敏 感、對邊界敏感、對運算邏輯敏感、能夠識別軟件的狀態和狀態之間的轉移關系的基于功能 塊圖測試模型自動生成測試用例的方法。
[0010] 為了解決上述技術問題,本發明采用的技術方案為:
[0011] 一種基于功能塊圖測試模型自動生成測試用例的方法,步驟包括:
[0012] 1)提取嵌入式軟件的需求規格中的輸入與輸出、邏輯關系和約束關系,根據軟件 的需求規格中的輸入輸出、邏輯關系和約束關系建立基于類功能塊圖語言的功能塊圖測試 豐旲型;
[0013] 2)建立用于將功能塊圖測試模型轉換為數據組合表的轉換規則;
[0014] 3)從功能塊圖測試模型中提取基礎數據,然后在基礎數據的基礎上根據所述轉換 規則進行數據衍生,從而將功能塊圖測試模型轉換為數據組合表;
[0015] 4)根據數據組合表生成測試用例。
[0016] 優選地,所述步驟1)的詳細步驟如下:
[0017] 1. 1)提取嵌入式軟件的需求規格中的輸入與輸出;
[0018] 1. 2)定義輸入與輸出的數據類型、取值范圍、默認測試數據;
[0019] 1. 3)分析所有輸入與輸出之間的邏輯關系,將輸入與輸出之間的邏輯關系采用模 型元素描述出來,畫出功能塊圖測試模型圖;
[0020] 1. 4)分析所有輸入之間的約束關系,并在功能塊圖測試模型圖上表示出所述約束 關系。
[0021]優選地,所述步驟1. 1)中嵌入式軟件的需求規格中的輸入需要滿足的要求包括: 輸入的數據類型確定、輸入的數據取值范圍確定、輸入的數據的精度確定、輸入的數據要具 備用于生成測試用例時優先取值的默認測試取值。
[0022] 優選地,所述步驟1. 3)中的模型元素包括邏輯關系、邏輯比較、運算邏輯、約束關 系、時序關系、觸發器或累加器共六種類型的模型元素,所述邏輯關系包括與、或、非、異或 以及同或,所述邏輯比較包括恒等、不等、大于、大于等于、小于以及小于等于,所述運算邏 輯包括加、減、乘、除、求余、取模、最大值以及最小值,所述約束關系包括E約束、R約束、M約 束、〇約束以及I約束,所述時序關系包括上升沿延時、下降沿延時以及脈沖,所述觸發器或 累加器包括RS觸發器、SR觸發器、遞增計數器以及遞減計數器;所述模型元素在滿足可編 程邏輯控制器標準IEC61131的基礎上還包含模型元素的測試屬性;所述模型元素的基本 屬性在滿足可編程邏輯控制器標準IEC61131的基礎上,還包括模型元素的名稱、輸入或輸 出數量、輸入或輸出數據類型,輸入與輸出之間的邏輯關系;所述模型元素的測試屬性包含 輸入與輸入之間的測試組合關系,輸入與輸出之間的測試分解關系。
[0023] 優選地,所述步驟2)的詳細步驟包括:
[0024] 2. 1)針對功能塊圖測試模型采用以輸出為導向、倒序進行層次劃分,使得同一個 模型元素的輸入屬于同一個層次的輸入,從而建立用于將功能塊圖測試模型轉換為數據組 合表的分層規則;
[0025] 2. 2)針對功能塊圖測試模型中的每一個模型元素,建立用于將功能塊圖測試模型 轉換為數據組合表時,用于使同一個模型元素的輸入實現軟件測試的最優覆蓋的測試數據 組合覆蓋規則及優先規則;
[0026] 2. 3)建立用于將功能塊圖測試模型轉換為數據組合表的約束規則,最終得到由分 層規則、測試數據組合覆蓋規則及優先規則、約束規則構成的轉換規則。
[0027] 優選地,所述步驟3)的詳細步驟包括:
[0028] 3. 1)以功能塊圖測試模型的直接輸出為導向,根據用于將功能塊圖測試模型轉換 為數據組合表的分層規則及優先規則,逆向推導功能塊圖測試模型的原始數據,建立數據 組合表的第一組數據組合;
[0029] 3. 2)將第一組數據組合作為基礎數據組合,根據用于將功能塊圖測試模