国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

統(tǒng)計(jì)嵌入式代碼覆蓋率的方法和經(jīng)驗(yàn)

FPGA之家 ? 來(lái)源:21ic電子網(wǎng) ? 作者:21ic電子網(wǎng) ? 2021-03-29 11:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

代碼覆蓋率是衡量軟件測(cè)試完成情況的指標(biāo),通常基于測(cè)試過(guò)程中已檢查的程序源代碼比例計(jì)算得出。代碼覆蓋率可以有效避免包含未測(cè)試代碼的程序被發(fā)布。

1. 問(wèn)題背景

代碼覆蓋(Code coverage)是軟件測(cè)試中的一種度量,描述程式中源代碼被測(cè)試的比例和程度,所得比例稱為代碼覆蓋率。

在進(jìn)行代碼測(cè)試時(shí),常常使用代碼覆蓋率作為考核測(cè)試任務(wù)完整性的指標(biāo),并且代碼覆蓋率也被拿來(lái)作為衡量代碼質(zhì)量的度量,甚至客戶常常要求交付的軟件達(dá)到一定的代碼覆蓋率才能進(jìn)行發(fā)布,因此代碼覆蓋率統(tǒng)計(jì)尤為重要。

C語(yǔ)言嵌入式軟件的開(kāi)發(fā)與普通的軟件的開(kāi)發(fā)很大的不同點(diǎn)就是需要采用交叉開(kāi)發(fā)的方式,即開(kāi)發(fā)工具運(yùn)行在軟硬件配置豐富的編譯機(jī)上,而嵌入式應(yīng)用程序則運(yùn)行在軟硬件資源相對(duì)缺乏的目標(biāo)機(jī)上。面對(duì)C語(yǔ)言的覆蓋率工具相對(duì)java等語(yǔ)言較少,而對(duì)嵌入式軟件交叉編譯后的工具更是鳳毛麟角,所以嵌入式軟件的代碼覆蓋率就成為了一個(gè)難題。

2. 解決方法

2.1 覆蓋率工具

嵌入式開(kāi)發(fā)一般使用GNU/GCC作為主要的編譯器,GCOV是一個(gè)GNU/GCC的配套測(cè)試覆蓋率的工具,是一款的免費(fèi)的代碼覆蓋率測(cè)試工具,而且可以結(jié)合LCOV生成美觀的html的測(cè)試報(bào)表。當(dāng)對(duì)目標(biāo)代碼進(jìn)行測(cè)試后,GCOV編譯插樁后的程序會(huì)監(jiān)視目標(biāo)代碼的執(zhí)行情況,記錄執(zhí)行的代碼行和未執(zhí)行的代碼行,并可以記錄某代碼行的執(zhí)行次數(shù),為分析代碼的執(zhí)行效率提供依據(jù)。

LCOV是GCOV的一個(gè)擴(kuò)展工具,該擴(kuò)展工具由一套Perl腳本組成,使基于GCOV的文本式輸出實(shí)現(xiàn)了一下的增強(qiáng)的功能:

1.基于html的輸出,使用條形圖和不同的顏色來(lái)表。

2.支持大型項(xiàng)目,信息匯總頁(yè)面提供三個(gè)層次的代碼覆蓋細(xì)節(jié)信息,目錄試圖、文件試圖和源代碼試圖,允許快速瀏覽代碼覆蓋率數(shù)據(jù)。

2.2 原理簡(jiǎn)介

2.2.1 概念解釋

下面對(duì)覆蓋率技術(shù)的常見(jiàn)概念進(jìn)行簡(jiǎn)單介紹。主要是基本塊(Basic Block),基本塊圖(Basic Block Graph),行覆蓋率(line coverage), 分支覆蓋率(branch coverage)等。

基本塊(Basic Block),“A basic block is asequence of instructions with only entry and only one exit. If any one of theinstructions are executed, they will all be executed, and in sequence fromfirst to last.” 這里可以把基本塊看成一行整體的代碼,基本塊內(nèi)的代碼是線性的,要不全部運(yùn)行,要不都不運(yùn)行。

基本塊圖(Basic Block Graph),基本塊的最后一條語(yǔ)句一般都要跳轉(zhuǎn),否則后面一條語(yǔ)句也會(huì)被計(jì)算為基本塊的一部分。如果跳轉(zhuǎn)語(yǔ)句是有條件的,就產(chǎn)生了一個(gè)分支(arc),該基本塊就有兩個(gè)基本塊作為目的地。如果把每個(gè)基本塊當(dāng)作一個(gè)節(jié)點(diǎn),那么一個(gè)函數(shù)中的所有基本塊就構(gòu)成了一個(gè)有向圖,稱之為基本塊圖(Basic Block Graph)。且只要知道圖中部分BB或arc的執(zhí)行次數(shù)就可以推算出所有的BB和所有的arc的執(zhí)行次數(shù)。

7f25f798-8ecc-11eb-8b86-12bb97331649.png

圖1 基本塊圖

打樁,意思是在有效的基本塊之間增加計(jì)數(shù)器,計(jì)算該基本塊被運(yùn)行的次數(shù);打樁的位置都是在基本塊圖的有效邊上。

行覆蓋率(line coverage),源代碼有效行數(shù)與被執(zhí)行的代碼行的比率。

分支覆蓋率(branch coverage),有判定語(yǔ)句的地方都會(huì)出現(xiàn)2個(gè)分支,整個(gè)程序經(jīng)過(guò)的分支與所有分支的比率是分支覆蓋率。注意,與條件覆蓋率(condition coverage)有細(xì)微差別,條件覆蓋率在判定語(yǔ)句的組合上有更細(xì)的劃分。 2.2.2 編譯選項(xiàng)

gcc需要靜態(tài)注入目標(biāo)程序編譯選項(xiàng),在編譯鏈接的時(shí)候加入2個(gè)選項(xiàng)(-ftest-coverage -fprofile-arcs ),編譯結(jié)束之后會(huì)生成 gcno文件,而經(jīng)過(guò)靜態(tài)注入的目標(biāo)程序在“正常結(jié)束”后,會(huì)在運(yùn)行目錄下產(chǎn)生gcda數(shù)據(jù)文件,通過(guò)gcov工具就可產(chǎn)生覆蓋率數(shù)據(jù)結(jié)果。

-ftest-coverage

讓編譯器生成與源代碼同名的gcno文件(note file),這種文件含有重建基本塊依賴圖和將源代碼關(guān)聯(lián)至基本塊及源代碼行號(hào)的必要信息。

-fprofile-arcs

讓編譯器靜態(tài)注入對(duì)每個(gè)源代碼行關(guān)聯(lián)的計(jì)數(shù)器進(jìn)行操作的代碼,并在鏈接階段鏈入經(jīng)態(tài)度libgcov.a,其中包含在程序正常結(jié)束時(shí)生成gcda文件的邏輯和記錄弧跳變的次數(shù)及其他的概要信息。

在最終可執(zhí)行程序進(jìn)入用戶代碼入口函數(shù)之前調(diào)用 gcov_init()內(nèi)部函數(shù)初始化統(tǒng)計(jì)數(shù)據(jù)區(qū),并將gcov_exit()內(nèi)部函數(shù)注冊(cè)為代碼出口。

當(dāng)程序調(diào)用代碼出口正常結(jié)束時(shí),gcov_exit()內(nèi)部函數(shù)得到調(diào)用,其繼續(xù)調(diào)用__gcov_flush()內(nèi)部函數(shù)輸出統(tǒng)計(jì)數(shù)據(jù)并生成gcda文件,若程序是一個(gè)狀態(tài)機(jī)程序不會(huì)自動(dòng)調(diào)用代碼出口時(shí),需要增加定時(shí)器等方式調(diào)用__gcov_flush()內(nèi)部函數(shù)強(qiáng)制輸出gcda文件。

2.3 實(shí)踐應(yīng)用

利用GCOV和LCOV工具可以進(jìn)行嵌入式代碼覆蓋率的統(tǒng)計(jì),需要在Makefile或者Scons文件中做下面的編譯鏈接設(shè)置,增加 -fprofile-arcs -ftest-coverage 或者 –coverage,鏈接的時(shí)候,增加 -fprofile-arcs 或者 –lgcov。

為了上述幾個(gè)編譯選項(xiàng)的使用不影響到正常的編譯過(guò)程和效率。可以使用makefile中通過(guò)參數(shù)傳遞來(lái)支持覆蓋率產(chǎn)生,可以在makefile使用下面的方式:

#代碼覆蓋率編譯選項(xiàng)

ifeq (_CODE_COV,$(CODE))APP_FLAGS += -fprofile-arcs -ftest-coverageendif

#代碼覆蓋率鏈接選項(xiàng)

ifeq (_CODE_COV,$(CODE))LD_LINK_LIBFILTER += -fprofile-arcs -ftest-coverageendif

這樣,可以使用 make CODE=_CODE_COV 來(lái)引入這些編譯選項(xiàng)而不會(huì)影響到正常的編譯。

將目標(biāo)機(jī)生成的gcda文件放回至編譯目錄下,利用LCOV命令“l(fā)cov –directory. –capture –output file app.info”可以將gcno文件和gcda文件結(jié)合生成代碼覆蓋率結(jié)果info文件,再用LCOV命令“genhtml –o html app.info –title “LCOV–app.Info” –show-details -legend”將info文件和源代碼文件結(jié)合轉(zhuǎn)化為可視化網(wǎng)頁(yè)形式。

圖2 LCOV生成HTML結(jié)果

3. 高手總結(jié)方法

代碼覆蓋率等級(jí)

代碼覆蓋率可以通過(guò)多種方法測(cè)量。最常用的是測(cè)量以下一個(gè)或多個(gè)指標(biāo):語(yǔ)句覆蓋率,分支 覆蓋率,修訂的條件/判定覆蓋率(MC/DC)。以下章節(jié)中將逐一詳解這些代碼覆蓋率。

語(yǔ)句覆蓋率

語(yǔ)句覆蓋率用來(lái)度量被測(cè)代碼中的可執(zhí)行語(yǔ)句是否被執(zhí)行到,它并不考慮循環(huán)或者條件語(yǔ)句, 只針對(duì)語(yǔ)句度量可執(zhí)行代碼。應(yīng)當(dāng)特別注意的是:“語(yǔ)句”并不等同于代碼行。

一般情況下,對(duì)于 C,C++,Java或Ada,分號(hào)代表語(yǔ)句結(jié)束。在某些情況下,一條語(yǔ)句會(huì)跨越多行代碼。語(yǔ)句覆蓋率可以有效度量可執(zhí)行代碼是否被執(zhí)行,但同時(shí)也有一定的局限性。

語(yǔ)句覆蓋率的局限

考慮如下圖1的代碼段:

int* p = NULL;

if (condition)

p = &variable;

*p = 123;

圖 1 – 語(yǔ)句覆蓋局限代碼示例

如果“condition”為true,那么就有可能達(dá)到100%的語(yǔ)句覆蓋,然而這個(gè)測(cè)試用例忽略了另一種情況:如果“condition”為假,程序?qū)⒁每罩羔槪虼耍m然語(yǔ)句覆蓋率是一個(gè)很好的度量指標(biāo),它仍舊是入門(mén)級(jí)的代碼覆蓋率。理想情況下,即使“condition”為false,測(cè)試用例也應(yīng)當(dāng)被計(jì)算。

分支覆蓋率

分支覆蓋率用來(lái)度量程序中所有的判定和分支以及相應(yīng)的輸出是否都被測(cè)試執(zhí)行到,例如 “if”語(yǔ)句必須將“true”和“false”都考慮到以覆蓋所有的輸出。如果只有一個(gè)路徑被執(zhí)行,那么覆蓋率將被標(biāo)記為部分執(zhí)行。

和語(yǔ)句覆蓋率類似,分支覆蓋浪費(fèi)也有一些需要注意的細(xì)節(jié),尤其在針對(duì)“惰性求值”的編程語(yǔ)言時(shí),惰性求值是將代碼的求值操作延遲到需要結(jié)果值時(shí)再進(jìn)行的一項(xiàng)技術(shù)。

分支覆蓋率的局限

典型的情況是當(dāng)有復(fù)雜的布爾表達(dá)式的“惰性求值”出現(xiàn)時(shí),如下圖2的代碼片段:

int* p = NULL;if (condition1 && (condition2 || function1(*p)))statement1;else

考慮“condition1”為假的情況,惰性求值將不會(huì)度量“condition2”或,此種情況同樣會(huì)導(dǎo)致代碼“if (condition1 && (condition2 || function1(*p)))”的分支覆蓋率計(jì)算錯(cuò)誤。

繼續(xù)考慮“condition1”和“condition2”都為真的情況。惰性求值將再次導(dǎo)致“function1(*p)” 不會(huì)被度量,也同樣會(huì)導(dǎo)致代碼“if (condition1 && (condition2 || function1(*p)))”的分支覆蓋率計(jì)算錯(cuò)誤。在此種情況下,有可能出現(xiàn)分支覆蓋率為100%但軟件中仍有潛在缺陷的情況。

修訂條件/判定覆蓋率(MC/DC)

MC/DC是一種特殊的分支覆蓋率,它不但會(huì)使用分支覆蓋率報(bào)告復(fù)雜條件下的true和false輸出,同時(shí)也會(huì)報(bào)告復(fù)雜條件下的全部分支條件輸出。

MC/DC最初由波音公司創(chuàng)建,用于航空軟件中DO-178B的A級(jí)認(rèn)證。通過(guò)對(duì)所有的子條件輸出分支的獨(dú)立證明,有效解決了惰性求值帶來(lái)的問(wèn)題。

繼續(xù)討論代碼示例2,我們需要在“condition2”和“function1(*p)”固定的條件下驗(yàn)證“condition1” 的“true”和“false”判定分支,之后繼續(xù)固定“condition1”和“function1(*p)”驗(yàn)證“condition2” 的判定分支。

同樣的,讓我們?cè)诠潭ā癱ondition1”和“condition2”的條件下討論 “function1(*p)”。在其他分支條件固定的情況下驗(yàn)證某個(gè)分支條件的“true”和“false”值稱作“MC/DC對(duì)”。MC/DC對(duì)一般 使用MC/DC真值表描述。表1就是一個(gè)MC/DC真值表示例。

7ff1caa8-8ecc-11eb-8b86-12bb97331649.jpg

在軟件開(kāi)發(fā)的不同階段獲取覆蓋率

軟件測(cè)試有很多種類,本文將其簡(jiǎn)要的分為三類:

》 系統(tǒng)/函數(shù)測(cè)試:測(cè)試集成后的整個(gè)應(yīng)用

》 集成測(cè)試:測(cè)試集成的子系統(tǒng)

》 單元測(cè)試:測(cè)試一個(gè)或多個(gè)文件或類

每個(gè)軟件項(xiàng)目在系統(tǒng)測(cè)試的過(guò)程中都會(huì)模擬最終用戶的操作對(duì)源代碼做一些系統(tǒng)測(cè)試。導(dǎo)致軟件發(fā)布后仍舊存在缺陷最重要的一個(gè)原因通常是程序在運(yùn)行過(guò)程中遇到了非預(yù)期的,即沒(méi)有測(cè)試的輸入組合。

很多軟件項(xiàng)目并不是沒(méi)有做集成測(cè)試或者單元測(cè)試。只是在完成集成測(cè)試或單元測(cè)試后,開(kāi)發(fā)團(tuán)隊(duì)可能苦于為隔離程序中的單個(gè)或多個(gè)文必須所需的大量測(cè)試代碼量。

對(duì)于最嚴(yán)格的單元測(cè)試和集成測(cè)試來(lái)說(shuō),最終生成的測(cè)試代碼量比待測(cè)代碼量還要龐大是很經(jīng)常出現(xiàn)的情況。因此,這兩種級(jí)別的測(cè)試普遍適用于關(guān)鍵和高安全領(lǐng)域,例如:航空航天、醫(yī)療、交通運(yùn)輸、工業(yè)過(guò)程控制、高速汽車等。此類軟件中包含大量的嵌入式應(yīng)用軟件。

關(guān)鍵領(lǐng)域的結(jié)構(gòu)化測(cè)試流程一般會(huì)將需求的級(jí)別高低作為重點(diǎn),代碼覆蓋率因而會(huì)在這種“基于需求”的測(cè)試中進(jìn)行分析。在許多項(xiàng)目中,高等級(jí)的需求最先被測(cè)試。此時(shí)代碼覆蓋率可以被用來(lái)檢測(cè)和報(bào)告所達(dá)到的覆蓋比例。

然而不幸的是,在系統(tǒng)測(cè)試和功能測(cè)試階段想要達(dá)到100%的代碼覆蓋率幾乎是不可能的。通常情況下系統(tǒng)測(cè)試和功能測(cè)試只能達(dá)到60%-70%的代碼覆蓋率,剩余30%-40%的代碼覆蓋率需要在單元測(cè)試和集成測(cè)試階段才能夠完成。

單元測(cè)試使用包含驅(qū)動(dòng)和樁的測(cè)試代碼隔離系統(tǒng)中的特定函數(shù),同時(shí)使用測(cè)試用例模擬這些函數(shù)的執(zhí)行。這些所謂的“低等級(jí)測(cè)試需求” 對(duì)被測(cè)試代碼提供了更高的控制,可以提高先前執(zhí)行的系統(tǒng)測(cè)試覆蓋率(甚至能達(dá)到100%)。因此,在不同的測(cè)試之間共享覆蓋率數(shù)據(jù)是非常有必要的。

嵌入式環(huán)境中獲取覆蓋率帶來(lái)的挑戰(zhàn)

常言道“有得必有失”,在嵌入式環(huán)境獲取代碼覆蓋率的問(wèn)題上,要付出的代價(jià)是對(duì)待測(cè)代碼額外的插樁工作。插樁是將額外的代碼添加到程序中,從而實(shí)現(xiàn)測(cè)試過(guò)程中的覆蓋率收集和分析操作。

由于插樁的相關(guān)操作將導(dǎo)致程序源代碼增多,進(jìn)而延長(zhǎng)程序的執(zhí)行時(shí)間,因而需要預(yù)測(cè)插樁后的源代碼的覆蓋范圍預(yù)測(cè),尤其當(dāng)測(cè)試實(shí)時(shí)嵌入式系統(tǒng)環(huán)境時(shí),此項(xiàng)工作就更為重要。

事實(shí)上,要精準(zhǔn)的預(yù)測(cè)程序文件插樁的影響幾乎是不可能的。沒(méi)有算法支持(也不可能有)。每個(gè)系統(tǒng)都包含很多的變量,具有獨(dú)立唯一的復(fù)雜性。當(dāng)然,對(duì)于典型的示例系統(tǒng)來(lái)說(shuō),獲取一組準(zhǔn)確的估計(jì)還是可能實(shí)現(xiàn)的。

在共享環(huán)境中獲取覆蓋率數(shù)據(jù)

在嵌入式環(huán)境下管理代碼覆蓋率的主要問(wèn)題在于如何配置內(nèi)存以容納額外的插樁代碼。VectorCAST針對(duì)大量示例代碼評(píng)估后發(fā)現(xiàn)添加了上文中提出的各種覆蓋率額外配置之后,源代碼量增長(zhǎng)量普遍達(dá)到了10%。對(duì)于絕大多數(shù)的32位目標(biāo)板,這并不是一個(gè)很大的問(wèn)題,但對(duì)于存儲(chǔ)容量有限的8位或者16位目標(biāo)板來(lái)說(shuō),幾乎可以肯定這會(huì)是一個(gè)問(wèn)題。

為了降低可執(zhí)行文件的大小,各種各樣的代碼插樁技術(shù)被發(fā)明出來(lái),針對(duì)不同大小的存儲(chǔ)區(qū)域有不同的數(shù)據(jù)采集技術(shù)。植入存儲(chǔ)器內(nèi)部的收集系統(tǒng)可以用于監(jiān)測(cè)被檢測(cè)到的代碼。這是插樁技術(shù)中保證使用最少RAM的關(guān)鍵技術(shù)。

4. 結(jié)語(yǔ)

通過(guò)以上的方法,可以統(tǒng)計(jì)C語(yǔ)言嵌入式代碼覆蓋率,統(tǒng)計(jì)結(jié)果為提高代碼質(zhì)量提供了有效的依據(jù),也為衡量測(cè)試質(zhì)量提供了重要的指標(biāo),并可以通過(guò)結(jié)果中的代碼行執(zhí)行次數(shù)進(jìn)行效率分析。

然而,代碼覆蓋率并不能保證執(zhí)行過(guò)的代碼質(zhì)量,也無(wú)法作為衡量生產(chǎn)力的指標(biāo),代碼覆蓋率的數(shù)據(jù)只能表明測(cè)試用例的覆蓋代碼的強(qiáng)度,只有保證測(cè)試用例的正確通過(guò)和較高的代碼覆蓋率相結(jié)合才能真正意義上提升代碼的質(zhì)量。

代碼覆蓋率能不能提高軟件的可靠性?答案是肯定的,代碼的覆蓋率分析是保證軟件質(zhì)量最簡(jiǎn)便易行的方法。

原文標(biāo)題:硬核:嵌入式代碼覆蓋率統(tǒng)計(jì)方法和經(jīng)驗(yàn)

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20404

    瀏覽量

    333246
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    183

    文章

    7643

    瀏覽量

    145431
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4965

    瀏覽量

    73828

原文標(biāo)題:硬核:嵌入式代碼覆蓋率統(tǒng)計(jì)方法和經(jīng)驗(yàn)

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    芯片測(cè)試覆蓋率99%就夠了嗎?給DFT設(shè)計(jì)提個(gè)醒

    。模擬故障模型復(fù)雜,測(cè)試項(xiàng)(如增益、帶寬、THD)的通過(guò)/失敗標(biāo)準(zhǔn)是一個(gè)范圍。覆蓋率難以像數(shù)字電路那樣量化。常用方法是基于故障仿真,注入典型工藝偏差和缺陷模型(如電阻開(kāi)路、電容短路),評(píng)估現(xiàn)有測(cè)試項(xiàng)能否
    發(fā)表于 02-06 11:06

    嵌入式驅(qū)動(dòng)開(kāi)發(fā),需要掌握哪些技能?

    經(jīng)驗(yàn)的老司機(jī)都知道,做嵌入式驅(qū)動(dòng)開(kāi)發(fā)需要掌握一系列的技能,包含編程、硬件、操作系統(tǒng)、調(diào)試等多個(gè)方面。 1、硬件知識(shí)熟悉原理圖:能看懂原理圖以及各種元器件的含義,以及PCB布局等。 了解
    發(fā)表于 01-20 16:46

    嵌入式軟件單元測(cè)試中AI自動(dòng)化與人工檢查的協(xié)同機(jī)制研究:基于專業(yè)工具的實(shí)證分析

    ? ?摘要****? 本文系統(tǒng)探討嵌入式軟件相較于通用軟件在單元測(cè)試層面的特殊性,分析其對(duì)高覆蓋率、可追溯性與實(shí)時(shí)性驗(yàn)證的嚴(yán)苛需求,并以專業(yè)工具winAMS為技術(shù)載體,深入研究AI驅(qū)動(dòng)的自動(dòng)化測(cè)試在
    發(fā)表于 12-31 11:22

    分析嵌入式軟件代碼的漏洞-代碼注入

    隨著互聯(lián)網(wǎng)的發(fā)展,嵌入式設(shè)備正分布在一個(gè)充滿可以被攻擊者利用的源代碼級(jí)安全漏洞的環(huán)境中。 因此,嵌入式軟件開(kāi)發(fā)人員應(yīng)該了解不同類型的安全漏洞——特別是代碼注入。 術(shù)語(yǔ)“
    發(fā)表于 12-22 12:53

    C語(yǔ)言單元測(cè)試在嵌入式軟件開(kāi)發(fā)中的作用及專業(yè)工具的應(yīng)用

    功能包括: 測(cè)試通過(guò)/失敗統(tǒng)計(jì) 代碼覆蓋率可視化 執(zhí)行時(shí)間分析 缺陷跟蹤和報(bào)告生成 winAMS的圖形化界面可以直觀展示測(cè)試結(jié)果和覆蓋率數(shù)據(jù)。 七、總結(jié)與展望 C語(yǔ)言單元測(cè)試在
    發(fā)表于 12-18 11:46

    嵌入式開(kāi)發(fā)的關(guān)鍵點(diǎn)介紹

    嵌入式開(kāi)發(fā)在現(xiàn)代科技中扮演著非常重要的角色。隨著物聯(lián)網(wǎng)的發(fā)展,嵌入式系統(tǒng)的需求也越來(lái)越大。嵌入式開(kāi)發(fā)不僅需要開(kāi)發(fā)人員具備深入的硬件知識(shí)和編程經(jīng)驗(yàn),還需要不斷學(xué)習(xí)新的技術(shù)和工具,以滿足不
    發(fā)表于 11-13 08:12

    嵌入式軟件測(cè)試與專業(yè)測(cè)試工具的必要性深度解析

    覆蓋率達(dá)95%的CAN通信模塊測(cè)試。 監(jiān)控與調(diào)試工具 ?Monit?:開(kāi)源的Linux監(jiān)控工具,可監(jiān)測(cè)硬件資源和操作系統(tǒng)資源,對(duì)宿主機(jī)的CPU和內(nèi)存占用極小,特別適合嵌入式系統(tǒng)。 ?泰克示波器4系列
    發(fā)表于 09-28 17:42

    嵌入式達(dá)到什么水平才能就業(yè)?

    (三)實(shí)戰(zhàn)經(jīng)驗(yàn)擁有2-3 個(gè)完整嵌入式項(xiàng)目經(jīng)驗(yàn):項(xiàng)目需包含需求分析、方案設(shè)計(jì)、代碼開(kāi)發(fā)、測(cè)試優(yōu)化全流程,能清晰闡述項(xiàng)目難點(diǎn)與解決方案能獨(dú)立排查項(xiàng)目中的軟硬聯(lián)調(diào)問(wèn)題:比如通過(guò)示波器查
    發(fā)表于 09-15 10:20

    入行嵌入式應(yīng)該怎么準(zhǔn)備?

    知識(shí): 一、C/C++編程C/C++是嵌入式系統(tǒng)開(kāi)發(fā)中最常用的編程語(yǔ)言。熟練掌握C/C++語(yǔ)言將使你能夠理解和編寫(xiě)底層驅(qū)動(dòng)程序、操作系統(tǒng)以及與硬件交互的代碼。對(duì)于嵌入式系統(tǒng)來(lái)說(shuō),效率和資源利用率
    發(fā)表于 08-06 10:34

    太陽(yáng)光模擬器性能的影響參數(shù):光譜匹配度、光譜覆蓋率及光譜偏離

    太陽(yáng)光模擬器作為模擬太陽(yáng)輻射環(huán)境的核心設(shè)備,其性能直接關(guān)系到諸多領(lǐng)域?qū)嶒?yàn)數(shù)據(jù)的可靠性。光譜匹配度(SMD)、光譜覆蓋率(SPC)和光譜偏離(SPD)作為評(píng)估其性能的關(guān)鍵指標(biāo),從不同維度決定了模擬
    發(fā)表于 07-21 15:35

    嵌入式力矩電機(jī)的設(shè)計(jì)方法研究

    摘 要:介紹一種用于機(jī)床直驅(qū)部件的嵌入式力短電機(jī)的設(shè)計(jì)和電磁結(jié)構(gòu)優(yōu)化方法。為了使嵌入式力矩電機(jī)滿足機(jī)床內(nèi)部結(jié)構(gòu)緊湊的要求,必須具有較高的磁密。通過(guò)計(jì)算分析,得到不同長(zhǎng)徑比、不同磁極對(duì)數(shù)、不同槽極比
    發(fā)表于 06-11 15:08

    嵌入式適合自學(xué)嗎?

    ,學(xué)習(xí)者可能會(huì)因?yàn)槿狈I(yè)的指導(dǎo)而走很多彎路。例如,在學(xué)習(xí)STM32時(shí),可能會(huì)因?yàn)椴涣私庹_的學(xué)習(xí)方法和順序,而花費(fèi)大量時(shí)間在一些不必要的內(nèi)容上。 2)難以解決實(shí)際問(wèn)題:在嵌入式開(kāi)發(fā)中,經(jīng)常會(huì)遇到各種
    發(fā)表于 04-27 09:54

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開(kāi)發(fā)實(shí)戰(zhàn)正式出版

    關(guān)于 CW32 單片機(jī)的書(shū)籍。在這本書(shū)中,我們從最基礎(chǔ)的知識(shí)講起,詳細(xì)介紹了 CW32 單片機(jī)的硬件架構(gòu)、內(nèi)核特性、存儲(chǔ)系統(tǒng)以及各類外設(shè)功能。無(wú)論是剛剛踏入嵌入式開(kāi)發(fā)領(lǐng)域的新手,還是經(jīng)驗(yàn)豐富的專業(yè)人士
    發(fā)表于 03-03 15:14

    嵌入式軟件測(cè)試技術(shù)深度研究報(bào)告

    ? ISO 26262要求MC/DC覆蓋率≥99%,但傳統(tǒng)工具依賴人工用例設(shè)計(jì)導(dǎo)致達(dá)標(biāo)周期長(zhǎng)達(dá)8-12個(gè)月?; 汽車電子代碼量年均增長(zhǎng)35%,測(cè)試成本占比從15%攀升至28%?; ? 靜態(tài)與動(dòng)態(tài)測(cè)試的割裂性 ? 獨(dú)立使用靜態(tài)分析工具或動(dòng)態(tài)測(cè)試工具導(dǎo)致15%以上邏輯路徑漏
    的頭像 發(fā)表于 03-03 13:54 ?982次閱讀

    嵌入式系統(tǒng)中的代碼優(yōu)化與壓縮技術(shù)

    在當(dāng)今數(shù)字化時(shí)代,嵌入式系統(tǒng)廣泛應(yīng)用于各個(gè)領(lǐng)域,從智能家居設(shè)備到工業(yè)控制系統(tǒng),從汽車電子到可穿戴設(shè)備,它們無(wú)處不在。而在嵌入式系統(tǒng)開(kāi)發(fā)中,代碼優(yōu)化與壓縮技術(shù)至關(guān)重要,直接影響著系統(tǒng)的性能、成本
    發(fā)表于 02-26 15:00