?

一種基于數據流/控制流+知識條目的回歸影響域分析方案

2019-10-18 07:52左萬娟虞礪琨王小麗
測試技術學報 2019年5期
關鍵詞:控制流數據流分析方法

左萬娟,虞礪琨,黃 晨,王小麗

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

0 引 言

回歸測試是指被測單元、部件、配置項和系統因各種原因進行更改后的再測試[1],是一種用來保證各種針對軟件的改動不會帶來不可預測的行為或者另外錯誤的測試活動[2],目的是重新驗證一個系統或部件被修改后有沒有造成不期望的副作用,是否仍然符合它的需求規格說明[3].

統計數據表明,回歸測試占軟件維護費用的50%以上[4],大約30%的錯誤都是通過回歸測試發現的[5].從成本、效率角度出發,工程實踐中,回歸測試通常選用基于回歸影響域分析的測試策略.但是,采用該策略的回歸測試質量嚴重依賴于影響域分析的充分性,影響域分析不到位將直接導致回歸測試遺漏.因此,回歸影響域分析技術成為回歸測試的瓶頸技術.

目前,針對回歸影響域分析技術的研究,就其研究本質而言,更多地還是基于數據流/控制流的研究.董燕等[6]從控制結構算法更動、邏輯更動、參數更動等方面對基于代碼更動的影響域分析方法進行了研究,提出了各類更動的分析方法和原則,并將其應用于航天嵌入式軟件,取得了良好的效果;楊貞祥、王德敏等[7,8]對基于控制流和數據流的更動影響域分析方法進行了研究,闡述了分析原理,提出了分析操作步驟;楊波等[9]針對基于變量自身變化和變量間依賴關系的變量行為模型開展了研究,提出了一種基于變量影響分析和數據變異的回歸測試用例方法;侯成杰[10]針對航天器軟件參數修改的影響域分析方法進行了研究,提出基于程序需求覆蓋矩陣和測試用例-需求覆蓋矩陣的回歸測試方法;程曉菊、陳永鄭等[11,12]針對如何利用函數切片獲取代碼更動影響域進行了研究.以上研究,基本都是針對代碼更動的回歸影響域分析研究,多數研究成果較為抽象,缺乏工程實例.另外,針對需求更動的回歸影響域分析,研究較少.

本文從工程實例出發,在已有研究成果的基礎上,對基于數據流/控制流的回歸影響域分析方法進行了進一步地分析和總結.另外,針對需求更動的影響域分析,提出了解決方案.

1 基于數據流/控制流的回歸影響域分析方法

基于數據流/控制流的影響域分析,顧名思義,是以“流”為牽引,開展回歸影響域分析.其技術特點在于分析所有線索,技術難點在于如何保證數據流/控制流分析的全面性和徹底性.

1.1 名詞解釋

對本節用到的名詞解釋如下:

基礎流:指代碼更動直接作用的流.

變異流:指通過變量賦值、函數調用過程中的參數傳遞等操作與基礎流之間建立了依賴關系的流.

1.2 實例分析

以一個第3方評測的典型案例作為分析實例,對基于數據流/控制流的影響域分析方法加以闡述.

1.2.1 更動說明

在第3方評測的首輪確認測試中,評測方提出了如下代碼設計缺陷:代碼針對接收數據長度未采取限幅、或上限判斷處理等保護設計,如果長度超限將導致后續處理中數組訪問越界.

回歸時的代碼更動如圖1所示.

圖1 修改前后代碼對比圖

如圖1所示,代碼修改后,針對接收數據長度STS.RecLen(基礎流)增加了限幅保護設計,限幅值設定為130.

1.2.2 影響域分析

針對上述代碼更動,經影響域分析發現,限幅值設計不當,仍然存在局部數組變量寫訪問越界問題.具體回歸影響域分析過程如表1所示.

1.2.3 問題更正

設計方針對問題代碼進行了進一步修改,將長度限幅值設定為100,從而有效避免了局部數組RecBuf[100]寫訪問越界問題.

表1 影響域分析過程說明表

1.3 分析方法小結

針對基于數據流/控制流的回歸影響域分析而言,如何保證分析的全面性和徹底性是其最突出的技術難點.通過實例分析,總結基于數據流/控制流的回歸影響域分析方法的要點為:

1) 根據代碼更動,以工具為輔助,識別基礎流.

2) 追蹤并分析基礎流,在此過程中,根據變量賦值、函數調用過程中的參數傳遞等操作識別變異流.

3) 追蹤并分析變異流.

4) 對基礎流和變異流務必追蹤到底.

實例分析證明,引入并加強對變異流分析,可以從一定程度上解決基于數據流/控制流的回歸影響域分析的全面性和徹底性問題.

2 基于知識條目的回歸影響域分析方法

基于數據流/控制流的影響域分析,僅適用于代碼更動的影響域分析,無法確認代碼更動是否完全覆蓋了需求更動.下面通過代碼更動遺漏實例分析,給出需求更動影響域分析方案,即,采用基于知識條目的回歸影響域分析方法.

2.1 代碼更動遺漏實例分析

下面是一個代碼更動未覆蓋需求更動的影響域分析遺漏的實例.

2.1.1 問題說明

版本升級后的測試中,向下位機(RT端)軟件輸入1553B總線自檢指令后,上位機(BC端)軟件未能讀取到下位機軟件輸出的自檢結果,通訊失敗.

2.1.2 問題分析

根據需求,下位機軟件(RT端)在收到1553B總線自檢指令后,應通過發送子地址5輸出自檢結果.前期版本的測試結果表明,發送子地址5通訊正常,即,軟件實現滿足需求.由此可見,問題是由版本升級引起的.

版本升級過程中,發生了需求變更,具體變更內容為:軟件在收到1553B總線自檢指令后,輸出自檢結果由1個字改為3個字.

代碼隨之更動,在收到1553B總線自檢指令后,通過發送子地址5輸出的自檢結果由1個字改為3個字.

但是,由于發送子地址5的命令非法表設置仍保持為版本升級之前的狀態,即,1字通訊合法狀態,未根據需求更動進行修改,因而導致發送子地址5命令非法表的設置與變更后的通訊協議(3字通訊狀態)不符,最終導致發送子地址5通訊異常.

綜上,問題發生的根本原因是:子地址的命令非法表設置與協議要求的子地址通訊長度不匹配.

2.1.3 問題更正

設計方針對問題代碼進行了修改,將發送子地址5的命令非法表設置為3字合法.更正后的代碼順利通過測試.

2.1.4 代碼更動遺漏原因分析

針對版本升級時的需求更動(子地址輸出長度由1字改為3字),回歸影響域分析不到位,僅針對子地址輸出的相關代碼進行了修改,未分析出代碼應同步修改子地址命令非法表的初始設置,導致代碼更動未覆蓋需求更動.

2.2 代碼更動遺漏解決方案

上述實例中因需求更動而引入的代碼更動的顯著特點是:子地址輸出與子地址命令非法表設置之間沒有“流”做牽引,即,二者在“流”上完全獨立,無法通過基于數據流/控制流的影響域分析來識別問題.

這種獨立于數據流/控制流的代碼更動,基于一定機理對代碼執行結果產生了影響.為解決此類因需求更動而引入的獨立于數據流/控制流的代碼更動的影響域分析不足問題,可以采用基于知識條目的回歸影響域分析方法.

2.3 基于知識條目的回歸影響域分析方法

基于知識條目的回歸影響域分析方法,是指針對需求更動,基于知識條目,開展影響域分析.即,此類分析,需要掌握一定的“知識”,否則,將導致影響域分析遺漏.

本節遺漏實例的影響域分析所需的知識條目為:當1553B總線某子地址通訊長度發生變化時,應分析子地址命令非法表的初始設置與通訊長度是否匹配.

可見,為確?;谥R條目的回歸影響域分析的順利開展,需要確保知識條目的完備性.

由于回歸影響域分析所需要的知識條目是發散的,一般都需要從需求更動中識別,因此,有必要對此開展專門的研究、分析和總結,建立基于知識條目的回歸影響域分析檢查單,作為基于知識條目的回歸影響域分析方法的應用支撐.表2 給出了相應的示例.

表2 基于知識條目的回歸影響域分析檢查單示例表

3 兩種方法的對比分析

針對基于數據流/控制流的影響域分析方法和基于知識條目的影響域分析方法,進行對比分析如表3所示.

表3 兩種方法的對比分析

4 基于數據流/控制流+知識條目的回歸影響域分析方案

通過對兩種影響域分析方法的對比分析可知,兩種方法特點鮮明、且具有一定的互補性,在回歸測試過程中,引入基于知識條目的影響域分析方法,可以對基于數據流/控制流的影響域分析方法形成必要的補充,二者的有效結合,可以確?;貧w影響域分析的充分性,解決回歸影響域分析不足的瓶頸性問題,由此形成基于數據流/控制流+知識條目的回歸影響域分析方案.同時覆蓋代碼更動影響域分析和需求更動影響域分析,是該方案的突出特點.

目前,在空間飛行器軟件檢測站,已經采用了基于數據流/控制流+知識條目的回歸影響域分析方案開展回歸測試,并借鑒代碼審查過程中代碼檢查單的有效運用,分別針對基于數據流/控制流的回歸影響域分析方法和基于知識條目的回歸影響域分析方法建立了相應的回歸測試檢查單,并將其作為回歸測試過程的關鍵檢查點,從而有效提升了回歸測試質量,避免了因影響域分析不足而導致的回歸測試遺漏.

5 結束語

目前,基于數據流/控制流的影響域分析方法仍然是回歸影響域分析的主流方法.但是,不可否認的是,基于知識條目的回歸影響域分析方法,對基于數據流/控制流的回歸影響域分析方法形成了有效的補充,從一定程度上解決了回歸影響域分析不足的瓶頸問題.為確?;谥R條目的回歸影響域分析方法的有效運用,后續仍需加強研究,逐步形成完備、有效的知識庫體系,并在此基礎上開展工具研發,提升回歸測試效率.

猜你喜歡
控制流數據流分析方法
基于EMD的MEMS陀螺儀隨機漂移分析方法
抵御控制流分析的Python 程序混淆算法
汽車維修數據流基礎(上)
抵御控制流分析的程序混淆算法
一種角接觸球軸承靜特性分析方法
汽車維修數據流基礎(下)
基于控制流的盒圖動態建模與測試
中國設立PSSA的可行性及其分析方法
基于Petri網數據流約束下的業務流程變化域分析
基于數據流聚類的多目標跟蹤算法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合