• 
    

    
    

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

      高安全軟件代碼覆蓋率自動(dòng)化測(cè)試工具應(yīng)用

      2021-11-19 02:46:40沈雷,林嬌嬌
      關(guān)鍵詞:單元測(cè)試測(cè)試用例用例

      高安全領(lǐng)域?qū)﹄娮赢a(chǎn)品的安全性分析提出了具體的要求。作為運(yùn)行在高安全系統(tǒng)中的軟件,必須在測(cè)試過程中進(jìn)行代碼覆蓋率分析,通常要求MC/DC覆蓋率達(dá)到100%。本文分析了常用單元測(cè)試軟件對(duì)C語(yǔ)言開發(fā)的嵌入式項(xiàng)目進(jìn)行自動(dòng)化單元測(cè)試的覆蓋率情況,通過比較得出單元測(cè)試的最優(yōu)解決方案。

      0 引言

      隨著工業(yè)互聯(lián)網(wǎng)技術(shù)的發(fā)展,嵌入式系統(tǒng)的應(yīng)用越來越廣。嵌入式軟件單元測(cè)試成為嵌入式系統(tǒng)功能安全測(cè)試的一項(xiàng)重要工作。通過單元測(cè)試往往能夠發(fā)現(xiàn)代碼中潛在的邏輯缺陷及隱藏的運(yùn)行錯(cuò)誤。高安全領(lǐng)域,如航天、軌道交通、核電等行業(yè)對(duì)產(chǎn)品的安全性有更高的要求。運(yùn)行在高安全系統(tǒng)中的軟件,在測(cè)試過程中必須進(jìn)行代碼覆蓋率分析,MC/DC覆蓋率一般要求達(dá)到100%。

      從軟件代碼覆蓋率可以詳細(xì)了解被測(cè)代碼的測(cè)試覆蓋情況,通過分析明確如何補(bǔ)充測(cè)試用例去驗(yàn)證未執(zhí)行的代碼;或者找出代碼未被執(zhí)行的原因,幫助發(fā)現(xiàn)程序中的潛在缺陷,提高軟件質(zhì)量。

      為了大幅提高測(cè)試人員的工作效率,保障軟件測(cè)試質(zhì)量,并且將測(cè)試人員從繁重的用例編寫任務(wù)中解脫出來,很多單元測(cè)試工具能夠自動(dòng)生成滿足語(yǔ)句、分支、MC/DC準(zhǔn)則的測(cè)試用例,本文對(duì)幾個(gè)常用單元測(cè)試軟件Testbed、Cantata、SmartUnit的單元測(cè)試覆蓋率情況進(jìn)行了分析。

      1 工具說明

      Testbed、Cantata、SmartUnit是目前嵌入式領(lǐng)域常用的單元測(cè)試軟件,它們都通過了國(guó)際上功能安全認(rèn)證,符合IEC 61508-3∶2010(工業(yè)通用)、EN 50128∶2011(軌道交通)、ISO 26262-8∶2018(汽車電子)等行業(yè)功能安全標(biāo)準(zhǔn)對(duì)單元測(cè)試工具的要求。

      1.1 Testbed

      Testbed軟件測(cè)試工具功能較強(qiáng)大,適用于嵌入式軟件靜態(tài)分析及單元測(cè)試,較廣泛地應(yīng)用于國(guó)內(nèi)各大研究機(jī)構(gòu)、軟件測(cè)試部門。

      Testbed可以自動(dòng)生成測(cè)試驅(qū)動(dòng),在代碼更新后能對(duì)需要修改的測(cè)試數(shù)據(jù)進(jìn)行跟蹤和報(bào)告,便于回歸測(cè)試。工具提供圖形界面和命令行兩種操作方式,支持文本和圖形化方式查看代碼覆蓋率;有助于測(cè)試結(jié)果的分析和白盒測(cè)試用例設(shè)計(jì)。

      通過Testbed可實(shí)現(xiàn)自動(dòng)化單元測(cè)試,提高單元測(cè)試效率。它能夠提供包括語(yǔ)句、分支、調(diào)用、MC/DC、測(cè)試路徑(LCSAJ)、目標(biāo)碼等覆蓋率指標(biāo),滿足不同安全等級(jí)軟件的覆蓋率要求。

      1.2 Cantata

      Cantata提供基于Eclipse的完整測(cè)試開發(fā)環(huán)境,可以對(duì)C/C++代碼進(jìn)行單元和集成測(cè)試,自動(dòng)生成用例、測(cè)試執(zhí)行后對(duì)測(cè)試結(jié)果進(jìn)行評(píng)估并生成測(cè)試報(bào)告等。

      Cantata可以自動(dòng)生成調(diào)用接口控制(Stubs、Isolates和Wrappers)測(cè)試腳本,用戶可以通過圖形界面設(shè)定變量和返回值的期望值,或者直接編輯測(cè)試腳本,即可運(yùn)行測(cè)試。測(cè)試腳本管理器可以實(shí)現(xiàn)腳本的復(fù)用。

      Cantata可以自動(dòng)生成測(cè)試用例的驅(qū)動(dòng)函數(shù)和樁函數(shù),自動(dòng)判定實(shí)際結(jié)果是否和期望結(jié)果一致。工具能記錄測(cè)試過程并輸出到文件,包括全局變量、參數(shù)和返回值、函數(shù)調(diào)用順序等詳細(xì)信息,通過分析這些信息可以對(duì)失敗的用例進(jìn)行準(zhǔn)確的定位,進(jìn)而找到測(cè)試失敗的根本原因。

      可通過Stubs/Isolates模擬或通過Wrapper真實(shí)調(diào)用來實(shí)現(xiàn)任意調(diào)用(編譯單元邊界內(nèi)或邊界外),自動(dòng)檢查調(diào)用接口的參數(shù)/返回值,驗(yàn)證真實(shí)調(diào)用順序或時(shí)間是否匹配。使得測(cè)試更加充分靈活,將被測(cè)單元從系統(tǒng)中完全獨(dú)立出來,實(shí)現(xiàn)對(duì)函數(shù)的完全控制。

      Cantata支持函數(shù)入口點(diǎn)、語(yǔ)句、調(diào)用返回、判定、條件和MC/DC覆蓋等。

      1.3 SmartUnit

      SmartUnit工具是依托國(guó)家可信嵌入式軟件工程技術(shù)研究中心所研發(fā)的一款智能化單元測(cè)試工具,根據(jù)需要能對(duì)C語(yǔ)言自動(dòng)生成滿足分支、語(yǔ)句、邊界及 MC/DC覆蓋準(zhǔn)則的測(cè)試用例,實(shí)現(xiàn)全自動(dòng)化單元測(cè)試。

      SmartUnit采用人工智能算法,利用自動(dòng)推理與符號(hào)執(zhí)行技術(shù),分析程序路徑,生成測(cè)試用例并執(zhí)行測(cè)試。SmartUnit 分析的數(shù)據(jù)包含了被測(cè)函數(shù)形參、全局變量、樁函數(shù)以及樁函數(shù)形參等數(shù)據(jù),全面涵蓋了單元測(cè)試的用例數(shù)據(jù)。

      2 工具比對(duì)

      在某嵌入式實(shí)時(shí)操作系統(tǒng)功能安全認(rèn)證項(xiàng)目中,分別采用Testbed、Cantata和SmartUnit工具對(duì)被測(cè)操作系統(tǒng)的源碼進(jìn)行單元測(cè)試,并獲取代碼覆蓋情況。

      2.1 測(cè)試環(huán)境

      根據(jù)測(cè)試計(jì)劃,單元測(cè)試運(yùn)行在工具安裝平臺(tái),使用工具自帶的編譯器完成代碼的編譯運(yùn)行,如表1所示。

      表1 測(cè)試環(huán)境Tab.1 Test environment

      各工具使用的編譯器的版本不一致,但對(duì)測(cè)試過程中單元測(cè)試代碼語(yǔ)句覆蓋情況統(tǒng)計(jì)并無明顯影響。

      2.2 測(cè)試結(jié)果

      不管使用什么工具,單元測(cè)試中代碼的覆蓋率都取決于測(cè)試用例的設(shè)計(jì)。為了達(dá)到MC/DC100%覆蓋要求,測(cè)試人員需要對(duì)分析代碼結(jié)構(gòu),設(shè)計(jì)不同等價(jià)類的輸入?yún)?shù)組合,以實(shí)現(xiàn)各條路徑及分支的覆蓋,最終使得所有用例的組合覆蓋率盡可能達(dá)到MC/DC100%覆蓋,滿足測(cè)試要求。

      雖然在安全軟件中不建議指針的使用,但由于操作系統(tǒng)軟件的特殊性,指針的使用難以避免,被測(cè)源碼中存在大量結(jié)構(gòu)體及指針,如果人工直接分析代碼設(shè)計(jì)用例,效率很低。單元測(cè)試工具的自動(dòng)用例生成功能對(duì)提高測(cè)試效率有著極大的幫助。

      項(xiàng)目部分源碼使用不同工具自動(dòng)生成單元測(cè)試用例執(zhí)行后所得到的覆蓋率的對(duì)比情況見圖1。

      圖1 單元測(cè)試用例執(zhí)行覆蓋率統(tǒng)計(jì)Fig.1 Unit test case execution coverage statistics

      Testbed工具的Extrme test功能能夠自動(dòng)生成測(cè)試用例,但所生成的用例主要是針對(duì)邊界值及異常測(cè)試,對(duì)于MC/DC覆蓋率并沒有太大作用。SmartUnit 和Cantata軟件自動(dòng)生成的單元測(cè)試用例MC/DC覆蓋率較好。經(jīng)過數(shù)據(jù)對(duì)比發(fā)現(xiàn)Cantata工具自動(dòng)生成用例的覆蓋率表現(xiàn)最佳,SmartUnit軟件所生成用例的覆蓋率優(yōu)于Testbed工具,但該軟件對(duì)被測(cè)代碼的部分語(yǔ)法支持并不完善??紤]項(xiàng)目執(zhí)行效率,最終選定Cantata工具作為項(xiàng)目單元測(cè)試工具。

      2.3 工具問題的解決

      2.3.1 自動(dòng)生成用例失敗的解決

      在使用Cantata工具執(zhí)行單元測(cè)試過程中,工具在對(duì)部分源碼生成測(cè)試用例時(shí)會(huì)進(jìn)入無響應(yīng)狀態(tài),等待很長(zhǎng)時(shí)間也無法得到生成結(jié)果。如:semaphore_create函數(shù)。經(jīng)分析,發(fā)現(xiàn)是因?yàn)楣ぞ邔?duì)特定語(yǔ)法的支持不完善。經(jīng)過反復(fù)試驗(yàn),得到如下解決方案:

      (1)修改源代碼,通過定義全局變量,先生成測(cè)試腳本。

      (2)后續(xù)按正常步驟生成測(cè)試腳本,根據(jù)測(cè)試需要對(duì)測(cè)試腳本進(jìn)行修改。

      (3)將源代碼復(fù)原,然后再運(yùn)行測(cè)試腳本。

      2.3.2 生成用例運(yùn)行結(jié)果失敗的解決

      工具自動(dòng)生成的用例有可能出現(xiàn)樁函數(shù)預(yù)期返回值與實(shí)際結(jié)果不符的情況,從而導(dǎo)致用例運(yùn)行結(jié)果為不通過。此時(shí)可以修改該樁代碼實(shí)例,指定正確的預(yù)期返回值結(jié)果,與期望結(jié)果匹配。

      3 總結(jié)

      經(jīng)過項(xiàng)目實(shí)踐,得出如下結(jié)果:

      (1)Testbed、Cantata、SmartUnit三個(gè)工具對(duì)嵌入式C軟件代碼覆蓋率測(cè)試都可以提供充分的支持。工具自動(dòng)化測(cè)試用例生成后再通過人工補(bǔ)充用例設(shè)計(jì),最終軟件代碼覆蓋率均能達(dá)到MC/DC100%覆蓋要求(部分軟件代碼由于設(shè)計(jì)缺陷,存在不可達(dá)路徑,測(cè)試執(zhí)行中不可能得到MC/DC100%的結(jié)果,對(duì)此類代碼應(yīng)采用人工走查方式進(jìn)行分析說明)。

      (2)通過對(duì)比各工具自動(dòng)生成用例的執(zhí)行結(jié)果,目前版本下Cantata工具單元測(cè)試自動(dòng)生成用例執(zhí)行結(jié)果的MC/DC覆蓋率較高。作為國(guó)產(chǎn)研制的嵌入式軟件單元測(cè)試工具,SmartUnit的單元測(cè)試用例MC/DC覆蓋率結(jié)果與Cantata相差不大,但對(duì)被測(cè)代碼的語(yǔ)法支持能力稍差,建議作為項(xiàng)目的備選方案。

      (3)各工具版本都在不斷更新,新版本發(fā)布后需要重新進(jìn)行工具的對(duì)比研究。

      猜你喜歡
      單元測(cè)試測(cè)試用例用例
      UML用例模型中依賴關(guān)系的比較與分析
      基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
      聯(lián)鎖軟件詳細(xì)設(shè)計(jì)的測(cè)試需求分析和用例編寫
      從出土文獻(xiàn)用例看王氏父子校讀古書的得失
      基于混合遺傳算法的回歸測(cè)試用例集最小化研究
      基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
      一年級(jí)上冊(cè)第五單元測(cè)試
      一年級(jí)上冊(cè)一、二單元測(cè)試
      第五單元測(cè)試卷
      第六單元測(cè)試卷
      枣庄市| 东安县| 弋阳县| 华阴市| 新昌县| 邛崃市| 德惠市| 抚宁县| 罗源县| 德格县| 邢台市| 保亭| 建瓯市| 宣威市| 思茅市| 清涧县| 千阳县| 仲巴县| 昌宁县| 高要市| 宁陕县| 台江县| 治县。| 娱乐| 清涧县| 宁都县| 抚顺市| 浦东新区| 松原市| 兰州市| 九龙坡区| 怀远县| 高清| 潮安县| 益阳市| 濮阳市| 南平市| 凤凰县| 海安县| 忻城县| 砀山县|