左萬娟,虞礪琨,黃 晨,王小麗
(1.北京控制工程研究所,北京 100190;2.北京軒宇信息技術(shù)有限公司,北京 100190)
回歸測(cè)試是指被測(cè)單元、部件、配置項(xiàng)和系統(tǒng)因各種原因進(jìn)行更改后的再測(cè)試[1],是一種用來保證各種針對(duì)軟件的改動(dòng)不會(huì)帶來不可預(yù)測(cè)的行為或者另外錯(cuò)誤的測(cè)試活動(dòng)[2],目的是重新驗(yàn)證一個(gè)系統(tǒng)或部件被修改后有沒有造成不期望的副作用,是否仍然符合它的需求規(guī)格說明[3].
統(tǒng)計(jì)數(shù)據(jù)表明,回歸測(cè)試占軟件維護(hù)費(fèi)用的50%以上[4],大約30%的錯(cuò)誤都是通過回歸測(cè)試發(fā)現(xiàn)的[5].從成本、效率角度出發(fā),工程實(shí)踐中,回歸測(cè)試通常選用基于回歸影響域分析的測(cè)試策略.但是,采用該策略的回歸測(cè)試質(zhì)量嚴(yán)重依賴于影響域分析的充分性,影響域分析不到位將直接導(dǎo)致回歸測(cè)試遺漏.因此,回歸影響域分析技術(shù)成為回歸測(cè)試的瓶頸技術(shù).
目前,針對(duì)回歸影響域分析技術(shù)的研究,就其研究本質(zhì)而言,更多地還是基于數(shù)據(jù)流/控制流的研究.董燕等[6]從控制結(jié)構(gòu)算法更動(dòng)、邏輯更動(dòng)、參數(shù)更動(dòng)等方面對(duì)基于代碼更動(dòng)的影響域分析方法進(jìn)行了研究,提出了各類更動(dòng)的分析方法和原則,并將其應(yīng)用于航天嵌入式軟件,取得了良好的效果;楊貞祥、王德敏等[7,8]對(duì)基于控制流和數(shù)據(jù)流的更動(dòng)影響域分析方法進(jìn)行了研究,闡述了分析原理,提出了分析操作步驟;楊波等[9]針對(duì)基于變量自身變化和變量間依賴關(guān)系的變量行為模型開展了研究,提出了一種基于變量影響分析和數(shù)據(jù)變異的回歸測(cè)試用例方法;侯成杰[10]針對(duì)航天器軟件參數(shù)修改的影響域分析方法進(jìn)行了研究,提出基于程序需求覆蓋矩陣和測(cè)試用例-需求覆蓋矩陣的回歸測(cè)試方法;程曉菊、陳永鄭等[11,12]針對(duì)如何利用函數(shù)切片獲取代碼更動(dòng)影響域進(jìn)行了研究.以上研究,基本都是針對(duì)代碼更動(dòng)的回歸影響域分析研究,多數(shù)研究成果較為抽象,缺乏工程實(shí)例.另外,針對(duì)需求更動(dòng)的回歸影響域分析,研究較少.
本文從工程實(shí)例出發(fā),在已有研究成果的基礎(chǔ)上,對(duì)基于數(shù)據(jù)流/控制流的回歸影響域分析方法進(jìn)行了進(jìn)一步地分析和總結(jié).另外,針對(duì)需求更動(dòng)的影響域分析,提出了解決方案.
基于數(shù)據(jù)流/控制流的影響域分析,顧名思義,是以“流”為牽引,開展回歸影響域分析.其技術(shù)特點(diǎn)在于分析所有線索,技術(shù)難點(diǎn)在于如何保證數(shù)據(jù)流/控制流分析的全面性和徹底性.
對(duì)本節(jié)用到的名詞解釋如下:
基礎(chǔ)流:指代碼更動(dòng)直接作用的流.
變異流:指通過變量賦值、函數(shù)調(diào)用過程中的參數(shù)傳遞等操作與基礎(chǔ)流之間建立了依賴關(guān)系的流.
以一個(gè)第3方評(píng)測(cè)的典型案例作為分析實(shí)例,對(duì)基于數(shù)據(jù)流/控制流的影響域分析方法加以闡述.
1.2.1 更動(dòng)說明
在第3方評(píng)測(cè)的首輪確認(rèn)測(cè)試中,評(píng)測(cè)方提出了如下代碼設(shè)計(jì)缺陷:代碼針對(duì)接收數(shù)據(jù)長度未采取限幅、或上限判斷處理等保護(hù)設(shè)計(jì),如果長度超限將導(dǎo)致后續(xù)處理中數(shù)組訪問越界.
回歸時(shí)的代碼更動(dòng)如圖1所示.
圖1 修改前后代碼對(duì)比圖
如圖1所示,代碼修改后,針對(duì)接收數(shù)據(jù)長度STS.RecLen(基礎(chǔ)流)增加了限幅保護(hù)設(shè)計(jì),限幅值設(shè)定為130.
1.2.2 影響域分析
針對(duì)上述代碼更動(dòng),經(jīng)影響域分析發(fā)現(xiàn),限幅值設(shè)計(jì)不當(dāng),仍然存在局部數(shù)組變量寫訪問越界問題.具體回歸影響域分析過程如表1所示.
1.2.3 問題更正
設(shè)計(jì)方針對(duì)問題代碼進(jìn)行了進(jìn)一步修改,將長度限幅值設(shè)定為100,從而有效避免了局部數(shù)組RecBuf[100]寫訪問越界問題.
表1 影響域分析過程說明表
針對(duì)基于數(shù)據(jù)流/控制流的回歸影響域分析而言,如何保證分析的全面性和徹底性是其最突出的技術(shù)難點(diǎn).通過實(shí)例分析,總結(jié)基于數(shù)據(jù)流/控制流的回歸影響域分析方法的要點(diǎn)為:
1) 根據(jù)代碼更動(dòng),以工具為輔助,識(shí)別基礎(chǔ)流.
2) 追蹤并分析基礎(chǔ)流,在此過程中,根據(jù)變量賦值、函數(shù)調(diào)用過程中的參數(shù)傳遞等操作識(shí)別變異流.
3) 追蹤并分析變異流.
4) 對(duì)基礎(chǔ)流和變異流務(wù)必追蹤到底.
實(shí)例分析證明,引入并加強(qiáng)對(duì)變異流分析,可以從一定程度上解決基于數(shù)據(jù)流/控制流的回歸影響域分析的全面性和徹底性問題.
基于數(shù)據(jù)流/控制流的影響域分析,僅適用于代碼更動(dòng)的影響域分析,無法確認(rèn)代碼更動(dòng)是否完全覆蓋了需求更動(dòng).下面通過代碼更動(dòng)遺漏實(shí)例分析,給出需求更動(dòng)影響域分析方案,即,采用基于知識(shí)條目的回歸影響域分析方法.
下面是一個(gè)代碼更動(dòng)未覆蓋需求更動(dòng)的影響域分析遺漏的實(shí)例.
2.1.1 問題說明
版本升級(jí)后的測(cè)試中,向下位機(jī)(RT端)軟件輸入1553B總線自檢指令后,上位機(jī)(BC端)軟件未能讀取到下位機(jī)軟件輸出的自檢結(jié)果,通訊失敗.
2.1.2 問題分析
根據(jù)需求,下位機(jī)軟件(RT端)在收到1553B總線自檢指令后,應(yīng)通過發(fā)送子地址5輸出自檢結(jié)果.前期版本的測(cè)試結(jié)果表明,發(fā)送子地址5通訊正常,即,軟件實(shí)現(xiàn)滿足需求.由此可見,問題是由版本升級(jí)引起的.
版本升級(jí)過程中,發(fā)生了需求變更,具體變更內(nèi)容為:軟件在收到1553B總線自檢指令后,輸出自檢結(jié)果由1個(gè)字改為3個(gè)字.
代碼隨之更動(dòng),在收到1553B總線自檢指令后,通過發(fā)送子地址5輸出的自檢結(jié)果由1個(gè)字改為3個(gè)字.
但是,由于發(fā)送子地址5的命令非法表設(shè)置仍保持為版本升級(jí)之前的狀態(tài),即,1字通訊合法狀態(tài),未根據(jù)需求更動(dòng)進(jìn)行修改,因而導(dǎo)致發(fā)送子地址5命令非法表的設(shè)置與變更后的通訊協(xié)議(3字通訊狀態(tài))不符,最終導(dǎo)致發(fā)送子地址5通訊異常.
綜上,問題發(fā)生的根本原因是:子地址的命令非法表設(shè)置與協(xié)議要求的子地址通訊長度不匹配.
2.1.3 問題更正
設(shè)計(jì)方針對(duì)問題代碼進(jìn)行了修改,將發(fā)送子地址5的命令非法表設(shè)置為3字合法.更正后的代碼順利通過測(cè)試.
2.1.4 代碼更動(dòng)遺漏原因分析
針對(duì)版本升級(jí)時(shí)的需求更動(dòng)(子地址輸出長度由1字改為3字),回歸影響域分析不到位,僅針對(duì)子地址輸出的相關(guān)代碼進(jìn)行了修改,未分析出代碼應(yīng)同步修改子地址命令非法表的初始設(shè)置,導(dǎo)致代碼更動(dòng)未覆蓋需求更動(dòng).
上述實(shí)例中因需求更動(dòng)而引入的代碼更動(dòng)的顯著特點(diǎn)是:子地址輸出與子地址命令非法表設(shè)置之間沒有“流”做牽引,即,二者在“流”上完全獨(dú)立,無法通過基于數(shù)據(jù)流/控制流的影響域分析來識(shí)別問題.
這種獨(dú)立于數(shù)據(jù)流/控制流的代碼更動(dòng),基于一定機(jī)理對(duì)代碼執(zhí)行結(jié)果產(chǎn)生了影響.為解決此類因需求更動(dòng)而引入的獨(dú)立于數(shù)據(jù)流/控制流的代碼更動(dòng)的影響域分析不足問題,可以采用基于知識(shí)條目的回歸影響域分析方法.
基于知識(shí)條目的回歸影響域分析方法,是指針對(duì)需求更動(dòng),基于知識(shí)條目,開展影響域分析.即,此類分析,需要掌握一定的“知識(shí)”,否則,將導(dǎo)致影響域分析遺漏.
本節(jié)遺漏實(shí)例的影響域分析所需的知識(shí)條目為:當(dāng)1553B總線某子地址通訊長度發(fā)生變化時(shí),應(yīng)分析子地址命令非法表的初始設(shè)置與通訊長度是否匹配.
可見,為確保基于知識(shí)條目的回歸影響域分析的順利開展,需要確保知識(shí)條目的完備性.
由于回歸影響域分析所需要的知識(shí)條目是發(fā)散的,一般都需要從需求更動(dòng)中識(shí)別,因此,有必要對(duì)此開展專門的研究、分析和總結(jié),建立基于知識(shí)條目的回歸影響域分析檢查單,作為基于知識(shí)條目的回歸影響域分析方法的應(yīng)用支撐.表2 給出了相應(yīng)的示例.
表2 基于知識(shí)條目的回歸影響域分析檢查單示例表
針對(duì)基于數(shù)據(jù)流/控制流的影響域分析方法和基于知識(shí)條目的影響域分析方法,進(jìn)行對(duì)比分析如表3所示.
表3 兩種方法的對(duì)比分析
通過對(duì)兩種影響域分析方法的對(duì)比分析可知,兩種方法特點(diǎn)鮮明、且具有一定的互補(bǔ)性,在回歸測(cè)試過程中,引入基于知識(shí)條目的影響域分析方法,可以對(duì)基于數(shù)據(jù)流/控制流的影響域分析方法形成必要的補(bǔ)充,二者的有效結(jié)合,可以確?;貧w影響域分析的充分性,解決回歸影響域分析不足的瓶頸性問題,由此形成基于數(shù)據(jù)流/控制流+知識(shí)條目的回歸影響域分析方案.同時(shí)覆蓋代碼更動(dòng)影響域分析和需求更動(dòng)影響域分析,是該方案的突出特點(diǎn).
目前,在空間飛行器軟件檢測(cè)站,已經(jīng)采用了基于數(shù)據(jù)流/控制流+知識(shí)條目的回歸影響域分析方案開展回歸測(cè)試,并借鑒代碼審查過程中代碼檢查單的有效運(yùn)用,分別針對(duì)基于數(shù)據(jù)流/控制流的回歸影響域分析方法和基于知識(shí)條目的回歸影響域分析方法建立了相應(yīng)的回歸測(cè)試檢查單,并將其作為回歸測(cè)試過程的關(guān)鍵檢查點(diǎn),從而有效提升了回歸測(cè)試質(zhì)量,避免了因影響域分析不足而導(dǎo)致的回歸測(cè)試遺漏.
目前,基于數(shù)據(jù)流/控制流的影響域分析方法仍然是回歸影響域分析的主流方法.但是,不可否認(rèn)的是,基于知識(shí)條目的回歸影響域分析方法,對(duì)基于數(shù)據(jù)流/控制流的回歸影響域分析方法形成了有效的補(bǔ)充,從一定程度上解決了回歸影響域分析不足的瓶頸問題.為確保基于知識(shí)條目的回歸影響域分析方法的有效運(yùn)用,后續(xù)仍需加強(qiáng)研究,逐步形成完備、有效的知識(shí)庫體系,并在此基礎(chǔ)上開展工具研發(fā),提升回歸測(cè)試效率.