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

基于SmartRocket 的箭載嵌入式軟件集成測試

2023-11-29 11:26:12中國電子科技集團(tuán)公司第三十二研究所蘇青琴李鳳雯周蘭英

中國電子科技集團(tuán)公司第三十二研究所 蘇青琴 李鳳雯 周蘭英

針對目前箭載嵌入式軟件集成測試工具測試用例編寫時間長、人力成本高、測試用例報告適用性低等方面的問題,提出一種基于SmartRocket 的箭載嵌入式軟件集成測試方法。SmartRocket 采用廣度優(yōu)先自頂向下集成測試方法確定集成測試組合,基于動態(tài)符號執(zhí)行技術(shù)自動生成集成測試用例,在滿足函數(shù)覆蓋和調(diào)用覆蓋指標(biāo)下生成與實際要求相符的測試用例報告。通過實驗發(fā)現(xiàn),該集成測試方法能夠很好地實現(xiàn)集成測試用例自動化,提高了測試用例報告適用性,一定程度地增加了箭載嵌入式軟件集成測試人員的測試效率。

隨著嵌入式軟件在各個領(lǐng)域的廣泛應(yīng)用,對嵌入式軟件的各項要求也越來越高,特別是作為航天產(chǎn)業(yè)的箭載嵌入式軟件的測試工作變得尤為重要。集成測試作為一種重要的箭載嵌入式軟件測試方法,能在早期發(fā)現(xiàn)與軟件設(shè)計相關(guān)的模塊調(diào)用關(guān)系以及模塊間接口方面的問題。目前主要使用的箭載嵌入式軟件集成測試工具為Testbed[1]和VeterCast。Testbded 無法自動生成集成測試用例,增加了測試時間和人力成本;VeterCast 雖然可以自動生成測試用例,但生成的測試用例報告需要編寫腳本轉(zhuǎn)化成實際使用的測試用例報告,導(dǎo)致適用性不高。為了改進(jìn)Testbed 和VeterCast 這兩種集成測試工具的不足,結(jié)合具體箭載嵌入式軟件實踐,形成了基于SmartRocket 的箭載嵌入式軟件集成測試方法。

1 SmartRocket

SmartRocket 是一種基于動態(tài)符號執(zhí)行技術(shù)的集成測試工具。SmartRocket 工具能自動生成集成測試用例,并采用函數(shù)覆蓋、調(diào)用覆蓋作為集成測試指標(biāo),自動生成符合實際需要的測試用例報告。

1.1 動態(tài)符號技術(shù)

動態(tài)符號執(zhí)行技術(shù)[2]是實際執(zhí)行和符號執(zhí)行同時執(zhí)行的技術(shù)。對于與符號無關(guān)的操作或變量等程序會實際執(zhí)行,對于與符號相關(guān)的操作或變量等程序會符號執(zhí)行。符號執(zhí)行將程序中的每一個輸入變量作為符號處理,將不同的路徑約束條件用輸入的符號來執(zhí)行,符號執(zhí)行會模擬程序執(zhí)行并收集所有路徑上的約束信息[3]。最終,約束求解器會根據(jù)每條路徑上的符號組合信息求得每條路徑的輸入。

如圖1 所示是一個程序代碼轉(zhuǎn)化成符號執(zhí)行控制流程圖的示例。程序的輸入是一個整型變量i和一個整型變量j,若i+j>0,則將返回i;否則,返回-i。

圖1 程序代碼轉(zhuǎn)化符號執(zhí)行流程圖Fig.1 Program code conversion symbol execution flowchart

如圖2 所示是符號執(zhí)行的路徑圖。首先隨機(jī)輸入i為1,j為2,依據(jù)該隨機(jī)輸入值可以到達(dá)一條路徑終點4;接著對約束條件取反得到新的輸入i為1,j為-2,依據(jù)該新的輸入可以到達(dá)另一條路徑終點6,從而覆蓋了所有的路徑。

圖2 符號執(zhí)行路徑圖Fig.2 Symbol execution path diagram

1.2 測試用例自動生成

SmartRocket 能夠自動生成集成測試用例。以C 語言為例說明SmartRocket 自動生成集成測試用例的過程。SmartRocket 將接收到的.c 和.h 源文件轉(zhuǎn)化成可識別格式,使用C 語言編譯器對源文件進(jìn)行預(yù)處理和編譯,得到抽象語法樹。在抽象語法樹的基礎(chǔ)上構(gòu)造出含有程序結(jié)構(gòu)和信息的控制流程圖。以控制流圖的初始節(jié)點為起始點,采用搜索算法[4]尋找下一個節(jié)點,只有當(dāng)識別出分支條件時才會執(zhí)行該分支。在遍歷整個控制流程圖過程中,將所有約束條件收集起來添加到一個路徑,當(dāng)搜索到終點時求解該路徑,并轉(zhuǎn)換成能夠識別的集成測試用例。

2 集成測試

集成測試依據(jù)軟件概要設(shè)計并遵循特定的策略和步驟,將已經(jīng)通過單元測試的各個軟件單元(或模塊)逐步組合在一起進(jìn)行測試,以期通過測試發(fā)現(xiàn)各軟件單元接口之間存在的問題。

2.1 集成測試方法

集成測試方法包括漸增式和非漸增式兩大類,其中漸增式測試又可分為自頂向下、自底向上和三明治集成三種方法[5],而自頂向下的漸增式測試方法又可以分為深度優(yōu)先自頂向下測試法和廣度優(yōu)先自頂向下測試法。

SmartRocket 工具采用廣度優(yōu)先自頂向下集成測試法。

廣度優(yōu)先自頂向下的集成測試分為以下三個步驟:

(1)用主控制模塊(如圖3 中D1 所示)做測試驅(qū)動模塊,用樁模塊代替所有間接被主控模塊調(diào)用的模塊。

圖3 廣度優(yōu)先自頂向下集成測試Fig.3 Breadth first top down integration testing

(2)根據(jù)廣度優(yōu)先法(如圖3 中從D1 出發(fā),先集成M1、M2 及M3,接著是S1、S2 這一層,以此類推)和新模塊的選擇原則,每次用一個實際單元替代一個被調(diào)用的樁模塊,并開發(fā)該單元可能需要的樁模塊。

(3)每組裝一個新模塊,測試一個,直到新模塊為系統(tǒng)函數(shù)。

2.2 集成測試覆蓋準(zhǔn)則

SmartRocket 工具支持集成測試的函數(shù)覆蓋和調(diào)用覆蓋兩大覆蓋準(zhǔn)則。

2.2.1 函數(shù)覆蓋

函數(shù)覆蓋是指程序中所有被調(diào)不同函數(shù)(除系統(tǒng)函數(shù))均被調(diào)用一次。函數(shù)覆蓋是條件最弱的一種集成覆蓋準(zhǔn)則。其原因是它只考慮了被調(diào)不同函數(shù)只調(diào)用一次,忽略了同一個被調(diào)函數(shù)[6]可能在不同的分支被調(diào)用多次。舉例說明函數(shù)覆蓋的局限性,如圖4 所示。

圖4 函數(shù)覆蓋局限性實例Fig.4 Function coverage limitation instance

按照函數(shù)覆蓋的標(biāo)準(zhǔn),該集成的覆蓋率已經(jīng)達(dá)到了100%,然而卻沒有發(fā)現(xiàn)明顯的錯誤,如當(dāng)x為-1 時,程序會出現(xiàn)除零異常。因此,函數(shù)覆蓋沒有考慮到相同被調(diào)函數(shù)的邏輯性,需要結(jié)合其他的集成測試方法來使用。

2.2.2 調(diào)用覆蓋

調(diào)用覆蓋是指程序中所有被調(diào)函數(shù)均被調(diào)用。調(diào)用覆蓋需要結(jié)合分支覆蓋指標(biāo),確保程序真假分支上的被調(diào)函數(shù)都遍歷過至少一次。調(diào)用覆蓋更能準(zhǔn)確地反映集成測試的集成關(guān)系。

3 實驗與分析

以編譯環(huán)境為Rede 的箭載嵌入式軟件中的BC 模式初始化功能為例,使用SmartRocket 進(jìn)行集成測試。集成關(guān)系如圖5 所示,其中printf 函數(shù)為系統(tǒng)函數(shù)。

圖5 集成關(guān)系Fig.5 Integration relationship

3.1 配置集成測試環(huán)境

首先新建編譯環(huán)境Rede 和GCC;其次創(chuàng)建項目信息(項目名稱、版本號、項目類型、編譯器),并上傳被測項目文件;最后選擇集成測試的覆蓋準(zhǔn)則(調(diào)用覆蓋、函數(shù)覆蓋),并填寫配置信息(運行環(huán)境、編譯環(huán)境、包含目錄等)。

3.2 執(zhí)行集成測試

解析被測項目文件,在被測項目文件解析無誤的情況下,依據(jù)廣度優(yōu)先的自頂向下的集成方法確定圖4 中的集成組合并選擇集成測試層級,運行自動生成的測試用例,并在調(diào)用覆蓋率和函數(shù)覆蓋率指標(biāo)滿足要求的情況下導(dǎo)出測試用例報告。SmartRocket 集成測試界面如圖6 所示。

圖6 SmartRocket 集成測試界面Fig.6 SmartRocket integration test interface

3.3 集成用例報告

部分集成測試用例報告如表1 所示。

表1 部分測試用例報告Pig.1 Partial test case report

4 結(jié)語

SmartRocket 工具選擇廣度優(yōu)先的自頂向下的集成方法,利用符號執(zhí)行技術(shù)自動生成集成測試用例,并以函數(shù)覆蓋和調(diào)用覆蓋作為集成覆蓋標(biāo)準(zhǔn),自動生成所需測試用例報告,實現(xiàn)了對箭載嵌入式軟件自動化集成測試,并解決了集成測試用例自動生成和測試用例報告適用性問題。

目前,箭載嵌入式軟件含有絕對地址變量時,Smart Rocket 自動生成的集成測試用例無法滿足函數(shù)覆蓋和調(diào)用覆蓋100%的指標(biāo),需人工設(shè)計集成測試用例,后續(xù)自動生成集成測試用例時需針對絕對地址變量自動識別并賦值進(jìn)一步研究。

主站蜘蛛池模板: 91久久夜色精品国产网站| 国产成人亚洲欧美激情| 国产精品尤物在线| 国产福利小视频在线播放观看| 五月天婷婷网亚洲综合在线| 91精品国产自产在线老师啪l| 国产精品蜜芽在线观看| 国产精品无码影视久久久久久久 | 精品国产中文一级毛片在线看 | 欧美一区福利| 强乱中文字幕在线播放不卡| 日韩麻豆小视频| 色男人的天堂久久综合| 国产激情无码一区二区APP| 青草视频免费在线观看| 欧美亚洲一区二区三区在线| 青青青视频91在线 | 精品国产一区91在线| 国产丝袜无码精品| 国产黑人在线| 欧美一级在线| 国产精品免费福利久久播放 | 亚洲无线一二三四区男男| 精品国产一区二区三区在线观看| 国产福利微拍精品一区二区| 丁香亚洲综合五月天婷婷| 免费观看无遮挡www的小视频| 成人毛片在线播放| 91小视频在线观看免费版高清| 欧美一区国产| 一级毛片免费高清视频| 啦啦啦网站在线观看a毛片| 国产区在线看| 国产青榴视频在线观看网站| 色欲不卡无码一区二区| 热思思久久免费视频| 久久情精品国产品免费| 日韩亚洲综合在线| 久久精品亚洲热综合一区二区| 天天躁日日躁狠狠躁中文字幕| 女人18毛片久久| 园内精品自拍视频在线播放| 无码中文字幕精品推荐| 亚洲欧美综合另类图片小说区| a在线亚洲男人的天堂试看| 久草视频精品| 99青青青精品视频在线| Jizz国产色系免费| 久草性视频| 久久天天躁狠狠躁夜夜躁| 97视频精品全国在线观看| 国产美女精品一区二区| 毛片免费在线视频| 国产精品亚洲综合久久小说| 国产精品主播| 毛片一区二区在线看| 潮喷在线无码白浆| 免费一级毛片完整版在线看| 九色视频线上播放| 久草视频中文| yjizz视频最新网站在线| www.91在线播放| 国产一在线| 在线观看国产黄色| 欧美一级一级做性视频| 亚洲h视频在线| 九色免费视频| 国产在线精品99一区不卡| 中文字幕欧美成人免费| 亚洲三级电影在线播放| 国产精品冒白浆免费视频| 久久久久免费精品国产| 全色黄大色大片免费久久老太| 欧美成a人片在线观看| 日本尹人综合香蕉在线观看| 国产成人一区二区| 亚洲欧洲一区二区三区| 亚洲第一黄色网址| 91精品国产91久无码网站| 国产人成乱码视频免费观看| 美女啪啪无遮挡| 亚洲日韩第九十九页|