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

基于樁函數動態賦值的軟件覆蓋率測試方法

2020-12-23 07:55:06萬東燕羅睿梅李俊山
制導與引信 2020年2期

萬東燕, 羅睿梅, 李俊山, 陳 鋮

(上海無線電設備研究所,上海201109)

0 引言

軟件測試[1]是軟件研發過程中的一個重要環節,通過軟件測試可以及時發現軟件缺陷,保障軟件的安全性和可靠性。單元測試是軟件開發過程中最基礎的測試項,是軟件的獨立單元在與程序的其他部分相隔離的情況下進行的測試。其中代碼覆蓋率能夠體現代碼的執行情況。測試人員可以通過覆蓋率指標,分析代碼執行范圍,完善測試用例,有效提高軟件測試質量。

在軟件測試的過程中,執行單次的測試用例時,某些函數的輸入變量激勵會在代碼執行過程中發生動態變化。若測試用例中的輸入變量激勵不能對應進行動態更新,則需激勵更新才能進入的相關語句無法完成測試,代碼覆蓋率測試也無法完成。為了解決這一問題,測試人員需要在設計的測試用例中模擬輸入變量激勵的變化條件,來完成測試。本文結合專業的測試工具,研究了變量激勵可動態更新的樁函數賦值法,并設計靈活的測試用例,以保障測試質量、提高測試效率。

1 軟件的單元測試

1.1 單元測試方法

單元測試的主要目的是驗證軟件單元是否滿足詳細設計規格說明,發現需求和設計中的錯誤。測試用例是影響單元測試效率和效果的重要因素[2]。本文采取黑盒與白盒結合的方法對軟件進行測試。利用黑盒測試方法中的等價劃分法和邊界值分析法來設計測試用例。等價劃分法[3]基于輸入條件的等價類評估,在每個等價類中選取有代表性的測試用例,從而達到等價類覆蓋的要求。由于程序錯誤常在定義域和等價類的邊緣被發現,所以需要對每個測試變量進行邊界值分析。邊界值分析[4]是等價類劃分的精煉,即選擇每個類的邊界或終點進行測試。

覆蓋率是軟件開發過程中重要的度量指標,具體包括語句覆蓋、分支覆蓋、條件覆蓋等。覆蓋率測試[5]作為一種白盒測試,其主要作用包括:a)評估測試質量,根據軟件代碼的覆蓋率報告,發現漏測場景,為測試人員及時補充新的測試用例提供指導;b)幫助識別冗余代碼,對程序代碼進行優化與重構。

1.2 單元測試工具

Testbed是一款專業的軟件測試工具,可用于生成和維護測試腳本,編譯并運行測試可執行程序,查看測試結果和覆蓋率數據。其中,Testbed/TBrun模塊可執行軟件的單元測試[6]。該模塊可以在運行測試用例對軟件功能進行測試的同時,分析得出軟件單元相應代碼的測試覆蓋情況,評估測試狀態,從而為設計新的測試用例提供指導。

2 測試用例的設計

2.1 測試用例生成基礎

(1)單元測試環境

為了方便對嵌入式軟件進行單元測試,在測試前首先要去除代碼中的硬件相關部分,將其移植到Testbed相應的測試環境中。移植的過程不會影響軟件的功能,測試環境與現實環境差異不大,能夠確保測試的有效性和可靠性。

單元測試的對象是不可獨立運行的函數單元。測試時需要建立兩種輔助測試模塊:驅動模塊(driver)和樁模塊(stub)。驅動模塊用于模擬被測函數的上層模塊,樁模塊用于模擬被測函數在執行過程中所調用的其他函數,以保證被測單元能完整閉合地運行。在單元測試中,被測函數可能調用多個其他函數,故可能存在多個樁函數。

(2)樁函數

樁函數是根據測試需要編寫的,用于替代被測函數調用的函數。樁函數有兩種情況:一是該樁函數在被測函數中不需要返回特定值,不需要作其他處理;二是該樁函數在被測函數中需要返回特定值,不同返回值會影響代碼運行與輸出結果,需要根據測試需求,在Testbed/TBrun模塊中進行相應的返回值設置。

在樁函數中設置返回值時,通常只支持輸入變量激勵的一次性靜態賦值,在代碼的運行過程中不能進行修改。由于這一局限,導致無法直接對在單次執行過程中需多次變更輸入變量激勵的函數進行測試。同時這一問題會在覆蓋率測試中反映,由于對應的分支和語句無法被執行,所以覆蓋率測試也無法完全完成。為了解決這一問題,需要分析進入不同分支的變量激勵的更新要求,并設計可動態更新的樁函數返回值,來模擬進入相應分支的條件,完成測試。

以某數字信號處理軟件為例,測試其誤差處理函數DJDMBJC時,需要調用函數Find Max-Point來獲取并返回最大值變量max_data。在測試軟件運行過程中,函數Find Max Point中變量max_data的值會在執行過程中動態更新,軟件通過判斷變量值所在范圍,進入相應程序分支,相關程序流程如圖1所示。

圖1 誤差處理函數測試程序流程圖

由圖1可知,該段代碼調用了兩次函數Find-MaxPoint,并讀取max_data的值,判斷該值并進入對應的執行語句。對函數DJDMBJC進行測試時,若要到達第二個判斷框,則需在第一個判斷處進入“否”分支,即滿足max_data≤12。在該前提下,若max_data的值無法更新,則只能進入第二個判斷框的“否”分支,而無法進入與“執行語句2”對應的“是”分支,無法對該段代碼完成測試覆蓋。因此,在測試中,需要研究樁函數返回值的設置方法,實現輸入變量激勵的動態更新。

2.2 樁函數返回值賦值法

為了解決2.1節中由于被測單元函數所調用樁函數的輸入變量激勵值無法更新,導致覆蓋率測試不能完成的問題,提出一種樁函數返回值動態賦值方法。根據Testbed/TBrun模塊中樁函數的代碼運行方式,在樁函數的后臺代碼段中構造并聲明一個整型變量count,用來記錄不同賦值點的位置。位置i對應的返回值ai即為該時刻的變量值,當函數運行到count值所對應的位置i時,將返回值ai賦值給變量max_data,從而實現被調用的樁函數輸入變量激勵的動態更新。具體實現過程如圖2所示,其中n代表變量激勵動態更新的次數。

將上述方法應用于2.1節函數DJDMBJC的測試用例設計。執行改進后的測試用例,將兩次調用樁函數后的變量max_data激勵值從11更新為13,即可先進入圖1中的第一個“否”語句,再進入第二個“是”語句,實現不同分支的全部執行。

圖2 樁函數返回值動態賦值程序流程圖

2.3 測試用例的設計實現

本文被測軟件中,變量max_data的取值范圍為0~25。由判定條件max_data>12可知,12為判斷邊界值,即該變量的邊界值為0,12和25。對變量進行等價類與邊界值分析,結果如表1所示。

表1 等價類與邊界值分析

由圖1可知,當max_data≤12時,程序會進入第一個“否”分支,然后對已更新的變量max_data值進行第二次判斷。因此,在進行邊界值測試時,要考慮兩次函數調用時變量的判斷邊界。結合變量max_data的判斷邊界,對測試用例進行覆蓋有效等價類和邊界值測試與覆蓋無效等價類和邊界值測試分類,實現程序邊界的完整分析與覆蓋,測試用例設計如表2所示。其中max_data_1和max_data_2分別代表第一和第二個判斷框對應的max_data的值。通過對兩處的max_data進行分類賦值,即可達到函數功能以及語句與分支的全部覆蓋。

執行改進的測試用例前后,函數DJDMBJC的測試覆蓋率如表3所示。在函數DJDMBJC的測試過程中,執行改進的測試用例,語句與分支判定的覆蓋率分別由90%、93%提高到100%,解決了函數測試分支無法到達的問題,實現了該函數的覆蓋率測試,提升了測試質量。

表2 測試用例表

表3 函數DJDMBJC測試覆蓋率 %

3 結論

本文以Testbed軟件為測試工具,提出了變量激勵可動態更新的樁函數返回值設計方法,解決了單元測試中語句和分支覆蓋率測試不全的問題。結合等價類劃分與邊界值測試,設計全面且高效的測試用例,有效地精簡了測試用例個數,提高了測試用例設計的準確性和測試效率,對提升測試質量具有重要的積極意義。

主站蜘蛛池模板: 国产精品久久久久久搜索| 欧美综合中文字幕久久| 久久狠狠色噜噜狠狠狠狠97视色| 五月天香蕉视频国产亚| 国产va在线观看| 成年人福利视频| 粉嫩国产白浆在线观看| 成年看免费观看视频拍拍| 国产午夜人做人免费视频中文| 人妻精品全国免费视频| 久久无码av三级| 国产在线八区| 午夜福利无码一区二区| 色天堂无毒不卡| 亚洲综合二区| 欧美黄网在线| 亚洲色图狠狠干| 99精品国产自在现线观看| 国产精品爽爽va在线无码观看 | 亚洲成年人网| 国产成人综合网在线观看| 国产靠逼视频| 国产日韩欧美精品区性色| 无码一区中文字幕| 在线视频一区二区三区不卡| 亚洲成人网在线观看| 免费毛片a| 欧美激情视频在线观看一区| 亚洲最大福利网站| 婷婷五月在线| 狂欢视频在线观看不卡| 久久精品亚洲热综合一区二区| 亚洲男人的天堂久久香蕉| 日韩最新中文字幕| 欧美精品亚洲二区| 亚洲男人天堂2020| 国产成人亚洲精品蜜芽影院| 久久这里只精品热免费99| 中文字幕在线免费看| 国产精品偷伦视频免费观看国产| av无码久久精品| 久久亚洲国产视频| 色婷婷狠狠干| A级毛片高清免费视频就| 六月婷婷精品视频在线观看 | 日本不卡在线播放| 国产麻豆精品久久一二三| 亚洲欧美一区二区三区图片| 福利一区在线| 国产欧美日韩在线一区| 精品少妇人妻一区二区| 在线观看国产黄色| 91免费国产高清观看| 19国产精品麻豆免费观看| 亚洲视频免| 欧美激情视频二区| 国产精品熟女亚洲AV麻豆| 日韩欧美国产另类| 久一在线视频| 精品综合久久久久久97超人| 午夜a视频| 久久久精品无码一区二区三区| 久久精品人人做人人| 韩国自拍偷自拍亚洲精品| 亚洲欧美成人| 国产成在线观看免费视频| 国产自在线拍| 精品一区二区三区水蜜桃| 国产亚洲一区二区三区在线| 丁香婷婷综合激情| 日韩福利视频导航| 国产情精品嫩草影院88av| 日韩高清一区 | 国产第一页免费浮力影院| 国产精品亚洲欧美日韩久久| 国产高清不卡| 国产青青操| 人妻精品全国免费视频| 国产精品尤物在线| 在线观看无码av免费不卡网站| 在线免费看黄的网站| 精品无码视频在线观看|