|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請幫忙,怎麼才能發(fā)現(xiàn)軟件的BUG?? |
| 作者:gainst 欄目:單片機 |
大家好, 小弟剛剛參加工作,第一次寫一個比較大的程序。但是由於沒有太多的經(jīng)驗,因此也就會犯下比較多的錯誤。雖然在表面看來都能跑了,但是還是有些隱藏的BUG。 因此請教一下,有什麼好點的辦法嗎?? 謝謝! |
| 2樓: | >>參與討論 |
| 作者: hq_y 于 2006/12/19 18:48:00 發(fā)布:
測試: 嵌入式軟件的測試方法和工具 摘要: 通常嵌入式系統(tǒng)對可靠性的要求比較高。嵌入式系統(tǒng)安全性的失效可能會導(dǎo)致災(zāi)難性的后果,即使是非安全性系統(tǒng),由于大批量生產(chǎn)也會導(dǎo)致嚴重的經(jīng)濟損失。這就要求對嵌入式系統(tǒng),包括嵌入式軟件進行嚴格的測試、確認和驗證。 關(guān)鍵字:嵌入式;軟件測試;環(huán)境測試 引言 嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用于人類生活中,包括消費電子產(chǎn)品、交通系統(tǒng)、工業(yè)過程控制等等。嵌入式系統(tǒng)中軟件的規(guī)模和復(fù)雜性正在迅速增加,嵌入式軟件正在成為信息技術(shù):戶發(fā)展最快的領(lǐng)域。 通常嵌入式系統(tǒng)對可靠性的要求比較高。嵌入式系統(tǒng)安全性的失效可能會導(dǎo)致災(zāi)難性的后果,即使是非安全性系統(tǒng),由于大批量生產(chǎn)也會導(dǎo)致嚴重的經(jīng)濟損失。這就要求對嵌入式系統(tǒng),包括嵌入式軟件進行嚴格的測試、確認和驗證。隨著越來越多的領(lǐng)域使用軟件和微處理器控制各種嵌入式設(shè)備,對門益復(fù)雜的嵌入式軟件進行快速有效的測試愈加顯得重要。 軟件測試的目的是保證軟件滿足需求規(guī)格說明。系統(tǒng)失效是系統(tǒng)沒有滿足—個或多個正式需求規(guī)范中所要求的需求項。嵌入式軟件有其特殊的失效判定準則,但是,嵌入式軟件測試的日的與非嵌入式軟件是相同的。在嵌入式系統(tǒng)設(shè)計中,軟件正越來越多地取代硬件,以降低系統(tǒng)的成本,獲得更大的靈活性,這就需要使用更好的測試方法和工具進行嵌入式和實時軟件的測試。本文討論可應(yīng)用于嵌入式軟件的測試方法:介紹現(xiàn)有嵌入式軟件的測試工具。 一、嵌入式軟件的測試方法 一般來說,軟件測試有7個基本階段,即單元或模塊測試、集成測試、外部功能測試、回歸測試、系統(tǒng)測試、驗收測試、安裝測試。嵌入式軟件測試在4個階段上進行,即模塊測試、集成測試、系統(tǒng)測試、硬件/軟件集成測試。前3個階段適用于任何軟件的測試,硬件/軟件集成測試階段是嵌入式軟件所特有的,目的是驗證嵌入式軟件與其所控制的硬件設(shè)備能否正確地交互。 1、白盒測試與黑盒測試 一般來說,軟件測試有兩種基本的方式,即白盒測試方法與黑盒測試方法,嵌入式軟件測試也不例外。 白盒測試或基本代碼的測試檢查程序的內(nèi)部設(shè)計。根據(jù)源代碼的組織結(jié)構(gòu)查找軟件缺陷,一股要求測試人員對軟件的結(jié)構(gòu)和作用有詳細的了解,白盒測試與代碼覆蓋率密切相關(guān),可以在白盒測試的同時計算出測試的代碼的覆蓋率,保證測試的充分性。把100%的代碼都測試到幾乎是不可能的, 所以要選擇最重要的代碼進行白盒測試。由于嚴格的安全性和可靠性的要求,嵌入式軟件測試同非嵌入式軟件測試相比,通常要求有更高的代碼覆蓋率。對于嵌入式軟件,白盒測試一般不必在目標硬件上進行,更為實際的方式是在開發(fā)環(huán)境中通過硬件仿真進行,所以選取的測試工具應(yīng)該支持在宿主環(huán)境中的測試。 黑盒測試在某些情況下也稱為功能測試。這類測試方法根據(jù)軟件的用途和外部特征查找軟件缺陷,不需要了解程序的內(nèi)部結(jié)構(gòu)。黑盒測試最大的優(yōu)勢在于不依賴代碼,而是從實際使用的角度進行測試,通過黑盒測試可以發(fā)現(xiàn)白盒測試發(fā)現(xiàn)不了的問題。因為黑盒測試與需求緊密相關(guān),需求規(guī)格說明的質(zhì)量會直接影響測試的結(jié)果,黑盒測試只能限制在需求的范圍內(nèi)進行。在進行嵌入式軟件黑盒測試時,要把系統(tǒng)的預(yù)期用途作為重要依據(jù),根據(jù)需求中對負載、定時、性能的要求,判斷軟件是否滿足這些需求規(guī)范。為了保證正確地測試,還須要檢驗軟硬件之間的接口。嵌入式軟件黑盒測試的一個重要方面是極限測試。在使用環(huán)境中,通常要求嵌入式軟件的失效過程要平穩(wěn),所以,黑盒測試不儀要檢查軟件工作過程,也要檢查軟件換效過程。 2、目標環(huán)境測試和宿主環(huán)境測試 在嵌入式軟件測試中,常常要在基于目標的測試和基于宿主的測試之間作出折衷;谀繕说臏y試消耗較多的經(jīng)費和時間,而基于宿主的測試代價較小,但畢竟是在模擬環(huán)境中進行的。目前的趨勢是把更多的測試轉(zhuǎn)移到宿主環(huán)境中進行,但是,目標環(huán)境的復(fù)雜性和獨特性不可能完全模擬。 在兩個環(huán)境中可以出現(xiàn)不同的軟件缺陷,重要的是目標環(huán)境和宿主環(huán)境的測試內(nèi)容有所選擇。在宿主環(huán)境中,可以進行邏輯或界面的測試、以及與硬件無關(guān)的測試。在模擬或宿主環(huán)境中的測試消耗時間通常相對較少,用調(diào)試工具可以更快地完成調(diào)試和測試任務(wù)。而與定時問題有關(guān)的白盒測試、中斷測試、硬件接口測試只能在目標環(huán)境中進行。在軟件測試周期中,基于目標的測試是在較晚的“硬件/軟件集成測試”階段開始的,如果不更早地在模擬環(huán)境中進行白盒測試,而是等到“硬件/軟件集成測試”階段進行全部的白盒測試,將耗費更多的財力和人力。 二、嵌入式軟件的測試工具 用于輔助嵌入式軟件測試的工具很多,下面對幾類比較有用的有關(guān)嵌入式軟件的測試工具加以介紹和分析。 1、內(nèi)存分析工具 在嵌入式系統(tǒng)中,內(nèi)存約束通常是有限的。內(nèi)存分析工具用來處理在動態(tài)內(nèi)存分配中存在的缺陷。當動態(tài)內(nèi)存被錯誤地分配后,通常難以再現(xiàn),可能導(dǎo)致的失效難以追蹤,使用內(nèi)存分析工具可以避免這類缺陷進入功能測試階段。目前有兩類內(nèi)存分析工具——軟件和硬件的;谲浖膬(nèi)存分析工具可能會對代碼的性能造成很大影響,從而嚴重影響實時操作;基于硬件的內(nèi)存分析工具價格昂貴,而且只能在工具所限定的運行環(huán)境中使用。 2、性能分析工具 在嵌入式系統(tǒng)中,程序的性能通常是非常重要的。經(jīng)常會有這樣的要求,在特定時間內(nèi)處理一個中斷,或生成具有特定定時要求的一幀。開發(fā)人面臨的問題是決定應(yīng)該對哪一部分代碼進行優(yōu)化來改進性能,常常會花大量的時間去優(yōu)化那些對性能沒有任何影響的代碼。性能分析工具會提供有關(guān)的數(shù)據(jù),說明執(zhí)行時間是如何消耗的,是什么時候消耗的,以及每個例程所用的時間。根據(jù)這些數(shù)據(jù),確定哪些例程消耗部分執(zhí)行時間,從而可以決定如何優(yōu)化軟件,獲得更好的時間性能。對于大多數(shù)應(yīng)用來說,大部分執(zhí)行時間用在相對少量的代碼上,費時的代碼估計占所有軟件總量的5%-20%。性能分析工具不僅能指出哪些例程花費時間,而且與調(diào)試工具聯(lián)合使用可以引導(dǎo)開發(fā)人員查看需要優(yōu)化的特定函數(shù),性能分析工具還可以引導(dǎo)開發(fā)人員發(fā)現(xiàn)在系統(tǒng)調(diào)用中存在的錯誤以及程序結(jié)構(gòu)上的缺陷。 3、GUI測試工具 很多嵌入式應(yīng)用帶有某種形式的圖形用戶界面進行交互,有些系統(tǒng)性能測試足根掘用戶輸入響應(yīng)時間進行的。GUI測試工具可以作為腳本工具有開發(fā)環(huán)境中運行測試用例,其功能包括對操作的記錄和回放、抓取屏幕顯示供以后分析和比較、設(shè)置和管理測試過程。很多嵌入式設(shè)備沒有GUI,但常?梢詫η度胧皆O(shè)備進行插裝來運行GUI測試腳本,雖然這種方式可能要求對被測代碼進行更改,但是節(jié)省了功能測試和回歸測試的時間。 4、覆蓋分析工具 在進行白盒測試時,可以使用代碼覆蓋分析工具追蹤哪些代碼被執(zhí)行過。分析過程可以通過插裝來完成,插裝可以是在測試環(huán)境中嵌入硬件,也可以是在可執(zhí)行代碼中加入軟件,也可以是二者相結(jié)合。測試人員對結(jié)果數(shù)據(jù)加以總結(jié),確定哪些代碼被執(zhí)行過,哪些代碼被巡漏了。覆蓋分析工具一般會提供有關(guān)功能覆蓋、分支覆蓋、條件覆蓋的信息。對于嵌入式軟件來說,代碼覆蓋分析工具可能侵入代碼的執(zhí)行,影響實時代碼的運行過程;谟布拇a覆蓋分析工具的侵入程度要小一些,但是價格一般比較昂貴,而且限制被測代碼的數(shù)量。 結(jié)論 嵌入式系統(tǒng)在人類生活中發(fā)揮著重要的作用,包括飛行控制器這樣的控制系統(tǒng),以及洗衣機這樣的家用電器。日前,嵌入式系統(tǒng)中軟件的比重越來越大,也越來越復(fù)雜,保證嵌入式軟件的可靠性正面臨嚴峻的挑戰(zhàn)。 大多數(shù)軟件測試方法都可以直接或間接地用于嵌入式軟件的測試,但是由于操作系統(tǒng)的實時和嵌入式特性,嵌入式軟件測試也面臨一些特殊的問題。雖然日前已經(jīng)有一些針對嵌入式軟件的測試和調(diào)試工具,但是在有些方面仍存在不足,包括許多任務(wù)操作系統(tǒng)的并發(fā)、非侵入式的測試和凋試、嵌入式系統(tǒng)的軟件抽象等。對于嵌入式軟件測試技術(shù)的研究人選測試工具有待開發(fā),仍須要做很多進一步的工作。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |