技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于模塊化設(shè)計的嵌入式軟件測試方法

基于模塊化設(shè)計的嵌入式軟件測試方法

時間:2006-06-28 17:48:00來源:0

導(dǎo)語:?分析嵌入式軟件的特點,綜述傳統(tǒng)的軟件測試方法;
摘要:分析嵌入式軟件的特點,綜述傳統(tǒng)的軟件測試方法;針對嵌入式軟件的特點,提出嵌入式軟件的四級測試流程和集成測試的測試模型,并結(jié)合開發(fā)數(shù)控系統(tǒng)的實例進行分析。 關(guān)鍵字:嵌入式;模塊化   嵌入式設(shè)計已經(jīng)成為工業(yè)現(xiàn)代化、智能化的必經(jīng)之路,嵌入式產(chǎn)品已經(jīng)深入到各行各業(yè)。嵌入式系統(tǒng)的專用程度較高,系統(tǒng)的整體繼承性相對較小,為了保證系統(tǒng)的穩(wěn)定性,軟件的測試成為嵌入式開發(fā)的一個重要環(huán)節(jié)。由于嵌入式軟件自身的特點,傳統(tǒng)的軟件測試?yán)碚摬荒苤苯佑糜谇度胧杰浖臏y試,因此,研究嵌入式軟件的測試有重要意義。 1 基本概念簡述 1.1 模塊化設(shè)計 軟件的設(shè)計是以一定的方法為基礎(chǔ)的。面對越來越復(fù)雜的軟件開發(fā)任務(wù),人們提出了各種軟件設(shè)計的模型。從用戶需求和系統(tǒng)要實現(xiàn)的任務(wù)功能出發(fā),把大型的軟件劃分為相對較小的模塊。為了減少模塊與模塊之間的關(guān)聯(lián)性,模塊之間的邏輯結(jié)構(gòu)相對獨立,無函數(shù)的交叉調(diào)用,數(shù)據(jù)傳遞由全局變量完成,這就是模塊化設(shè)計的基本思想。模塊化設(shè)計的核心是模塊的獨立性,主要包括功能獨立性和結(jié)構(gòu)獨立性,這使得軟件開發(fā)的分工易于實現(xiàn)。軟件測試是軟件開發(fā)中的關(guān)鍵環(huán)節(jié),基于模塊化設(shè)計的軟件測試模型簡單,查錯和糾錯都易于實現(xiàn)。下面以單鏈路數(shù)據(jù)傳遞的軟件模型說明模塊化軟件設(shè)計的軟件測試的基本原則。函數(shù)F(X-Y)定義為軟件模塊X到軟件模塊Y的接口函數(shù),用來通過終端顯示由模塊X進入模塊Y的數(shù)據(jù)。如果模塊C執(zhí)行后發(fā)生錯誤,則由模塊B和模塊C的數(shù)據(jù)接口函數(shù)F(B-C)判斷是否是模塊B出來的數(shù)據(jù)就是錯誤的。如果F(B-C)不錯,則證明模塊C存在錯誤;如果F(B-C)傳遞數(shù)據(jù)錯誤,再察看F(A-B)傳出的數(shù)據(jù)是否錯誤,如果不錯則證明模塊B存在錯誤。用此依次前推孤立錯誤的方法,即可以很容易地定位錯誤所在的模塊。這就是模塊化設(shè)計時軟件測試的基本原則。 1.2 嵌入式系統(tǒng) 嵌入式系統(tǒng)開發(fā)有其自身的特點。一般先進行硬件部分的開發(fā),主要包括形成裸機平臺,根據(jù)需要移植實時操作系統(tǒng),開發(fā)底層的硬件驅(qū)動程序等。硬件平臺測試通過后,應(yīng)該軟件的開發(fā)調(diào)試是基于該硬件平臺進行的,這同時也是對硬件平臺的一個測試。因此可以說,嵌入式系統(tǒng)的開發(fā)過程是一個軟硬件互相協(xié)調(diào),互相反饋和互相測試的過程。一般來說,在嵌入式系統(tǒng)軟件中,底層驅(qū)動程序、操作系統(tǒng)和應(yīng)用程序的界線是不清晰的,根據(jù)需要甚至混編在一起。這主要是由于嵌入式系統(tǒng)中軟件對硬件的依賴性造成的。嵌入式軟件對硬件的依賴性要求,軟件測試時必須最大限度地模擬被測軟件的實際運行環(huán)境,以保證測試的可靠性。底層程序和應(yīng)用程序界限的不清晰增加了測試時的難度,測試時只有確認(rèn)嵌入式系統(tǒng)平臺及底層程序正確的情況下才能進行應(yīng)用程序的測試,而且在系統(tǒng)測試時,錯誤的定位較為困難。軟件的專用性也是嵌入式軟件的一個重要特點。由于嵌入式軟件設(shè)計是以一定的目標(biāo)硬件平臺為基礎(chǔ)的、面向固定的任務(wù)進行的,因此,一旦被加載到目標(biāo)系統(tǒng)上,功能必須完全確定。這個特點決定了嵌入式應(yīng)用軟件的繼承性較差,延長的系統(tǒng)的測試時間,增加了測試費用。嵌入式軟件的另外一個重要特點就是實時性。這是從軟件的執(zhí)行角度出發(fā)說明的,也就是說嵌入式軟件的執(zhí)行要滿足一定的時間約束。嵌入式系統(tǒng)中,應(yīng)用軟件自身算法的復(fù)雜度和操作系統(tǒng)任務(wù)調(diào)度,決定了系統(tǒng)資源的分配和消耗,因此,對系統(tǒng)實時性進行測試時,要借助一定的測試工具對應(yīng)用程序算法復(fù)雜度和操作系統(tǒng)任務(wù)調(diào)度進行分析測試??梢娗度胧杰浖c傳統(tǒng)的面向?qū)ο蠛兔嫦蜻^程的軟件相比有其自身的特點。針對這些特點對嵌入式軟件的測試進行研究是必要的,有意義的。 1.3 嵌入式軟件測試 軟件測試是從經(jīng)濟、效率的角度出發(fā),對軟件代碼進行質(zhì)量、正確性保證的一個過程。軟件測試是軟件開發(fā)中的一個重要環(huán)節(jié),也是軟件從開發(fā)過程到應(yīng)用過程的關(guān)鍵一環(huán)。嵌入式軟件也不例外,軟件測試逐漸成為一門成熟的學(xué)科,前人針對面向?qū)ο蠛兔嫦蜻^程的非實時軟件的測試作了大量的研究,其中大部分方法可以用到嵌入式軟件的測試。 根據(jù)不同的指標(biāo),軟件測試方法有不同的劃分方法。從軟件開發(fā)過程中測試所處的不同階段可分為模塊測試、集成測試和系統(tǒng)測試。根據(jù)是否需要運行目標(biāo)代碼分為動態(tài)測試和靜態(tài)測試;根據(jù)目標(biāo)代碼的可見性可分為白盒測試(結(jié)構(gòu)測試)和黑盒測試(功能測試)。在軟件的測試中,每種測試方法都不是孤立的。為了最經(jīng)濟最有效地達到測試的目的,各種測試方法往往是互相嵌套的。例如,在軟件的單元測試階段,可以用黑盒測試和白盒測試的方法分別進行動態(tài)測試。 值得一提的是,近年來軟件測試中,測試代碼的覆蓋率逐漸成為軟件測試的統(tǒng)一標(biāo)準(zhǔn),因此不管采用何種測試方法,盡可能地提高軟件測試中的代碼覆蓋率是必需的。軟件測試代碼覆蓋率是基于白盒測試方法的,因此,為了提高軟件測試的代碼覆蓋率,測試人員必須清楚源代碼的結(jié)構(gòu),擁有程序設(shè)計文檔,以便設(shè)計測試用例使測試盡可能地覆蓋程序內(nèi)部結(jié)構(gòu)的每條語句,提高代碼的覆蓋率。 2 基于模塊化設(shè)計的嵌入式軟件四級測試流程 根據(jù)嵌入式系統(tǒng)的開發(fā)流程,為了最經(jīng)濟地實現(xiàn)系統(tǒng)的功能,采用自頂向下、層層推進的方法對嵌入式系統(tǒng)進行測試,在四級測試中,本測試階段以前的測試完成后,當(dāng)發(fā)現(xiàn)錯誤時,可排隊此測試階段以前的錯誤,在本測試階段內(nèi)查找錯誤。這并不是一個絕對準(zhǔn)確的方法,但最大限度地節(jié)了錯誤定位的時間。 2.1 系統(tǒng)平臺測試 這部分包括硬件電路測試、操作系統(tǒng)及底層驅(qū)動程序的測試等。硬件電路的測試需要用專門的測試工具進行測試。這里不再多述。操作系統(tǒng)和底層驅(qū)動程序的測試主要包括測試操作系統(tǒng)的任務(wù)調(diào)度、實時性能、通信端口的數(shù)據(jù)傳輸率。該階段測試完成后,系統(tǒng)應(yīng)為一個完整的嵌入式系統(tǒng)平臺,用戶只需添加應(yīng)用程序即可完成特定的任務(wù)。 2.2 模塊測試 把大型的嵌入式軟件系統(tǒng)劃分為若干個相對較小的任務(wù)模塊,由不同的程序員分別同時對其進行編碼。編碼完成后,把各個模塊集成起來前,必須對單個模塊進行測試。由于沒有其它數(shù)據(jù)模塊進行數(shù)據(jù)傳遞的支持,該階段測試一段是在宿主機上進行的(宿主機有豐富的資源和方便的調(diào)試環(huán)境)。此階段主要是進行白盒測試,盡可能地測試每一個函數(shù)、每一個條件分支、每一個程序語句,提高代碼測試的覆蓋率 。由于只有單個模塊正確才有整體集成的必要性,因此,單個模塊測試時測試一定要充分、完整。模塊測試階段,測試用例的構(gòu)造不但要測試系統(tǒng)正常的運行情況,還要進行邊界測試。邊界測試就是進行某一數(shù)據(jù)變量的最大值和最小值的測試,同時進行越界測試,即輸入不該輸入的數(shù)據(jù)變量測試系統(tǒng)的運行情況。理想的嵌入式系統(tǒng)是不應(yīng)該由用戶的信息交互導(dǎo)致死機的,這也是嵌入式設(shè)計的一個基本要求。因此,不論進行何種測試,系統(tǒng)死機都該被作為測試錯誤處理。在模塊測試階段,由模塊化編程的基本思想,根據(jù)模塊內(nèi)部的緊湊程序,也可以把大的模塊劃分成小的模塊。在程序內(nèi)部,小模塊之間數(shù)據(jù)傳遞的入口設(shè)計接口函數(shù),用于快速地定位錯誤。用此模塊嵌套的思想進行軟件測試,需要模塊內(nèi)部結(jié)構(gòu)清晰,數(shù)據(jù)鏈路簡單。 2.3 集成測試 單個軟件模塊測試正確之后,將所有模塊集成起來進行測試。本階段主要是找出各模塊之間數(shù)據(jù)傳遞和系統(tǒng)組成后的邏輯結(jié)構(gòu)的錯誤。在宿主機上采用黑盒與白盒相結(jié)合的方法進行測試,要最大限度地模擬實際運行環(huán)境,可以屏蔽掉一些不影響系統(tǒng)執(zhí)行的和數(shù)據(jù)傳遞的難以模擬的函數(shù)。集成測試是模塊化設(shè)計軟件的測試優(yōu)點充分體現(xiàn)的階段。集成測試前,應(yīng)該由程序員根據(jù)模塊之間的數(shù)據(jù)的輸入輸出編寫模塊接口函數(shù),這需要負(fù)責(zé)不同軟件模塊的程序員共同協(xié)調(diào)完成,然后將模塊接口函數(shù)集成到接收數(shù)據(jù)模塊的入口處。由前面的分析可知,單鏈路數(shù)據(jù)傳遞的軟件模塊集成測試時容易定位錯誤所在的軟件模塊。一個軟件模塊的數(shù)據(jù)不一定只有另外一個模塊提供,即軟件模塊的數(shù)據(jù)鏈路不一定只是單鏈路的,測試時可以把復(fù)雜鏈路結(jié)構(gòu)的數(shù)據(jù)傳遞劃分為單鏈路結(jié)構(gòu)數(shù)據(jù)傳送進行錯誤定位。修改輸出數(shù)據(jù)的軟件模塊時,可能導(dǎo)致輸入數(shù)據(jù)的軟件模塊引入新的錯誤,因此在這里引入關(guān)聯(lián)矩陣確定修改某一模塊后需要重要測試的模塊。 假定模塊化設(shè)計的嵌入式系統(tǒng)軟件由軟件模塊Ai(i=1,2,…,m,n)組成,m表示矩陣的行號,n表示矩陣的列號。在關(guān)聯(lián)矩陣中,Aij=1表示Aj接受了Ai輸出的數(shù)據(jù),故修改了Ai重新測試Ai的同時也需重新測試Aj。集成測試是在擁有程序設(shè)計文檔、程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)時,對軟件模塊在集成中出現(xiàn)的錯誤進行測試。集成測試時,根據(jù)模塊接口函數(shù)定位錯誤修改代碼,根據(jù)關(guān)聯(lián)矩陣確定重新測試的軟件模塊。 2.4 系統(tǒng)測試 集成測試完成后,退出宿主機測試環(huán)境,把系統(tǒng)移植到目標(biāo)機上來,完成應(yīng)用到現(xiàn)場環(huán)境中,從用戶的角度對系統(tǒng)進行黑盒測試,驗證每一項具體的功能。由于測試者對程序內(nèi)容程序執(zhí)行情況一無所知,因此本測試階段的錯誤定位比較困難。系統(tǒng)測試階段應(yīng)該進行意外測試和破壞性測試,即測試系統(tǒng)正常執(zhí)行情況下不該發(fā)生的激發(fā)活動和人為的破壞性的測試,進一步驗證系統(tǒng)性能。系統(tǒng)測試階段不應(yīng)該確定錯誤后立即修改代碼,應(yīng)根據(jù)一定的錯誤發(fā)生頻率,確定測試周期,在每個測試周期結(jié)束時修改代碼,進行反復(fù)測試;否則,不但增加了完全測試的任務(wù)量,而且降低了測試的可信度。 2.5 測試結(jié)果分析 測試結(jié)果的分析可以定位錯誤,指導(dǎo)程序員修改代碼,同時指出測試進行的程序并進一步指明測試方向。測試結(jié)果的分析是一個由測試結(jié)果和測試預(yù)得結(jié)果進行分析、比較和定位錯誤的過程。測試結(jié)果的分析是一次測試的最后環(huán)節(jié),分析時應(yīng)該考慮軟件的運行環(huán)境和實際運行環(huán)境的差異以及各種外界因素的影響等。 2.6 測試用例的構(gòu)造與管理 測試用例是為了測試目標(biāo)程序設(shè)計的包括輸入項和預(yù)得結(jié)果的一種文件,根據(jù)測試環(huán)境和測試目標(biāo)程序的不同,可分為某種格式的文檔或某種輸入行為(如一次按鍵)等。測試用例的構(gòu)造要盡可能覆蓋所有可能的取值范圍,使測試盡可能地覆蓋所有程序代碼,提高代碼的測試覆蓋率,同時又不作多余、重復(fù)和無意義的測試。在嵌入式軟件測試的不同階段,要構(gòu)造不同的測試用例;在系統(tǒng)平臺測試階段,要構(gòu)造針對系統(tǒng)任務(wù)調(diào)度、實時性能和底層驅(qū)動程序的測試用例;在模塊測試階段,應(yīng)構(gòu)造針對某一模塊進行測試的測試用例;在集成測試階段,針對系統(tǒng)集成時數(shù)據(jù)傳遞、結(jié)構(gòu)斜接的問題構(gòu)造相應(yīng)的測試用例;在系統(tǒng)測試階段,要構(gòu)造針對某項功能的或多項功能結(jié)合在一起的測試用例,或使用已經(jīng)在同類產(chǎn)品上已經(jīng)驗證正確的測試用例。測試用例是可復(fù)用的。此外大型的軟件開發(fā)過程中,測試用例的種類繁多,應(yīng)該按一定的方法進行管理。用數(shù)據(jù)庫的來管理測試用例是一個很好的選擇。根據(jù)測試階段將測試用例進行劃分,然后用關(guān)鍵字唯一確定。這樣在使用、修改和保存測試用例時都很方便,直接用查詢的方式就可以調(diào)出測試用例。 3 數(shù)控系統(tǒng)軟件測試 本數(shù)控系統(tǒng)采用ARM7處理器,操作系統(tǒng)采用μC/OS實時操作系統(tǒng),是一個典型的嵌入式系統(tǒng)。由于數(shù)控系統(tǒng)較為復(fù)雜,開發(fā)過程中將任務(wù)進行了詳細(xì)的劃分,軟件的開發(fā)采用模塊化開發(fā)。開發(fā)過程中,幾個模塊由不同的程序員分別進行編碼,分別由程序員進行模塊測試,并按白盒測試的方法進行覆蓋測試。最后集成測試前,根據(jù)關(guān)聯(lián)矩陣,程序員協(xié)作編寫了模塊接口函數(shù)F(A1-A2)、F(A1-A4)、F(A1-A5)、F(A1-A6)、F(F2-A3)、F(A3-A4)、F(A4-A5)、F(F5-A6)、F(A6-A2),分析可知,一些關(guān)鍵模塊,如譯碼模塊和刀補模塊的測試代碼覆蓋率達到90%之上。 4 結(jié)論 文章對嵌入式軟件的特點和傳統(tǒng)的測試方法作了分析之后,提出了四級測試流程和集成測試的模型。此測試方法用于工程機械控制器和數(shù)控系統(tǒng)開發(fā)的測試。測試的效率和可靠性滿足要求。文中的單鏈路數(shù)據(jù)傳遞的錯誤定位、模塊接口函數(shù)、關(guān)聯(lián)矩陣等方法也可以用于面向?qū)ο蟮暮兔嫦驅(qū)ο蟮能浖到y(tǒng)。

標(biāo)簽:

點贊

分享到:

上一篇:SOC與單片機應(yīng)用技術(shù)的發(fā)展

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(www.treenowplaneincome.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動網(wǎng)-工業(yè)自動化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報中心 | 粵公網(wǎng)安備 44030402000946號