我們先來了解一下什么是編輯器的單元測試!
1. 什么是單元測試?
單元測試也稱為模塊測試或組件測試。它是測試可以與程序的其他部分隔離進(jìn)行測試的*小單元的活動,以發(fā)現(xiàn)缺陷并驗(yàn)證其功能。
一般來說,單元的具體含義應(yīng)根據(jù)實(shí)際情況確定,可以是函數(shù)、模塊、類或?qū)ο蟆?/p>
并且單元測試將首先進(jìn)行功能(基于需求)測試,此外還有具體的非功能測試,如接口測試、源代碼相關(guān)測試、健壯性測試等。
單元測試一般在以編碼為中心的運(yùn)行環(huán)境中進(jìn)行,因此需要調(diào)試或編譯工具等開發(fā)環(huán)境的支持。但是在單元測試中,有時(shí)會用到驅(qū)動、存根和模擬器,所以不需要完美的環(huán)境。
上圖是國際汽車電子控制裝置功能安全標(biāo)準(zhǔn)ISO 26262(Road Vehicles Functional Safety)中提出的V模型。汽車相關(guān)行業(yè)的開發(fā)和驗(yàn)證都需要遵守此規(guī)定,單元測試是右側(cè)測試過程的第一階段。
汽車控制器通過接受危害分析和風(fēng)險(xiǎn)評估來建立 ASIL(汽車安全完整性等級)級別。根據(jù)不同的層次,有相應(yīng)的推薦方法或結(jié)構(gòu)覆蓋(Structural Coverage:Statement Coverage、Branch Coveage、MC/DC)。
就像汽車領(lǐng)域的ISO 26262一樣,各個(gè)行業(yè)都有相應(yīng)的標(biāo)準(zhǔn)應(yīng)該遵循。國防和航天標(biāo)準(zhǔn)為DO-178B/C,鐵路領(lǐng)域?yàn)镮EC-62279、EN-50128。
2.使用Controller Tester進(jìn)行單元測試過程
單元測試過程
首先在Controller Tester中,根據(jù)環(huán)境信息(如集成開發(fā)環(huán)境和目標(biāo)軟件的編譯器版本)搭建Build環(huán)境,然后繼續(xù)搭建測試環(huán)境,通過創(chuàng)建項(xiàng)目生成測試代碼每個(gè)單位。
測試環(huán)境搭建好后,為了測試順利,還需要添加測試代碼。此時(shí),Controller Tester 通過分析規(guī)范和代碼來編寫測試代碼,反映使用的變量的輸入/輸出或必要的存根信息。
完成測試編碼后,根據(jù)反映的信息生成要執(zhí)行的測試用例。創(chuàng)建測試用例的方法有很多種,其中*具代表性的是等價(jià)類劃分法和邊界值法。前者是將所有可能的輸入數(shù)據(jù),即程序的輸入域分成若干部分(子集),然后從每個(gè)子集中選取少量有代表性的數(shù)據(jù)作為測試用例;后者是對每組錯(cuò)誤概率較高的極限值進(jìn)行測試。
Controller Tester判斷測試用例的必要性,使用上述方法直接生成測試用例或使用Controller Tester提供的自動生成功能自動生成測試用例。
Controller Tester提供的測試用例自動生成功能利用了多種測試用例生成和組合方式,包括基于測試數(shù)據(jù)數(shù)量*多的變量簡單組合的平面組合。每個(gè)選定的參數(shù)數(shù)據(jù)至少與自身以外的參數(shù)數(shù)據(jù)組合。一個(gè)pairwise組合的Pairwise組合,以及輸入?yún)?shù)變量分區(qū)列表的*小值和*大值之間的任意值的隨機(jī)組合基于錯(cuò)誤驅(qū)動的翻譯模板自動獲取,根據(jù)用戶定義的數(shù)量等。
測試用例生成后,使用編寫好的測試代碼和測試用例進(jìn)行測試,直到必須滿足100%的結(jié)構(gòu)覆蓋率(Structural Coverage:Statement Coverage、Branch Coverage、MC/DC)。執(zhí)行工作。在這種情況下,只要使用Controller Tester提供的可以輕松掌握覆蓋滿意程度的“Coverage View”功能或者可以確認(rèn)函數(shù)內(nèi)執(zhí)行的分支的“Control Flow Chart”功能,就可以更簡單有效 執(zhí)行單元測試。
測試結(jié)束后基于錯(cuò)誤驅(qū)動的翻譯模板自動獲取,在確認(rèn)測試結(jié)果時(shí),可以通過分析可能導(dǎo)致致命錯(cuò)誤的部分或掌握覆蓋效果不能滿足的原因來發(fā)現(xiàn)軟件缺陷。
我們公司的軟件Controller Tester可以通過在目標(biāo)環(huán)境或類似于目標(biāo)環(huán)境的主機(jī)環(huán)境中配置嵌入式軟件來幫助您輕松測試。此外,Controller Tester 支持測試設(shè)計(jì)、測試代碼和數(shù)據(jù)生成、執(zhí)行測試和覆蓋率測量的各個(gè)階段,并具有測試自動化過程中所需的各種功能。