• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Astree 的機載軟件運行時錯誤測試方法

      2023-04-13 02:03:48萇瑤陸志肖吳麗媛宋治惠胡尊帆
      電子制作 2023年4期
      關(guān)鍵詞:越界軟件測試覆蓋率

      萇瑤,陸志肖,吳麗媛,宋治惠,胡尊帆

      (中國直升機設(shè)計研究所 機電軟件專業(yè),天津,300300)

      0 引言

      航空電子技術(shù)不斷發(fā)展,現(xiàn)代飛機的體系架構(gòu)已逐漸向模塊化、高度綜合化方向發(fā)展,軟件實現(xiàn)的功能在航空電子系統(tǒng)中的地位越來越重要。航空機載軟件具有嵌入式、實時性、結(jié)構(gòu)復(fù)雜、高安全關(guān)鍵等級等特點[1],航空機載軟件可靠性決定了航空電子系統(tǒng)乃至整個航空器的質(zhì)量[2],成了機載設(shè)備發(fā)揮其優(yōu)越性能的一個制約因素。軟件測試是保障航空機載軟件可靠性的重要手段[3],也是機載軟件全生存周期缺陷管理和分析的關(guān)鍵環(huán)節(jié)[4]。

      機載軟件質(zhì)量的影響因素有很多,應(yīng)通過提高軟件測試的充分性,在開發(fā)階段和測試階段都進行充分的軟件測試,以盡早發(fā)現(xiàn)軟件問題,從而提高軟件的可靠性。而軟件測試的工作量很大,據(jù)統(tǒng)計,測試時間會占到總開發(fā)周期時間的40%~60%。測試的許多操作和過程是重復(fù)性的,因此在整個軟件過程中軟件測試可以應(yīng)用自動化的測試工具,提高測試的速度、效率和準(zhǔn)確度[5]。

      航空機載軟件開發(fā)過程周期較長,即使軟件開發(fā)完成后也很難立刻使用目標(biāo)機進行測試,且開發(fā)人員和測試人員不能同時進行測試[6]。航空機載軟件一般使用C 語言編寫,C語言是一個功能強大且高度靈活的編程語言,被廣泛應(yīng)用于各種嵌入式系統(tǒng)中,但靈活的同時也容易被開發(fā)人員誤用導(dǎo)致代碼存在運行時錯誤。運行時錯誤是指那些能導(dǎo)致預(yù)定義之外的不正確結(jié)果或者處理器停機的錯誤,它是所有的軟件錯誤中最具風(fēng)險的,如數(shù)組越界、整數(shù)被零除、值溢出、非法的指針訪問等。一旦發(fā)生輕則導(dǎo)致軟件不能正常運行,重則導(dǎo)致系統(tǒng)崩潰。根據(jù)IBM-Berkeley 調(diào)查統(tǒng)計,在每一千行的代碼中大約就會發(fā)現(xiàn)一個運行時錯誤,而且在軟件的維護階段所檢測到的錯誤中有30%~40%是運行時錯誤,可見運行時錯誤對軟件質(zhì)量的影響較大。而軟件中的運行時錯誤是很難被發(fā)現(xiàn)的,采用傳統(tǒng)的測試工具不能檢測到或很難檢測到軟件運行時錯誤,這對于可靠性要求極高的機載軟件存在巨大風(fēng)險。因此我們應(yīng)當(dāng)采取一些措施及時發(fā)現(xiàn)并消除這類代碼的運行時錯誤,在開發(fā)階段的初期對代碼進行運行時錯誤檢查,可以避免在后期測試和產(chǎn)品維護階段發(fā)現(xiàn)更多的問題。使用運行時錯誤檢查工具,能夠快速地、自動化地檢測到軟件中的運行時錯誤,且能盡早地檢測到運行時錯誤,能夠節(jié)省測試階段的時間和費用,極大地提高了軟件可靠性。本文針對機載軟件難以在開發(fā)初期檢測出運行時錯誤的問題,使用Astree 對代碼進行測試分析。通過測試可盡早發(fā)現(xiàn)軟件開發(fā)過程的中的運行時錯誤,以提高代碼的開發(fā)效率,從而有效避免了軟件在機載產(chǎn)品上出現(xiàn)嚴(yán)重的質(zhì)量問題。

      1 Astree 測試應(yīng)用

      1.1 Astree 軟件測試方法

      Astree 是一個靜態(tài)程序分析器,用于檢查C 語言程序中是否存在運行時錯誤。其使用的是語義分析技術(shù),通過對源代碼分析并生成中間語言,產(chǎn)生代碼的數(shù)據(jù)流圖和控制流圖,對程序所有的可執(zhí)行路徑中所有變量取值進行近似,采用近似后的取值超集,驗證代碼的執(zhí)行路徑是否會引起運行時錯誤,從而能達(dá)到代碼測試路徑的100%覆蓋,并檢查出軟件中的運行時錯誤[7]。該軟件分析的是預(yù)處理后代碼,本文通過調(diào)用C 編譯器使用同樣的編譯選項對源代碼編譯產(chǎn)生預(yù)處理代碼,將預(yù)處理后的代碼添加到Astree 工程中。Astree 對代碼進行分析時,需要進行參數(shù)設(shè)置,點擊Analysis entry 設(shè)置分析入口函數(shù)。分析的入口函數(shù),可以為主函數(shù),也可以為其他中斷函數(shù)或者任意子函數(shù)。一旦設(shè)定后,Astree 會以這個函數(shù)為入口,分析所有可達(dá)的代碼部分的運行時錯誤。本文對機載軟件中的Main 函數(shù)進行分析,完成配置后,點擊開始圖標(biāo),進行代碼測試分析。

      軟件分析測試結(jié)束后,可在多個窗口中查看多種分析結(jié)果。工程統(tǒng)計信息窗口顯示了工程的錯誤數(shù),警告數(shù)以及覆蓋率。紅綠燈熄滅時代表工程還沒有進行分析,或者分析仍在進行但是目前為止還沒有發(fā)現(xiàn)任何錯誤或報警。分析結(jié)束后,軟件的測試結(jié)果通過紅黃綠燈顯示。

      圖1 入口函數(shù)設(shè)置

      (a)紅燈:表示存在錯誤A 類型報警,A 類錯誤是由未定義行為引起的錯誤、越界、被0 整除、浮點表達(dá)式等(引起不可預(yù)知的結(jié)果)。如果發(fā)生A 類錯誤,分析程序?qū)⑼V箤ι舷挛牡牟僮?,因為沒有可行的延續(xù);

      (b)黃燈:表示有B/C 類型報警,其中B 類錯誤代表存在數(shù)據(jù)競爭,包括讀寫數(shù)據(jù)競爭和寫寫數(shù)據(jù)競爭,這類警告不會停止對告警發(fā)生上下文的分析。C 類錯誤代表溢出類錯誤、整型溢出、無效移位等(運行時錯誤導(dǎo)致不明確的,但是可預(yù)計的行為);

      (c)綠燈:分析結(jié)束后,沒有發(fā)現(xiàn)任何錯誤和報警。

      本文代碼分析結(jié)果為紅燈如圖2 所示,結(jié)果表明Main函數(shù)代碼中存在運行時錯誤。

      圖2 工程統(tǒng)計信息窗口初始結(jié)果

      Findings/C 窗口按類型分組顯示警告信息,本文函數(shù)測試分析后的Findings/C 窗口結(jié)果如圖3 所示。

      圖3 Findings/C 窗口初始結(jié)果

      通過Findings/C 窗口可以看到函數(shù)中存在數(shù)組越界的告警,通過查看報錯代碼,發(fā)現(xiàn)了數(shù)組使用超出定義的8 處錯誤。在軟件開發(fā)的過程中,這種問題較為常見,而通過人工審查又很難發(fā)現(xiàn)問題。本文通過Astree 對代碼進行分析,幾秒鐘的時間就可以發(fā)現(xiàn)越界問題,避免了代碼跑飛問題的出現(xiàn)。在預(yù)處理后的文件中可直接修改數(shù)組越界的錯誤,重新分析代碼后,發(fā)現(xiàn)越界告警消失,如圖4 所示。

      圖4 更改代碼后Findings/C 窗口的結(jié)果

      將數(shù)組越界問題更改后,可以看到告警燈也由紅色變成了黃色。

      圖5 更改代碼后工程統(tǒng)計信息窗口的結(jié)果

      查看Reachability 窗口,可以看到分析的函數(shù)代碼覆蓋率為67%,分析的函數(shù)中有31 行代碼未覆蓋。因此這31 行代碼不能確定是否存在運行時錯誤,需要查看代碼,更改不可達(dá)分支部分,提高覆蓋率至100%,對全部代碼進行測試分析。

      圖6 代碼初始覆蓋率

      表1 代碼初始覆蓋率信息

      查看Not Reached 窗口找到不可達(dá)分支如圖7 所示,修改不可達(dá)部分的代碼。Astree 代碼分析時按照初始值進行邏輯判斷,需要對變量運算后的結(jié)果進行判斷的,可通過“__ASTREE_modify((V1,…,Vn; effect))”修 改 變 量 值的范圍,完成代碼修改后進行測試分析,代碼覆蓋率已達(dá)100%,這時可分析整個函數(shù)的代碼,結(jié)果如圖8、9 所示。分析結(jié)果顯示,紅色告警已消除,此時代碼已不存在不可預(yù)知的錯誤。

      圖7 函數(shù)中不可達(dá)分支

      圖8 函數(shù)代碼最終覆蓋率

      圖9 Findings/C 窗口最終結(jié)果

      1.2 Astree 軟件測試分析

      本文通過使用Astree 對軟件進行測試分析,發(fā)現(xiàn)該軟件能夠更快并且更精確地發(fā)現(xiàn)代碼問題,可避免誤報導(dǎo)致大量的人工分析。Astree 為嵌入式系統(tǒng)提供先進的測試工具,能夠盡早發(fā)現(xiàn)機載軟件中的運行時錯誤,為軟件開發(fā)提供技術(shù)支持,可保障軟件開發(fā)的質(zhì)量和效率,節(jié)省測試階段的時間和人力成本。通過Astree 測試應(yīng)用,發(fā)現(xiàn)其具備以下特點:

      (a)在編譯階段就能檢測出軟件的運行時錯誤,將代碼放在Astree 測試環(huán)境下,經(jīng)過簡單配置后,便可自動測試代碼是否存在運行時錯誤;

      (b)測試時無需編寫測試用例,傳統(tǒng)的覆蓋率測試需要花費大量時間精力開發(fā)測試用例,而使用Astree 可自動生成用例,不需要人工編寫;

      (c)測試時無須設(shè)置代碼插裝,也不必改變開發(fā)過程;

      (d)分析準(zhǔn)確性高,可實現(xiàn)“零誤報”;

      (e)分析速度快,幾秒鐘可完成一個函數(shù)測試。

      2 結(jié)束語

      本文首先介紹了軟件測試技術(shù),并提出了目前機載軟件測試存在的困難。本文使用Astree 對代碼進行分析和測試,發(fā)現(xiàn)了代碼中的越界問題,并可分析代碼的覆蓋率。發(fā)現(xiàn)了代碼中存在不可達(dá)分支,通過更改錯誤代碼,將覆蓋率提高至100%,重新對代碼進行測試分析,代碼不存在不可預(yù)知的錯誤,降低了軟件的風(fēng)險。該測試方法為軟件開發(fā)階段提供了技術(shù)支持,使開發(fā)人員盡早發(fā)現(xiàn)代碼中的問題,從而提高代碼的質(zhì)量和可靠性。本文研究了軟件運行時錯誤的測試方法,機載軟件測試過程中還存在其他問題,測試工具的使用和測試方法仍需繼續(xù)研究。

      猜你喜歡
      越界軟件測試覆蓋率
      民政部等16部門:到2025年村級綜合服務(wù)設(shè)施覆蓋率超80%
      越界·互換·融合——中國化爵士樂的生成路線與認(rèn)同政治
      我國全面實施種業(yè)振興行動 農(nóng)作物良種覆蓋率超過96%
      基于OBE的軟件測試課程教學(xué)改革探索
      計算機教育(2020年5期)2020-07-24 08:53:20
      EXCEL和VBA實現(xiàn)軟件測試記錄管理
      電子制作(2018年16期)2018-09-26 03:27:18
      關(guān)于軟件測試技術(shù)應(yīng)用與發(fā)展趨勢研究
      電子測試(2017年15期)2017-12-18 07:19:20
      軟件測試工程化模型及應(yīng)用研究
      陣列方向圖綜合中PSO算法粒子越界處理研究
      基于噴丸隨機模型的表面覆蓋率計算方法
      沒有炊煙的城市(選章)
      詩歌月刊(2015年11期)2015-12-23 23:17:12
      闵行区| 桑日县| 尉犁县| 连南| 永新县| 祥云县| 保亭| 大厂| 皋兰县| 论坛| 崇阳县| 汤阴县| 邵阳市| 汝州市| 青岛市| 政和县| 昌图县| 东丰县| 太原市| 二手房| 安康市| 新龙县| 五莲县| 新沂市| 牟定县| 临颍县| 乾安县| 荥经县| 阜南县| 叶城县| 桑植县| 霍林郭勒市| 潍坊市| 五峰| 中牟县| 伽师县| 托克托县| 宁晋县| 重庆市| 大兴区| 绍兴市|