姜瓊妃
(中國船舶重工集團公司第七一五研究所,浙江杭州,310023)
嵌入式計算機系統(tǒng)是由移動通信模塊、應用軟件、數(shù)據(jù)庫以及操作系統(tǒng)等共同構成,具體應用過程中,可將目標機與宿主機通過嵌入的方式聯(lián)結起來,具有良好的兼容性、穩(wěn)定性和可靠性,且適用性也比較強,可應用于OS-9、Linux以及Windows等,在軟件測試工作中發(fā)揮著關鍵性的作用,值得推廣。
軟件測試主要目的是為了對代碼中的錯誤進行捕捉,并對其進行執(zhí)行和分析,通過這一測試,能夠大幅度提高軟件的可靠性和穩(wěn)定性,為產(chǎn)品設計提供參考和依據(jù)[1]。相比于其他的軟件,嵌入式軟件的專用性較強,因而必須要在特定的硬件平臺上進行。嵌入式軟件在運行以及開發(fā)的過程中常呈現(xiàn)出分離交叉的特征,需要在宿主機上對相關開發(fā)工具進行編譯,交叉開放方式具體如下圖1。
圖1 嵌入式交叉開放方式
此外,在處理器體系結構、操作系統(tǒng)等方面,目標機和宿主機常存在差異性,從而也決定了嵌入式軟件開發(fā)的復雜性,這里所提到的宿主機主要是指通用性計算機,具體如工作站、微機等等,而目標機的主要功能在于嚴格區(qū)分嵌入式系統(tǒng)的宿主機。就目前實際發(fā)展現(xiàn)狀來看,嵌入式計算機軟件測試技術已經(jīng)被廣泛應用于自動化、空導彈、工業(yè)等多個領域之中,隨著技術應用范圍的不斷擴大,其測試功能也會逐漸增多[2]。
在嵌入式軟件系統(tǒng)測試和開發(fā)過程中,由于嵌入式底層驅動程序和網(wǎng)絡操作系統(tǒng)與應用程序間界限不清晰,因此只有對被測軟件運行環(huán)境進行精準模擬,才能順利完成故障檢測和程序測試工作。
首先,在網(wǎng)絡系統(tǒng)當中,嵌入式軟件主要是面向特定任務進行算法執(zhí)行和資源分配,因此通常都會被加載至計算機系統(tǒng)上,對相關測試項目需要完全確定。但要注意的問題是,嵌入式軟件自身算法繼承性差、復雜程度高,在進行任務處理的過程中,很容易出現(xiàn)資源消耗量大、測試時間長的問題,因此難免會對軟件分析測試產(chǎn)生影響。
其次,嵌入式軟件測試難度大,規(guī)模小,正常情況下,嵌入式軟件開發(fā)都保持在幾百MB之內(nèi),同時還要圍繞測試程序以及應用驅動程序等,對相關測試軟件作出響應,并進行全面分析,但在這一過程中,卻很容易因為需要測試的項目過多而出現(xiàn)軟件錯誤甚至是死機的問題。
最后,嵌入式軟件的數(shù)據(jù)輸出與輸入情況比較復雜。在計算機軟件測試過程中,傳輸數(shù)據(jù)信號一般需要涉及到很多專業(yè)的交聯(lián)設備,在嵌入式軟件設施和硬件輔助設備沒能完全準備好的情況下,被測試軟件通常很難捕獲輸出和輸入測試用例,因此,最終所獲得的測試結果也會有失精準性和客觀性。
靜態(tài)測試技術需要嚴格按照特定的邏輯關系和軟件編譯標準,對嵌入式計算機軟件中的錯誤代碼信息進行識別,即便是功能復雜的嵌入式計算機也同樣適用,它能夠在第一時間發(fā)現(xiàn)問題,并對錯誤代碼進行定位,其特征分析如下:第一,審查體系比較規(guī)范,隨著科學技術的不斷發(fā)展,靜態(tài)測試技術的代碼審查功能越來越強大,這與強大的宿主機掃描功能相關,宿主機通過對靜態(tài)測試技術進行應用,能夠審查和驗證計算機軟件代碼,審查內(nèi)容主要包括邏輯關系、語法、詞法等等,可在第一時間發(fā)現(xiàn)代碼問題,使軟件測試的規(guī)范性和可靠性得到了大幅度提升[3]。第二,軟件測試速快,相比于傳統(tǒng)的動態(tài)測試技術和人工測試技術,靜態(tài)測試技術的軟件測試速度較快,每秒鐘能夠掃描代碼上萬行,因而可在較短的時間內(nèi)完成受試計算機的掃描工作,目前在代碼行數(shù)多、功能復雜的計算機軟件中應用十分廣泛。第三,較高的誤報率,靜態(tài)測試技術主要是通過掃描的方式對計算機軟件進行測試,因此很容易受到算法、語法詞義等因素的影響,從而出現(xiàn)誤報率升高的問題[4]。
靜態(tài)測試技術運行的關鍵性技術包括代碼控制流分析技術、代碼污點分析技術、代碼語法分析技術、代碼詞法分析技術等等,具體分析如下:代碼詞法分析技術,通過靜態(tài)測試技術可對計算機軟件源代碼逐字符、逐行的掃描,在掃描過程中,以代碼詞法基本邏輯為參照進行對比,之后對錯誤代碼的位置進行精準定位。代碼詞語分析技術,通過該技術能夠判斷代碼是否與計算邏輯結構要求相符合,保證上下行代碼之間邏輯關系的正確性,借助Yacc將語法錯誤的代碼找出。代碼控制流分析技術,通過靜態(tài)測試技術可對計算機軟件的目標機、宿主機進行全方位掃描,并對計算機軟件代碼節(jié)點進行確定,之后根據(jù)這些節(jié)點對控制流路徑進行檢測,及時找出控制流圖中的錯誤代碼。代碼污點分析技術,污點分析技術主要目的是為了找出計算機軟件的薄弱點,并對那些易成為軟件漏洞的代碼找出,以免遭受黑客的侵害和攻擊,在第一時間采取加強保護措施[5]。
靜態(tài)測試技術在實施的過程中,主要就是借助嵌入式軟件的自動掃描功能,對存在對于不同網(wǎng)絡軟件中的運行邏輯漏洞、代碼錯誤等掃描出來,與傳統(tǒng)的人工測試相比工作效率更高,操作過程成也比較便捷。但要注意的問題是,該技術在實施的過程中,很容易出現(xiàn)語法測試、詞法測試的誤報問題,在對宿主計算機網(wǎng)絡軟件測試時,必須要合理設置軟件代碼測試節(jié)點,之后再進行掃描,以便于在第一時間發(fā)現(xiàn)軟件代碼漏洞和錯誤問題。
動態(tài)測試技術運行主要應用了如下關鍵性技術:第一,單元測試技術,主要檢測受測計算機軟件結構,以便于及時發(fā)現(xiàn)各基本單元、程序路徑的問題。第二,集成測試技術,它主要是在完成單元測試之后開展目的在于確保計算軟件各部分之間聯(lián)系正確,及時找出連接端口、邏輯路徑等方面的問題。第三,系統(tǒng)測試技術,需要全面測試計算機軟件,具體內(nèi)容包括軟件輸入和輸出、邏輯路徑、系統(tǒng)結構以及軟件功能等等。開展系統(tǒng)測試,通常對工作人員的實踐經(jīng)驗和業(yè)務水平具有較高要求。第四,驗收測試,軟件系統(tǒng)測試完成之后,還需要對其進行驗收測試,主要就是通過實際應用的方式測試軟件各個功能能否正常應用,以確保軟件處于最佳工作狀態(tài)。通過動態(tài)測試技術,能夠對嵌入式計算機軟件進行更加實際和全面的檢測,但要想最大限度發(fā)揮出該技術應用價值,通常對工作人員專業(yè)素質(zhì)具有較高要求,同時還需要對測試過程進行全面細化,這樣才能充分發(fā)揮出動態(tài)測試技術的作用和價值。
動態(tài)測試技術在實施的過程中,通過上述提到的集成測試技術、單元測試技術、系統(tǒng)測試技術等,能夠對相關應用程序軟件執(zhí)行路徑以及運行邏輯等進行測試,之后通過符號、字符等指令的離散測試,對計算機軟件邏輯錯誤以及開發(fā)結構等進行審查。
在宿主機上開展仿真測試,即便是在復雜的數(shù)據(jù)環(huán)境中,依然能夠確保軟件測試的精準性。通過仿真測試技術的應用,還能模擬測試復雜計算機軟件代碼,將一些無法直接進行測試的軟件代碼置于嚴格的測試環(huán)境中開展模擬測試,這樣就能確保測試數(shù)據(jù)的真實性[6]。計算機軟件的工程測試和數(shù)據(jù)傳輸,從本質(zhì)上來看,就是對軟件代碼邏輯實現(xiàn)以及排列方式的測試。基于嵌入式技術的仿真監(jiān)測,能夠將傳統(tǒng)軟件代碼測試的局限性打破,之后結合計算機系統(tǒng)中不斷發(fā)展和變化的代碼數(shù)據(jù),對代碼資源進行仿真模擬,與此同時,還能對這些數(shù)據(jù)進行統(tǒng)一化管理,使軟件的開發(fā)者和檢測者可以更加清晰、直觀的看到軟件功能實現(xiàn)以及邏輯執(zhí)行的過程。
目標機測試屬于計算機嵌入式軟件測試的終極環(huán)節(jié),具體流程包括內(nèi)存分析、故障注入以及性能分析等環(huán)節(jié)。在計算機被測試軟件還未能正式工作的情況下,測試數(shù)據(jù)會從宿主機發(fā)出并到達目標機,通過目標機軟件測試技術,能夠快速檢測軟件模塊的功能實現(xiàn)和數(shù)據(jù)處理,即故障注入測試、目標機軟件運行測試的等。在內(nèi)存分析環(huán)節(jié),主要就是對系統(tǒng)內(nèi)存資源的調(diào)用和分配情況進行分析,選取某一特定時間段,通過優(yōu)化運行內(nèi)存,確保計算軟件的流程性。
在嵌入式計算機軟件測試的過程中,宿主機主要是通過移動通信技術將相關測試數(shù)據(jù)發(fā)送至目標機。為保障測試的準確性,通??稍谀繕藱C中輸入一些故障,之后針對個別模塊展開測試,例如,可針對計算軟件的信息處理功能、圖片識別功能進行常見故障分析,在目標機中觀察故障信息的運行狀況,同時進行妥善記錄。
為了能夠大量、快速的處理信息,在嵌入式計算機軟件測試過程中,通常會對計算機硬件提出更高要求,因此相關工作人員必須要重點考慮這一問題,實踐過程中,必須要對計算機軟件內(nèi)存進行嚴格分析,包括其對于內(nèi)存的需求,以確保內(nèi)存的合理調(diào)用和分配,避免產(chǎn)生內(nèi)存不足、軟件卡頓的問題,保證計算機軟件運行的流暢性[7]。
在目標機上開展性能分析技術,需要借助宿主機發(fā)送數(shù)據(jù)至目標機,之后再讓受測嵌入式計算機軟件在目標機上運行。通過這種方式,能夠對計算機運行流暢度加以檢驗,觀察嵌入式計算機在極限壓力下的運行上限、常用功能的性能以及單位時間內(nèi)軟件處理信息的能力等,從多方面入手檢驗計算機軟件的性能,并能在第一時間發(fā)現(xiàn)軟件存在的問題,及時解決和調(diào)整。
本文首先對嵌入式計算機軟件測試進行了簡要概述,之后分析了宿主機和目標機軟件測試的關鍵性技術。總之,在嵌入式計算機軟件測試工作中,只有將動態(tài)測試技術和靜態(tài)測試技術進行聯(lián)合應用,并確保測試環(huán)境的嚴苛性,才能保障測試數(shù)據(jù)的精準性,必要情況下,還需要仿真測試技術的支持和輔助,以實現(xiàn)對計算機軟件的全面檢測,從而能夠在第一時間發(fā)現(xiàn)計算機軟件中的錯誤代碼,及時采取相應的強化保護措施,最大限度提高計算機軟件開發(fā)質(zhì)量。