如何優(yōu)化嵌入式軟件測試?提高測試自動化是關鍵
由于在嵌入式目標上啟動和觀察測試的必要性和復雜性,嵌入式軟件的自動化測試具有挑戰(zhàn)性。此外,軟件團隊通常對目標硬件的訪問權限有限。
軟件測試自動化對于從主機開發(fā)系統(tǒng)到目標系統(tǒng)的嵌入式測試的持續(xù)運行至關重要。測試嵌入式軟件特別耗時。自動化回歸測試套件節(jié)省了大量時間和成本。
測試嵌入式軟件的要點
根據(jù)需要,從目標系統(tǒng)中收集測試結果和代碼覆蓋率數(shù)據(jù)對于驗證和標準符合性是至關重要的。而數(shù)據(jù)收集在測試執(zhí)行中是至關重要的。它可以通過記錄和維護測試用例、測試結果、源代碼和需求之間的可追溯性來完成。
集成測試解決方案,如Parasoft C/C++test,提供了一個優(yōu)化的測試線束,為二進制足跡采取最小的額外開銷,并以源代碼的形式提供,如果需要平臺特定的修改,可以在這里進行定制。
Parasoft的c/c++軟件開發(fā)測試解決方案支持將回歸測試基線創(chuàng)建為一個有組織的測試集合,并自動驗證所有結果。這些測試定期自動運行,以驗證代碼修改是否改變或破壞了回歸測試中捕獲的功能。
如果引入任何變更,這些測試用例將無法提醒團隊注意問題。在隨后的測試中,parasoft c++ test如果檢測到初始測試中捕獲的行為發(fā)生變化,將報告任務。
自動化很重要,但它需要做的不僅僅是保持現(xiàn)狀。為了提高軟件的安全性、安全性和質量,在不進一步減緩進度的情況下,需要在配置項/光盤管道中進行更多的測試。
提高測試自動化,優(yōu)化嵌入式軟件配置項/光盤
團隊面臨的最大難題是如何提高測試效率,同時在不影響進度和成本的情況下滿足安全、安保和質量需求。不可避免的是,即使是簡單的測試自動化(測試執(zhí)行和結果),也需要妥協(xié)來保持測試時間的合理。
簡單的解決方案是憑猜測選擇軟件的哪些部分作為完整的系統(tǒng)測試套件進行測試,這既耗時又昂貴。使用更智能的測試自動化來優(yōu)化測試,消除了測試創(chuàng)建和執(zhí)行中的問題。
用代碼覆蓋率優(yōu)化測試
一般來說,代碼覆蓋率是對自動化測試運行時執(zhí)行的產品代碼量的度量。通過運行一套測試并查看代碼覆蓋率數(shù)據(jù),可以大致了解應用程序中有多少內容正在被測試。
收集和分析代碼覆蓋率指標化測試
收集和分析代碼覆蓋率度量是安全關鍵嵌入式軟件開發(fā)的一個重要方面。代碼覆蓋率衡量測試用例和執(zhí)行測試的完成情況。它提供了驗證完成的證據(jù),至少按照軟件設計的規(guī)定。
高級單元測試自動化工具,比如Parasoft C/++test,提供了所有這些代碼覆蓋度量等等。C/c++ test自動化了主機和目標測試的數(shù)據(jù)收集,并隨著時間的推移積累測試覆蓋歷史。這個代碼覆蓋歷史可以跨越單元、集成和系統(tǒng)測試,以確保覆蓋在測試的所有級別都是完整和可追蹤的。
通過自動化單元測試用例創(chuàng)建增加代碼覆蓋率化測試
生產性單元測試的創(chuàng)建一直是一個挑戰(zhàn)。功能安全標準合規(guī)性要求高質量的軟件,這推動了對影響和產生高代碼覆蓋率統(tǒng)計的測試套件的需求。
團隊需要單元測試用例來幫助他們實現(xiàn)他們的覆蓋目標,這些目標甚至在安全關鍵軟件領域之外也很重要。任何未被至少一個測試覆蓋的代碼都是未經(jīng)測試的!
解決覆蓋率差距化測試
團隊可以使用覆蓋率顧問。Parasoft發(fā)現(xiàn)了如何使用高級靜態(tài)代碼分析(數(shù)據(jù)和控制流分析)來找到執(zhí)行特定未覆蓋代碼行所需的輸入?yún)?shù)值。
該分析計算執(zhí)行特定代碼行所需的函數(shù)參數(shù)、全局變量和外部函數(shù)調用的前提條件。覆蓋率顧問為用戶選擇的代碼行提供一組解決方案。呈現(xiàn)的值用于創(chuàng)建新的單元測試用例。這一功能提高了開發(fā)人員處理單元測試用例的生產率,從而提高了代碼覆蓋率。
通過智能測試執(zhí)行優(yōu)化測試
為了加速連續(xù)管道中的測試,需要基于每個構建的智能測試執(zhí)行來減少需要執(zhí)行的測試集,以解決每個新迭代引入的風險。測試影響分析提供的分析是使測試只關注絕對需要測試的內容,而不是使用強制方法的關鍵。
Parasoft C/C++test中的智能測試執(zhí)行通過用于配置項系統(tǒng)(Jenkins、TeamCity、Bambean等)的插件進行擴展,以獲得高級功能,幫助軟件開發(fā)組織減少與運行連續(xù)構建相關的瓶頸。在具有專用插件的集成開發(fā)環(huán)境中也可以獲得相同的功能,這些插件通過一個REST應用編程接口訪問一個集中的覆蓋映像,并確定需要在集成開發(fā)環(huán)境中本地執(zhí)行哪些測試來驗證所有更改的代碼。
智能測試執(zhí)行使用測試影響分析來跟蹤針對應用程序的手動測試的執(zhí)行,以及與這些測試相關聯(lián)的、捕獲的代碼覆蓋信息。類似的技術用于自動化測試。這種分析指出了需要執(zhí)行哪些手動測試來訪問每一個新版本所提供的已更改的功能。因此,在開發(fā)人員和測試人員的本地IDEs中,智能測試執(zhí)行是至關重要的。它使他們能夠將測試集中在需要的地方,消除猜測和額外的“以防萬一”工作。
持續(xù)集成和持續(xù)交付在嵌入式開發(fā)中很常見。將一個瀑布式的過程移植到CI/CD和敏捷開發(fā)中,在降低風險、提高質量和安全性方面是有回報的。然而,測試仍然是嵌入式系統(tǒng)采用CI/CD工作流的一個障礙,因為它們在自動化測試方面面臨獨特的挑戰(zhàn)。通過智能測試執(zhí)行消除這些障礙,并在提高代碼覆蓋率的同時優(yōu)化測試,是成功采用CI/CD的關鍵。