在過(guò)去美好的時(shí)光里,在編寫(xiě)軟件成為“軟件工程”之前,代碼開(kāi)發(fā)是一門(mén)黑藝術(shù),由剛從大學(xué)畢業(yè)的奇怪書(shū)孩子實(shí)踐。對(duì)他們來(lái)說(shuō),編碼絕不是一門(mén)結(jié)構(gòu)化的學(xué)科。如果你設(shè)法讓他們溝通,他們可能會(huì)告訴你,他們正在一起破解代碼,并使用臨時(shí)測(cè)試數(shù)據(jù)來(lái)查看它是否做了他們執(zhí)行它時(shí)應(yīng)該做的事情。
無(wú)論他們是否知道,他們都在通過(guò)系統(tǒng)功能測(cè)試進(jìn)行動(dòng)態(tài)分析。與靜態(tài)分析不同,動(dòng)態(tài)分析涉及代碼執(zhí)行的定義。
但是,除了顯示基本功能對(duì)于任何基本的測(cè)試數(shù)據(jù)大致正確之外,這還做了什么?雖然總比沒(méi)有好,但可能不超過(guò)一半的代碼被執(zhí)行。行業(yè)軟件專(zhuān)家、Ganssle Group首席顧問(wèn)兼行業(yè)編輯Jack Ganssle對(duì)此表示贊同:“研究證實(shí),如果不使用代碼覆蓋率分析,測(cè)試通常只執(zhí)行50%的代碼。給定典型的錯(cuò)誤率,這意味著程序中的 100K 行代碼將附帶 2500 到 5000 個(gè)錯(cuò)誤。這些錯(cuò)誤會(huì)導(dǎo)致許多系統(tǒng)故障。
為什么?因?yàn)闊o(wú)論測(cè)試多么富有想象力,現(xiàn)實(shí)生活中都有可能拋出一些曲線球來(lái)嘗試未經(jīng)測(cè)試的路徑。如果執(zhí)行某些內(nèi)容未經(jīng)測(cè)試,您可能會(huì)遇到一些意外和潛在的災(zāi)難性故障。
快進(jìn) 30 或 40 年。雖然這種樸素的方法并不能與復(fù)雜的軍事嵌入式應(yīng)用相提并論,但功能測(cè)試仍然是動(dòng)態(tài)測(cè)試的核心。精心挑選的測(cè)試數(shù)據(jù)表明,源代碼中的分支和語(yǔ)句是按照規(guī)范執(zhí)行的,不僅使我們能夠證明系統(tǒng)在功能上是正確的,而且我們已經(jīng)執(zhí)行了所有這些功能。當(dāng)與靜態(tài)分析結(jié)合使用時(shí),動(dòng)態(tài)分析提供了所需的支持證據(jù),以證明我們所有其他良好的工作和最佳實(shí)踐產(chǎn)生了安全、可靠和高質(zhì)量的最終產(chǎn)品。
與多年前的黑客攻擊不同,今天的自動(dòng)化測(cè)試工具通過(guò)使用儀器探針等技術(shù)精確地跟蹤執(zhí)行路線。這些探測(cè)器本質(zhì)上是附加的函數(shù)調(diào)用,從源代碼中的戰(zhàn)略點(diǎn)生成“我來(lái)過(guò)這里”消息,并允許整理覆蓋率數(shù)據(jù)。它們?cè)试S動(dòng)態(tài)測(cè)試生成有關(guān)其全面程度的反饋,以便我們可以在每組結(jié)果的基礎(chǔ)上連續(xù)構(gòu)建,直到達(dá)到所需的覆蓋水平。
反過(guò)來(lái),這為我們一次執(zhí)行多少代碼提供了靈活性??梢詫?duì)整個(gè)系統(tǒng)進(jìn)行動(dòng)態(tài)分析,但總有一些通過(guò)代碼的路由,我們的系統(tǒng)在正常運(yùn)行期間無(wú)法執(zhí)行這些路由——例如防御性代碼;也許是除以零的支票。
在這種情況下,最好也使用“單元測(cè)試”。單元測(cè)試封裝了系統(tǒng)的一個(gè)子集,并允許傳遞參數(shù),以便執(zhí)行示例中的防御機(jī)制代碼。我們甚至可以選擇完全基于單元測(cè)試進(jìn)行應(yīng)用程序動(dòng)態(tài)分析,在每個(gè)模塊開(kāi)發(fā)時(shí)整理代碼覆蓋率數(shù)據(jù),并消除等待完整系統(tǒng)的任何要求。
當(dāng)今的軍事應(yīng)用需要支持 ARINC 653 或FACE等架構(gòu)標(biāo)準(zhǔn),以提高代碼的可移植性和可重用性。通過(guò)動(dòng)態(tài)分析提供全面的覆蓋數(shù)據(jù)提供了證據(jù),證明即使移植到不同的應(yīng)用程序,代碼仍然是可維護(hù)的、安全的,特別是當(dāng)與有效的靜態(tài)分析制度結(jié)合使用時(shí)。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5149文章
19659瀏覽量
317356 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70682
發(fā)布評(píng)論請(qǐng)先 登錄


硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
工程師的“新神器”:用CCLinkie轉(zhuǎn)Devicenet連接水質(zhì)分析儀,輕松搞定數(shù)據(jù)難題

如何成為一名合格的KaihongOS北向應(yīng)用開(kāi)發(fā)工程師
硬件工程師手冊(cè)(全套)


如何成為一名合格的北向應(yīng)用開(kāi)發(fā)工程師

不同時(shí)期的硬件工程師,最怕發(fā)生的事 #電子工程師 #硬件工程師 #內(nèi)容過(guò)于真實(shí) #YXC晶振 #揚(yáng)興科技
嵌入式工程師常用的開(kāi)發(fā)工具有哪些?

評(píng)論