• 
    

    
    

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

      ?

      嵌入式軟件覆蓋測試綜述

      2017-04-13 01:34:44
      軟件導刊 2017年3期
      關(guān)鍵詞:插樁宿主機嵌入式軟件

      郭 旺

      (西南大學 數(shù)學與統(tǒng)計學院,重慶 400715)

      嵌入式軟件覆蓋測試綜述

      郭 旺

      (西南大學 數(shù)學與統(tǒng)計學院,重慶 400715)

      嵌入式軟件規(guī)模日益增大,結(jié)構(gòu)也越來越復(fù)雜,對嵌入式軟件系統(tǒng)必須進行嚴格的測試,如何提高嵌入式軟件測試的質(zhì)量和效率已經(jīng)成為當前研究的重點。介紹當前嵌入式軟件測試的3種主要環(huán)境,分析嵌入式軟件測試的特點,并闡述了覆蓋測試基本原理,最后對嵌入式軟件覆蓋測試關(guān)鍵技術(shù)進行了探討。

      嵌入式軟件;軟件測試;覆蓋測試

      0 引言

      近年來,隨著計算機技術(shù)的飛速發(fā)展,嵌入式軟件得到了充分發(fā)展,其國防工業(yè)、工業(yè)控制、家用電器、醫(yī)療衛(wèi)生、通訊產(chǎn)業(yè)等領(lǐng)域得到了廣泛運用。隨著嵌入式硬件的飛速發(fā)展,嵌入式系統(tǒng)軟件也隨之發(fā)展,軟件的規(guī)模日益龐大,結(jié)構(gòu)也越來越復(fù)雜[1]。由于嵌入式軟件經(jīng)常應(yīng)用在一些關(guān)鍵性任務(wù)上,軟件產(chǎn)生的錯誤可能給人們的生產(chǎn)和生活帶來嚴重損失,甚至威脅人身安全。因此,軟件質(zhì)量引起了各方的高度重視[2]。對嵌入式軟件系統(tǒng)及軟件必須進行嚴格測試、確認和驗證[3]。由于嵌入式系統(tǒng)具有實時性、資源有限、與硬件緊密相關(guān)、開發(fā)環(huán)境異于執(zhí)行環(huán)境等特點[4],與嵌入式軟件相比較,一般應(yīng)用軟件更為復(fù)雜,要求也更高。如何提高嵌入式軟件測試的質(zhì)量和效率已經(jīng)成為當前研究的重點。

      1 嵌入式軟件測試環(huán)境

      根據(jù)被測嵌入式軟件所提供的運行環(huán)境的不同,嵌入式軟件測試系統(tǒng)可分為3種類型:全實物仿真測試系統(tǒng)、半實物仿真測試系統(tǒng)、全數(shù)字仿真測試系統(tǒng)[5]。這3種嵌入式軟件仿真測試系統(tǒng)都是嵌入式軟件測試的重要手段和方法。

      (1)全實物仿真測試。全實物仿真運行環(huán)境是最逼近真實環(huán)境的一種運行環(huán)境。在該運行環(huán)境下,整個嵌入式應(yīng)用系統(tǒng)(包括硬件與軟件)進行運行,全實物仿真運行環(huán)境與真實環(huán)境有一致的映射關(guān)系,如同樣的設(shè)備接口、同樣的I/O傳輸格式、同樣的工作方式及狀態(tài)等。待測程序處于完全真實的運行環(huán)境中,直接在目標機與其外設(shè)連接后運行,形成閉環(huán)進行測試。全實物仿真測試不必用數(shù)學模型來代理控制系統(tǒng),可以有效發(fā)現(xiàn)真實系統(tǒng)設(shè)計和部分模型存在的問題,也防止部分部件難以仿真建模的問題,同時對軟件接口測試和實時性測試比較真實。缺點是可控性弱,真實的外圍設(shè)備使得系統(tǒng)設(shè)置缺乏靈活性,測試用例中的很多輸入條件無法滿足,測試結(jié)果的記錄比較困難,測試有效性差。同時一旦被測系統(tǒng)的更換導致與它交聯(lián)的系統(tǒng)也發(fā)生變化,測試環(huán)境就需要重新搭建,通用性受到很大限制。

      (2)全數(shù)字仿真測試。全數(shù)字仿真測試是通過開發(fā)目標機CPU、內(nèi)存、外圍可編程芯片、外圍設(shè)備I/O接口以及外部信號事件激勵的數(shù)字模擬器,從而構(gòu)成純數(shù)字化的嵌入式軟件目標機。在宿主機上實現(xiàn)對嵌入式軟件的測試。

      全數(shù)字仿真測試把嵌入式軟件與真實目標機相剝離,擺脫了嵌入式軟件執(zhí)行過程中對硬件的依賴,優(yōu)點包括成本低、測試可重復(fù)、測試的可控性大大增加、軟件的執(zhí)行比較透明,對測試用例支持較好,支持故障注入測試等。然而,隨著計算機系統(tǒng)和物理系統(tǒng)的耦合越來越緊密[6],仿真模擬目標平臺的軟硬件環(huán)境變得越來越困難。并且仿真環(huán)境下的某些測試結(jié)果(特別是對實時軟件)不能真實地反應(yīng)軟件的運行情況,數(shù)據(jù)真實性較弱。同硬件測試環(huán)境相比,全數(shù)字仿真環(huán)境下的被測程序運行速度較慢,這是因為仿真運行使用了多幾倍、幾十倍的指令去模擬一條指令的執(zhí)行,加上執(zhí)行過程中為滿足測試的需要,仿真運行比實際運行要慢幾百倍。

      (3)半實物仿真測試研究。半實物仿真測試系統(tǒng)介于全數(shù)字測試與全實物測試,集成了全實物運行環(huán)境的真實性和全數(shù)字模擬測試的靈活性、透明性等特點。在半實物仿真系統(tǒng)中,待測程序依然在所需的特定目標機運行,確保了待測程序運行環(huán)境的真實性;同時,系統(tǒng)能夠根據(jù)需要設(shè)置待測程序的輸入,記錄待測程序的運行結(jié)果。

      2 嵌入式軟件測試特點

      嵌入式系統(tǒng)具有系統(tǒng)資源有限、專用性強、實時性強等特點,因此嵌入式軟件測試與傳統(tǒng)軟件的測試策略有較大不同。嵌入式軟件測試的特點包括:

      (1)嵌入式軟件與硬件密切相關(guān),且嵌入式軟件與其所運行的計算機系統(tǒng)高度耦合,只能運行在特定的目標機上。嵌入式軟件的功能、性能與其所運行的硬件性能及結(jié)構(gòu)緊密相關(guān)。因此,搭建嵌入式軟件運行所需的特定硬件環(huán)境是嵌入式軟件測試的重要過程之一。

      (2)嵌入式系統(tǒng)實時性要求較高,要求嵌入式軟件在規(guī)定的時間內(nèi)完成任務(wù)處理,當面臨并發(fā)任務(wù)時,要求系統(tǒng)嚴格按照一定的時序進行處理。為了保障嵌入式軟件的高可靠性,要求其在運行時不能發(fā)生內(nèi)存泄露。因此,對嵌入式軟件進行的測試包括功能測試、性能測試、接口測試、覆蓋率分析測試、內(nèi)存泄漏測試等。

      (3)嵌入式軟件開發(fā)采用交叉開發(fā)方式,其開發(fā)環(huán)境不同于其運行環(huán)境,在宿主機上測試再充分也不能保證在目標機器上正常運行。而且在目標機器上軟硬件資源有限,難以滿足測試需求,因而測試過程中產(chǎn)生的測試數(shù)據(jù)必須發(fā)回至宿主機分析。

      (4)嵌入式系統(tǒng)通常面臨復(fù)雜的工作環(huán)境(如工業(yè)強磁場、高溫工作區(qū)、海洋等),因而需要在不同環(huán)境下進行測試,以確保在真實環(huán)境下嵌入式軟件的可靠性。

      3 嵌入式軟件覆蓋測試原理

      嵌入式軟件的開發(fā)與傳統(tǒng)軟件很大的不同點在于采用交叉開發(fā)方式。開發(fā)工具運行在軟件和硬件資源較為豐富的宿主機上,而嵌入式應(yīng)用程序運行在資源相對稀少的目標機上。因而當對軟件測試時面臨著類似情況:測試工具在宿主機上運行,而被測程序在目標機上運行并產(chǎn)生測試數(shù)據(jù),最后通過某種物理/邏輯連接方式傳輸?shù)剿拗鳈C上的測試工具那里。

      嵌入式軟件覆蓋測試的基本原理如圖1所示。

      圖1 嵌入式軟件覆蓋測試原理

      4 嵌入式軟件覆蓋測試關(guān)鍵技術(shù)

      4.1 源代碼分析技術(shù)

      程序分析是軟件測試的重要方法之一[7]。首先對待測程序源代碼進行靜態(tài)分析,從而提取出函數(shù)名稱、參數(shù)類型、返回類型等結(jié)構(gòu)信息,最后將收集到的程序結(jié)構(gòu)信息以某種易于分析和檢索的格式存儲,即可得到抽象語法樹(Abstract Syntax Tree,縮寫為AST)。

      抽象語法樹是源程序經(jīng)過詞法分析[8]、語法分析和語義分析后逐步產(chǎn)生的。語法樹的構(gòu)造過程如圖2所示。

      圖2 抽象語法樹的構(gòu)造過程

      抽象語法樹由不同類型的節(jié)點組成,每種節(jié)點代表了一種不同的語法結(jié)構(gòu)。節(jié)點類型包括名字節(jié)點、表達式節(jié)點、語句節(jié)點、聲明節(jié)點、復(fù)合語句、類型節(jié)點、函數(shù)聲明節(jié)點、函數(shù)體節(jié)點等等。抽象語法樹反應(yīng)了程序結(jié)構(gòu),由它可以生成程序的控制流圖,它也包含了很多程序關(guān)鍵信息,這些信息可供后續(xù)環(huán)節(jié)進一步使用。

      4.2 插樁技術(shù)

      插樁技術(shù)能夠根據(jù)用戶需求,記錄待測程序在運行過程中的運行狀態(tài),是軟件測試的有效方法。主要內(nèi)容是:在保證待測程序邏輯完整性的基礎(chǔ)上,在其源代碼中植入探針函數(shù)。探針函數(shù)是一個子過程調(diào)用,調(diào)用的子過程能在運行到插樁點時記錄有關(guān)信息,采集被測軟件運行時程序的運行特征數(shù)據(jù)?;趯@些特征數(shù)據(jù)的分析,可以揭示程序的內(nèi)部行為和特征[10]。插樁技術(shù)既要保證收集足夠的測試過程信息,又要盡可能減少代碼膨脹率以減小插樁對被測程序執(zhí)行效率的影響。

      插樁技術(shù)包括以下4個階段:①插樁植入。依據(jù)源代碼分析獲得的程序結(jié)構(gòu)信息和覆蓋原則確認插樁位置,插入對應(yīng)的探針函數(shù);②編譯鏈接。對插樁后的源程序代碼進行編譯鏈接,生成可執(zhí)行文件;③程序執(zhí)行。執(zhí)行被測程序,在執(zhí)行過程中之前插入的探針函數(shù)會將產(chǎn)生的程序控制流和數(shù)據(jù)流信息等測試數(shù)據(jù)記錄下來;④數(shù)據(jù)分析。將之前探針函數(shù)記錄的測試數(shù)據(jù)與源程序進行匹配,根據(jù)相應(yīng)的方法獲得相應(yīng)的覆蓋率。

      根據(jù)測試要求可以采用不同的插樁策略,每次在不同的位置插入相應(yīng)的探針。每次只是插入有限的探針,提高插樁效率,同時降低程序執(zhí)行的開銷。插樁位置的選擇必須建立在確保插樁后的程序可以正確運行的基礎(chǔ)上。主要的插樁策略包括:

      (1)語句覆蓋插樁策略。對程序進行基于塊的劃分,塊是一段順序執(zhí)行的程序語句序列,只要塊中的任意一條語句被執(zhí)行,則整個塊都會被執(zhí)行,因此在每個塊的入口處,插入探針函數(shù),在程序執(zhí)行過程中跟蹤該塊是否有執(zhí)行。

      (2)分支覆蓋插樁策略。對于源程序中的每個分支,在其不同的跳轉(zhuǎn)語句處植入相應(yīng)的探針,在程序執(zhí)行過程中跟蹤該分支是否有執(zhí)行。

      (3)條件覆蓋插樁策略。在if、switch、while、do-while、for幾種條件語句的布爾表達式處插入探針,在程序執(zhí)行過程中跟蹤該條件是否執(zhí)行。

      5 結(jié)語

      隨著計算機硬件技術(shù)和軟件技術(shù)的發(fā)展,嵌入式軟件結(jié)構(gòu)日益復(fù)雜,因此對嵌入式軟件的測試尤為必要,對嵌入式軟件測試質(zhì)量和效率的提升值得研究。本文總結(jié)了當前嵌入式軟件測試的3種主要環(huán)境,分析了嵌入式軟件測試特點,闡述了覆蓋測試基本原理,最后介紹了嵌入式軟件覆蓋測試所涉及的主要技術(shù):源代碼分析技術(shù)和插樁技術(shù),能夠?qū)η度胧杰浖y試相關(guān)研究提供一些參考。

      [1] EBERT C,JONES C.Embedded software:facts,figures and future[J].IEEE Computer,2009,42(4):42-52.

      [2] YIN Y,LIU B.A method of test case automatic generation for embedded software[C].International Conference on Information Engineering and Computer Science,2009:1-5.

      [3] 郭群.嵌入式軟件測試設(shè)計技術(shù)[J].微處理機,2008,29(4):104-106.

      [4] BROEKMAN B,NOTENBOOM E.Testing embedded software[M].Pearson Education,2003.

      [5] 蔡建平,沈琦,謝會東.嵌入式軟件測試實用技術(shù)[M].北京:清華大學出版社,2010.

      [6] KIM J E,MOSSE D.Generic framework for design,modeling and simulation of cyber physical systems[J].ACM SIGBED Review,2008,5(1):1-5.

      [7] 蔡虹,沈雷,李永紅.基于覆蓋測試的嵌入式軟件自動裁剪[J].計算機工程,2010(1):73-75.

      [8] 陳火旺,劉春林,譚慶平,等.程序設(shè)計語言編譯原理[M].北京:國防工業(yè)出版社,2010.

      [9] HUANG J C.Program instrumentation and software testing[J].Computer,1978(4):25-32.

      (責任編輯:孫 娟)

      Review of the Embedded Software Coverage Testing

      With the software application domain continue to expand, the embedded system has been fully developed and widely used. As an important part of embedded system, the embedded software quality has attracted great attention of all parties. Three main testing environment for embedded software are elaborated. The characteristics of embedded software testing are analyzed. Also the fundamental principle of embedded software testing is emphasized. Finally the key technologies of embedded software coverage testing are introduced, including source code analysis and instrumentation technology.

      Embedded Software; Software Testing; Coverage Testing

      郭旺(1990-),男,陜西韓城人,碩士,西南大學數(shù)學與統(tǒng)計學院助理實驗師,研究方向為軟件工程、軟件測試。

      10.11907/rjdk.162658

      TP301

      A

      1672-7800(2017)003-0179-03

      猜你喜歡
      插樁宿主機嵌入式軟件
      砂土中樁靴插樁對臨近筒型基礎(chǔ)的影響研究
      太陽能學報(2024年2期)2024-06-12 00:00:00
      基于TXL的源代碼插樁技術(shù)研究
      基于性能分析的自適應(yīng)插樁框架
      實時嵌入式軟件的測試技術(shù)
      電子測試(2018年10期)2018-06-26 05:54:08
      虛擬網(wǎng)絡(luò)實驗室在農(nóng)村職校計算機網(wǎng)絡(luò)技術(shù)教學中的應(yīng)用研究
      全景相機遙控器嵌入式軟件V1.0 相關(guān)操作分析
      電子制作(2017年17期)2017-12-18 06:40:56
      嵌入式計算機軟件測試關(guān)鍵技術(shù)的思考
      嵌入式計算機軟件測試關(guān)鍵技術(shù)研究
      基于Eclipse的航天嵌入式軟件集成開發(fā)環(huán)境設(shè)計與實現(xiàn)
      航天嵌入式軟件浮點運算誤差分析與控制
      广南县| 临沂市| 安龙县| 安泽县| 固始县| 宿松县| 密云县| 延吉市| 隆德县| 临湘市| 衡东县| 和静县| 肥东县| 涟源市| 九寨沟县| 阳城县| 高雄市| 临潭县| 绥化市| 年辖:市辖区| 莒南县| 肃北| 嫩江县| 新竹县| 敖汉旗| 奎屯市| 定安县| 班玛县| 吉林市| 专栏| 太湖县| 壶关县| 奎屯市| 甘谷县| 普安县| 鄄城县| 米泉市| 邵东县| 东丽区| 修水县| 彭泽县|