如何優(yōu)化嵌入式軟件測(cè)試?提高測(cè)試自動(dòng)化是關(guān)鍵
由于在嵌入式目標(biāo)上啟動(dòng)和觀察測(cè)試的必要性和復(fù)雜性,嵌入式軟件的自動(dòng)化測(cè)試具有挑戰(zhàn)性。此外,軟件團(tuán)隊(duì)通常對(duì)目標(biāo)硬件的訪問權(quán)限有限。
軟件測(cè)試自動(dòng)化對(duì)于從主機(jī)開發(fā)系統(tǒng)到目標(biāo)系統(tǒng)的嵌入式測(cè)試的持續(xù)運(yùn)行至關(guān)重要。測(cè)試嵌入式軟件特別耗時(shí)。自動(dòng)化回歸測(cè)試套件節(jié)省了大量時(shí)間和成本。
測(cè)試嵌入式軟件的要點(diǎn)
根據(jù)需要,從目標(biāo)系統(tǒng)中收集測(cè)試結(jié)果和代碼覆蓋率數(shù)據(jù)對(duì)于驗(yàn)證和標(biāo)準(zhǔn)符合性是至關(guān)重要的。而數(shù)據(jù)收集在測(cè)試執(zhí)行中是至關(guān)重要的。它可以通過記錄和維護(hù)測(cè)試用例、測(cè)試結(jié)果、源代碼和需求之間的可追溯性來完成。
集成測(cè)試解決方案,如Parasoft C/C++test,提供了一個(gè)優(yōu)化的測(cè)試線束,為二進(jìn)制足跡采取最小的額外開銷,并以源代碼的形式提供,如果需要平臺(tái)特定的修改,可以在這里進(jìn)行定制。

Parasoft的c/c++軟件開發(fā)測(cè)試解決方案支持將回歸測(cè)試基線創(chuàng)建為一個(gè)有組織的測(cè)試集合,并自動(dòng)驗(yàn)證所有結(jié)果。這些測(cè)試定期自動(dòng)運(yùn)行,以驗(yàn)證代碼修改是否改變或破壞了回歸測(cè)試中捕獲的功能。
如果引入任何變更,這些測(cè)試用例將無法提醒團(tuán)隊(duì)注意問題。在隨后的測(cè)試中,parasoft c++ test如果檢測(cè)到初始測(cè)試中捕獲的行為發(fā)生變化,將報(bào)告任務(wù)。
自動(dòng)化很重要,但它需要做的不僅僅是保持現(xiàn)狀。為了提高軟件的安全性、安全性和質(zhì)量,在不進(jìn)一步減緩進(jìn)度的情況下,需要在配置項(xiàng)/光盤管道中進(jìn)行更多的測(cè)試。
提高測(cè)試自動(dòng)化,優(yōu)化嵌入式軟件配置項(xiàng)/光盤
團(tuán)隊(duì)面臨的最大難題是如何提高測(cè)試效率,同時(shí)在不影響進(jìn)度和成本的情況下滿足安全、安保和質(zhì)量需求。不可避免的是,即使是簡(jiǎn)單的測(cè)試自動(dòng)化(測(cè)試執(zhí)行和結(jié)果),也需要妥協(xié)來保持測(cè)試時(shí)間的合理。
簡(jiǎn)單的解決方案是憑猜測(cè)選擇軟件的哪些部分作為完整的系統(tǒng)測(cè)試套件進(jìn)行測(cè)試,這既耗時(shí)又昂貴。使用更智能的測(cè)試自動(dòng)化來優(yōu)化測(cè)試,消除了測(cè)試創(chuàng)建和執(zhí)行中的問題。
用代碼覆蓋率優(yōu)化測(cè)試
一般來說,代碼覆蓋率是對(duì)自動(dòng)化測(cè)試運(yùn)行時(shí)執(zhí)行的產(chǎn)品代碼量的度量。通過運(yùn)行一套測(cè)試并查看代碼覆蓋率數(shù)據(jù),可以大致了解應(yīng)用程序中有多少內(nèi)容正在被測(cè)試。
收集和分析代碼覆蓋率指標(biāo)化測(cè)試
收集和分析代碼覆蓋率度量是安全關(guān)鍵嵌入式軟件開發(fā)的一個(gè)重要方面。代碼覆蓋率衡量測(cè)試用例和執(zhí)行測(cè)試的完成情況。它提供了驗(yàn)證完成的證據(jù),至少按照軟件設(shè)計(jì)的規(guī)定。
高級(jí)單元測(cè)試自動(dòng)化工具,比如Parasoft C/++test,提供了所有這些代碼覆蓋度量等等。C/c++ test自動(dòng)化了主機(jī)和目標(biāo)測(cè)試的數(shù)據(jù)收集,并隨著時(shí)間的推移積累測(cè)試覆蓋歷史。這個(gè)代碼覆蓋歷史可以跨越單元、集成和系統(tǒng)測(cè)試,以確保覆蓋在測(cè)試的所有級(jí)別都是完整和可追蹤的。
通過自動(dòng)化單元測(cè)試用例創(chuàng)建增加代碼覆蓋率化測(cè)試
生產(chǎn)性單元測(cè)試的創(chuàng)建一直是一個(gè)挑戰(zhàn)。功能安全標(biāo)準(zhǔn)合規(guī)性要求高質(zhì)量的軟件,這推動(dòng)了對(duì)影響和產(chǎn)生高代碼覆蓋率統(tǒng)計(jì)的測(cè)試套件的需求。
團(tuán)隊(duì)需要單元測(cè)試用例來幫助他們實(shí)現(xiàn)他們的覆蓋目標(biāo),這些目標(biāo)甚至在安全關(guān)鍵軟件領(lǐng)域之外也很重要。任何未被至少一個(gè)測(cè)試覆蓋的代碼都是未經(jīng)測(cè)試的!
解決覆蓋率差距化測(cè)試
團(tuán)隊(duì)可以使用覆蓋率顧問。Parasoft發(fā)現(xiàn)了如何使用高級(jí)靜態(tài)代碼分析(數(shù)據(jù)和控制流分析)來找到執(zhí)行特定未覆蓋代碼行所需的輸入?yún)?shù)值。
該分析計(jì)算執(zhí)行特定代碼行所需的函數(shù)參數(shù)、全局變量和外部函數(shù)調(diào)用的前提條件。覆蓋率顧問為用戶選擇的代碼行提供一組解決方案。呈現(xiàn)的值用于創(chuàng)建新的單元測(cè)試用例。這一功能提高了開發(fā)人員處理單元測(cè)試用例的生產(chǎn)率,從而提高了代碼覆蓋率。

通過智能測(cè)試執(zhí)行優(yōu)化測(cè)試
為了加速連續(xù)管道中的測(cè)試,需要基于每個(gè)構(gòu)建的智能測(cè)試執(zhí)行來減少需要執(zhí)行的測(cè)試集,以解決每個(gè)新迭代引入的風(fēng)險(xiǎn)。測(cè)試影響分析提供的分析是使測(cè)試只關(guān)注絕對(duì)需要測(cè)試的內(nèi)容,而不是使用強(qiáng)制方法的關(guān)鍵。
Parasoft C/C++test中的智能測(cè)試執(zhí)行通過用于配置項(xiàng)系統(tǒng)(Jenkins、TeamCity、Bambean等)的插件進(jìn)行擴(kuò)展,以獲得高級(jí)功能,幫助軟件開發(fā)組織減少與運(yùn)行連續(xù)構(gòu)建相關(guān)的瓶頸。在具有專用插件的集成開發(fā)環(huán)境中也可以獲得相同的功能,這些插件通過一個(gè)REST應(yīng)用編程接口訪問一個(gè)集中的覆蓋映像,并確定需要在集成開發(fā)環(huán)境中本地執(zhí)行哪些測(cè)試來驗(yàn)證所有更改的代碼。
智能測(cè)試執(zhí)行使用測(cè)試影響分析來跟蹤針對(duì)應(yīng)用程序的手動(dòng)測(cè)試的執(zhí)行,以及與這些測(cè)試相關(guān)聯(lián)的、捕獲的代碼覆蓋信息。類似的技術(shù)用于自動(dòng)化測(cè)試。這種分析指出了需要執(zhí)行哪些手動(dòng)測(cè)試來訪問每一個(gè)新版本所提供的已更改的功能。因此,在開發(fā)人員和測(cè)試人員的本地IDEs中,智能測(cè)試執(zhí)行是至關(guān)重要的。它使他們能夠?qū)y(cè)試集中在需要的地方,消除猜測(cè)和額外的“以防萬一”工作。
持續(xù)集成和持續(xù)交付在嵌入式開發(fā)中很常見。將一個(gè)瀑布式的過程移植到CI/CD和敏捷開發(fā)中,在降低風(fēng)險(xiǎn)、提高質(zhì)量和安全性方面是有回報(bào)的。然而,測(cè)試仍然是嵌入式系統(tǒng)采用CI/CD工作流的一個(gè)障礙,因?yàn)樗鼈冊(cè)谧詣?dòng)化測(cè)試方面面臨獨(dú)特的挑戰(zhàn)。通過智能測(cè)試執(zhí)行消除這些障礙,并在提高代碼覆蓋率的同時(shí)優(yōu)化測(cè)試,是成功采用CI/CD的關(guān)鍵。