今天,在這里我們重慶樂搏軟件測試培訓(xùn)學(xué)校的小編來給各位同學(xué)們講講嵌入式軟件測試,快來看看吧!也許你陌生,但在智能物聯(lián)網(wǎng)時(shí)代,人們會(huì)越來越關(guān)注嵌入式軟件測試。
說起嵌入式軟件測試,我們先快速了解一下嵌入式軟件自身的特點(diǎn)。嵌入式軟件具有實(shí)時(shí)性、內(nèi)存空間有限、I/O通道少,而且要求功耗低、高可靠性,對(duì)成本也比較敏感,和硬件關(guān)聯(lián)性強(qiáng)等特點(diǎn)。因此,嵌入式軟件的測試與一般商用軟件的測試有較大的區(qū)別。
嵌入式軟件開發(fā)和運(yùn)行的環(huán)境完全不一樣,是分開的,開發(fā)在Windows/Mac OS桌面客戶端(宿主機(jī)環(huán)境)上進(jìn)行,而運(yùn)行的環(huán)境是在目標(biāo)機(jī)環(huán)境上,即一般是基于Linux/Android內(nèi)核開發(fā)的嵌入式操作系統(tǒng)或像RT-thread那樣的實(shí)時(shí)操作系統(tǒng),支持ARM CPU、MCU和藍(lán)牙芯片等低功耗的關(guān)鍵硬件。
嵌入式軟件的單元測試一般在宿主機(jī)環(huán)境下進(jìn)行,只是在個(gè)別情況下(如目標(biāo)機(jī)編譯器可能有缺陷)會(huì)要求在目標(biāo)機(jī)環(huán)境下進(jìn)行,所以在單元測試上,嵌入式軟件和一般商用軟件的之間差別比較小。不過,嵌入式軟件的單元測試對(duì)代碼的質(zhì)量要求比較高,一般要求達(dá)到MC/DC覆蓋率。
嵌入式軟件的集成測試,一般指與目標(biāo)機(jī)的硬件環(huán)境集成,也可以和仿真環(huán)境集成,這時(shí)需要做相應(yīng)的硬件兼容性測試。但到了系統(tǒng)測試、配置項(xiàng)測試或確認(rèn)測試,一般就會(huì)在目標(biāo)機(jī)環(huán)境下執(zhí)行,這時(shí)和一般商用軟件的測試有較大的差別。
由于嵌入式系統(tǒng)的實(shí)時(shí)性,其測試應(yīng)充分考慮系統(tǒng)實(shí)時(shí)響應(yīng)的問題,其響應(yīng)時(shí)間一般要求在毫秒級(jí)別,其對(duì)應(yīng)的負(fù)載測試少不了。在對(duì)目標(biāo)機(jī)進(jìn)行測試時(shí),一般需要對(duì)在宿主機(jī)上編譯通過的代碼進(jìn)行插樁處理。
這樣可以在目標(biāo)機(jī)執(zhí)行程序的時(shí)候,將插樁時(shí)預(yù)測好的數(shù)據(jù)返回到宿主機(jī)上進(jìn)行分析,因此,宿主機(jī)和目標(biāo)機(jī)之間的數(shù)據(jù)傳輸也要認(rèn)真對(duì)待。
除此之外,我們需要制定符合系統(tǒng)需求的可靠性級(jí)別和安全級(jí)別,進(jìn)行相應(yīng)的可靠性測試和安全性測試。嵌入式軟件測試工具,開源工具比較少,多數(shù)是商業(yè)工具,而且往往成套,覆蓋系統(tǒng)功能、性能分析和安全性測試。
今天,我們就介紹比較常用的或好用的嵌入式軟件測試工具,主要有:
ETest Studio
Klocwork
Hitex TESSY
Rapita Verification Suite
Squish
Trinity DT10
VectorCAST
ETest Studio
一款國產(chǎn)化黑盒測試工具,可以做配置項(xiàng)測試和系統(tǒng)測試,括測試資源管理、環(huán)境描述、接口協(xié)議定義、用例設(shè)計(jì)、實(shí)時(shí)數(shù)據(jù)監(jiān)控、測試任務(wù)管理等功能。
主要特點(diǎn)有:
提供各類控制總線和儀器接口API,可由開發(fā)人員集成各類通用接口板卡和用戶自定義的接口板卡。支持的I/O類型括:RS232/422/485、1553B、CAN、TCP、UDP、AD、DA、DI、DO、ARINC429等,并可靈活擴(kuò)展;
支持對(duì)待測系統(tǒng)及其外圍環(huán)境、接口情況等進(jìn)行可視化仿真建模設(shè)計(jì),如提供Matlab/Simulink集成接口,可實(shí)現(xiàn)現(xiàn)有仿真模型的開發(fā)和利用,支持仿真模型實(shí)時(shí)代碼的生成和運(yùn)行;
提供接口協(xié)議描述語言(DPD語言)及其編輯編譯環(huán)境;
可通過表格、儀表、曲線圖、狀態(tài)燈等虛擬儀表實(shí)時(shí)監(jiān)測接口數(shù)據(jù);
可按二進(jìn)制、十進(jìn)制、十六進(jìn)制監(jiān)測輸入與輸出的原始報(bào)文并查詢過濾;
測試腳本支持時(shí)序測試和多任務(wù)實(shí)時(shí)測試,具有可自動(dòng)生成滿足不同組合覆蓋要求測試數(shù)據(jù)的功能;
提供實(shí)時(shí)內(nèi)核模塊,可實(shí)現(xiàn)高可靠性強(qiáng)實(shí)時(shí)測試,響應(yīng)時(shí)間<=1ms,同步傳送和抖動(dòng)時(shí)間小于10us。上位機(jī)和下位機(jī)分別采用Windows和實(shí)時(shí)操作系統(tǒng)。
Klocwork
Klocwork是一款支持百萬行甚至千萬行以上的C/C++/Java/JS/C#代碼質(zhì)量靜態(tài)檢測工具。
利用領(lǐng)先的深度數(shù)據(jù)流分析技術(shù),靜態(tài)地跨類、跨文件地查找軟件運(yùn)行時(shí)缺陷、錯(cuò)誤和安全漏洞,并準(zhǔn)確定位錯(cuò)誤發(fā)生的代碼堆棧路徑。
Klocwork支持自動(dòng)化掃描1000多種代碼缺陷,括空指針、資源及內(nèi)存泄漏、未捕獲的異常、除零等,全面檢測代碼質(zhì)量問題
Klocwork提供全面的安全規(guī)則掃描能力,支持CWE,OWASP,CERT,PCI DSS,DISA STIG,和ISO/IEC TS 17961等標(biāo)準(zhǔn),深度數(shù)據(jù)流分析能力強(qiáng)、準(zhǔn)確率高、漏報(bào)率低
支持常用的IDE,如Eclipse,Visual Studio,IntelilJ Idea等,并與CI/CD工具和集成、B/S+C/S部署方式
Klocwork支持靜態(tài)檢測軟件應(yīng)用的安全漏洞,括SQL注入、被污染的數(shù)據(jù)、緩存溢出、弱代碼實(shí)現(xiàn)及其它多種常見應(yīng)用安全漏洞
Hitex TESSY
Tessy源自戴姆勒-奔馳企業(yè)的軟件技術(shù)實(shí)驗(yàn)室,由德國Hitex企業(yè)負(fù)責(zé)全球銷售及技術(shù)支持服務(wù),是一款專門針對(duì)基于C/C++開發(fā)的嵌入式軟件進(jìn)行單元/集成測試的工具。
Tessy也可以滿足各類標(biāo)準(zhǔn)(如ISO26262、IEC61508、EN 50128/50129等)對(duì)測試的需求,而工具自身也通過了TUV的認(rèn)證,證明該軟件是安全可靠的。
主要功能有:
自動(dòng)生成測試環(huán)境、一鍵執(zhí)行及評(píng)估結(jié)果
便捷的測試用例設(shè)計(jì)方式,如集成了分類樹編輯器CTE,支持導(dǎo)入導(dǎo)出多種格式的測試用例
通過分析源文件自動(dòng)識(shí)別函數(shù)及相關(guān)接口,在接口發(fā)生變更時(shí),支持通過簡便的操作進(jìn)行測試數(shù)據(jù)復(fù)用,實(shí)現(xiàn)高度自動(dòng)化的回歸測試
提供分支覆蓋、MC/DC、多條件覆蓋MCC等多種覆蓋度分析。
還提供其它一些工具,如:
Static code anlaysis
Test case specification
Working with standards
Analyzer
Hardware-in-the-loop test
Rapita Verification Suite(RVS)
RVS是一套面向嵌入式軟件的測試工具集,支持MC/DC覆蓋率分析,滿足DO-178C和ISO 26262認(rèn)證要求。
其中RapiTest具有易于編寫和易于審查但功能豐富的測試格式,以及創(chuàng)建多線程測試和測試代碼元素(如泛型和私有類型)的能力(無需編寫源代碼)。
單元、集成和系統(tǒng)測試的生成和執(zhí)行-RapiTest
結(jié)構(gòu)性代碼覆蓋率分析-RapiCover
執(zhí)行時(shí)間分析-RapiTime
調(diào)度分析-RapiTask
Squish
Froglogic企業(yè)的Squish是廣受歡迎的跨平臺(tái)、多技術(shù)融合的GUI測試工具,尤其是對(duì)如下應(yīng)用提供專業(yè)和全面的支持:Qt、Java GUIs、Web、Linux、Windows、IOS和android等。
Squish支持BDD、數(shù)據(jù)驅(qū)動(dòng)、分布式批量測試和視覺驗(yàn)證等,識(shí)別自定義的控件或2D/3D圖像,支持多種腳本語言:Python、Perl、JavaScript、Ruby和Tcl,平臺(tái)有兩大產(chǎn)品:
Squish:自動(dòng)化GUI測試
Squish CoCo:代碼覆蓋率分析
DT10
DT10(Dynamic Test Tool DT10)是一款支持C/C++,C#,Java等多種語言的軟件灰盒測試和系統(tǒng)動(dòng)態(tài)跟蹤調(diào)試工具,利用領(lǐng)先的自動(dòng)化代碼插裝和數(shù)據(jù)采集技術(shù),支持對(duì)軟件系統(tǒng)的復(fù)雜的、偶發(fā)的缺陷的回溯調(diào)試、性能測試、CPU負(fù)載分析、變量監(jiān)控、邏輯分析、內(nèi)存使用分析、硬件監(jiān)測和分析,及覆蓋率分析等灰盒測試場景。
DT10由硬件設(shè)備Dynamic Tracer和PC端軟件兩個(gè)主要部分組成,軟件部分負(fù)責(zé)源碼插裝、數(shù)據(jù)處理和結(jié)果分析等,硬件部分復(fù)雜接口、信號(hào)采集和數(shù)據(jù)通訊。
。強(qiáng)大的缺陷回溯定位能力、
支持跟蹤和檢測軟件執(zhí)行過程中的路徑、變量和各種中間狀態(tài)
支持監(jiān)測和分析系統(tǒng)運(yùn)行過程中的硬件狀態(tài)并和軟件狀態(tài)同步分析
支持長達(dá)一個(gè)月的長時(shí)間不間斷測試,實(shí)時(shí)動(dòng)態(tài)更新的覆蓋率分析
性能測試功能可以細(xì)化任意代碼模塊,并精確到ns
不依賴于被測系統(tǒng)的CPU和OS類型
支持串口、以太網(wǎng)口、異步總線、GPIO,SPI,SD卡和CAN總線等豐富的接口類型
VectorCAST
VectorCAST是適用于嵌入式軟件應(yīng)用的高可靠性和高安全性軟件的自動(dòng)化動(dòng)態(tài)測試工具鏈,適用于單元測試、集成測試、覆蓋率分析、回歸測試、靜態(tài)分析、系統(tǒng)測試和質(zhì)量分析等軟件測試所涉及的各個(gè)環(huán)節(jié)。
支持C/C++和Ada語言,內(nèi)建多種智能的自動(dòng)化測試用例生成算法,符合多種行業(yè)認(rèn)證的標(biāo)準(zhǔn),如DO-178B/C,ISO 26262,ASPICE,IEC 61508,En 50128,IEC 62304,IEC 60880等。