你怎么知道你的軟件正在按照它應(yīng)該的方式工作? 你測(cè)試一下!
然而,真正的問題是“你如何測(cè)試它?”。在過去,嵌入式開發(fā)人員過去只是手動(dòng)測(cè)試他們的軟件。然而,手動(dòng)測(cè)試并不是測(cè)試軟件的好方法。大量的測(cè)試用例、測(cè)試所需的時(shí)間和勞動(dòng)強(qiáng)度幾乎保證了軟件不會(huì)得到充分的測(cè)試。
改進(jìn)嵌入式軟件測(cè)試的解決方案是使用自動(dòng)化測(cè)試。自動(dòng)化測(cè)試可以有多種形式,但現(xiàn)在,我們將專注于單元測(cè)試。單元測(cè)試是“一種軟件測(cè)試方法,通過該方法對(duì)各個(gè)源代碼單元(一個(gè)或多個(gè)程序模塊的集合以及相關(guān)的控制數(shù)據(jù)、使用程序和操作程序)進(jìn)行測(cè)試,以確定它們是否適合使用”。今天的文章將探討開發(fā)和運(yùn)行嵌入式軟件單元測(cè)試的三個(gè)技巧。
技巧1 – 將您的軟件組織成組件進(jìn)行測(cè)試
通常,嵌入式軟件程序?qū)⒂蓭资畟€(gè)模塊組成,這些模塊被放入一個(gè)程序文件夾中。今天,更常見的是看到一些文件夾組織,其中模塊按應(yīng)用程序、中間件和驅(qū)動(dòng)程序組織。像這樣的程序組織結(jié)構(gòu)是可以的,但在考慮單元測(cè)試時(shí),按組件管理程序會(huì)容易得多。
組件是封裝了一組相關(guān)功能[2]、數(shù)據(jù)和測(cè)試用例的模塊。例如,為 FIR
濾波器編寫應(yīng)用程序組件的開發(fā)人員可能會(huì)按如下方式組織它:
FIR Filter
– include
— fir.h
– source
— fir.c
– tests
— fir_test.c
構(gòu)建這樣的文件夾結(jié)構(gòu)起初可能看起來(lái)有點(diǎn)痛苦。但是,它保留了組件執(zhí)行其目的所需的所有軟件模塊和測(cè)試用例!此外,像這樣組織組件使組件易于移植,或者更重要的是,更易于在其他軟件項(xiàng)目中重用。
技巧2 – 使用測(cè)試驅(qū)動(dòng)開發(fā) (TDD) 開發(fā)軟件
敏捷運(yùn)動(dòng)為嵌入式開發(fā)人員提供了許多流程和工具,旨在幫助他們更快地開發(fā)出高質(zhì)量的軟件。
敏捷產(chǎn)生的一種方法是測(cè)試驅(qū)動(dòng)開發(fā),通常稱為 TDD。
TDD“是一個(gè)軟件開發(fā)過程,依賴于在軟件完全開發(fā)之前將軟件需求轉(zhuǎn)換為測(cè)試用例,并通過針對(duì)所有測(cè)試用例重復(fù)測(cè)試軟件來(lái)跟蹤所有軟件開發(fā)”。
一般來(lái)說(shuō),TDD
通過專注于測(cè)試改變了開發(fā)人員編寫軟件的方式案例。開發(fā)人員創(chuàng)建一個(gè)測(cè)試用例,使其失敗,然后編寫通過測(cè)試用例所需的代碼。通過這樣做,他們正在構(gòu)建測(cè)試用例,他們知道如果將錯(cuò)誤引入軟件中就會(huì)發(fā)現(xiàn)問題。
技巧3 – 利用 Docker 和單元測(cè)試工具
嵌入式開發(fā)人員可用于開發(fā)單元測(cè)試的工具在過去幾年中發(fā)生了很大變化。當(dāng)我第一次開始使用自動(dòng)化測(cè)試時(shí),我發(fā)現(xiàn)設(shè)置工具是一個(gè)巨大的挑戰(zhàn),今天不再是這種情況。
團(tuán)隊(duì)可以通過多種方式設(shè)置單元測(cè)試。首先,他們可以將測(cè)試設(shè)置為持續(xù)集成和持續(xù)部署 (CI/CD) 系統(tǒng)的一部分。 CI/CD
允許團(tuán)隊(duì)在構(gòu)建和部署過程中自動(dòng)運(yùn)行測(cè)試用例。接下來(lái),開發(fā)人員可以選擇一個(gè)測(cè)試工具并將其安裝在他們的系統(tǒng)上。在這種情況下,測(cè)試工具在獨(dú)立環(huán)境中運(yùn)行。最后,開發(fā)人員可以構(gòu)建他們的測(cè)試工具和開發(fā)流程,并在
Docker 環(huán)境中進(jìn)行設(shè)置。 Docker
允許開發(fā)人員在可移植的映像中運(yùn)行他們的開發(fā)環(huán)境,從而最大限度地減少設(shè)置時(shí)間并提高開發(fā)人員之間的一致性。
可以在 Docker
中設(shè)置測(cè)試工具,然后輕松部署到多個(gè)開發(fā)人員,以便他們只需使用幾條命令即可設(shè)置環(huán)境。
一開始,為嵌入式軟件創(chuàng)建和使用自動(dòng)化測(cè)試似乎令人生畏。然而,鑒于當(dāng)今系統(tǒng)變得如此復(fù)雜,手動(dòng)進(jìn)行測(cè)試幾乎是不可能的。唯一真正的解決方案是開發(fā)可用于執(zhí)行所有系統(tǒng)功能的自動(dòng)化測(cè)試。單元測(cè)試是嵌入式開發(fā)人員最常用的工具,可以顯著提高系統(tǒng)質(zhì)量,同時(shí)減少開發(fā)軟件的總時(shí)間。