資料介紹
部分軟件開發項目依靠結合代碼檢查、結構測試和功能測試來識別軟件缺陷。盡管這些傳統技術非常重要,而且能發現大多數軟件問題,但它們無法檢查出當今復雜系統中的許多共性錯誤。本文將介紹如何避免那些隱蔽然而常見的錯誤,并介紹的幾個技巧幫助工程師發現軟件中隱藏的錯誤。
結構測試或白盒測試能有效地發現代碼中的邏輯、控制流、計算和數據錯誤。這項測試要求對軟件的內部工作能夠一覽無遺(因此稱為“白盒”或“玻璃盒”),以便了解軟件結構的詳細情況。它檢查每個條件表達式、數學操作、輸入和輸出。由于需要測試的細節眾多,結構測試每次檢查一個軟件單元,通常為一個函數或類。
代碼審查也使用與實現缺陷和潛在問題查找同樣復雜的技術。與白盒測試一樣,審查通常針對軟件的各個單元進行,因為一個有效的審查過程要求的是集中而詳盡的檢查。
與審查和白盒測試不同,功能測試或黑盒測試假設對軟件的實現一無所知,它測試由受控輸入所驅動的輸出。功能測試由測試人員或開發人員所編寫的測試過程組成,它們規定了一組特定程序輸入對應的預期程序輸出。測試運行之后,測試人員將實際輸出與預期輸出進行比較,查找問題。黑盒測試可以有效地找出未能實現的需求、接口問題、性能問題和程序最常用功能中的錯誤。
雖然將這些技術結合起來可以找出隱藏在一個特定軟件程序中的大部分錯誤,但它們也有局限。代碼審查和白盒測試每次只針對一小部分代碼,忽視了系統的其它部分。黑盒測試通常將系統作為一個整體來處理,忽視了實現的細節。一些重要的問題只有在集中考察它們在整個系統內相互作用時的細節才能被發現;傳統的方法無法可靠地找出這些問題。必須整體地檢查軟件系統,查找具體問題的特定原因。由于詳盡徹底地分析程序中的每個細節和它與代碼中所有其它部分之間的相互作用通常是不大可能的,因此分析應該針對程序中已經知道可能導致問題的特定方面。本文將探討其中三個潛在的問題領域:
* 堆棧溢出
* 競爭條件
* 死鎖
讀者可在網上閱讀本文的第二部分,它將探討下列問題:
* 時序問題
* 可重入條件
在采用多任務實時設計技術的系統中,以上所有問題都相當普遍。
一、堆棧溢出
處理器使用堆棧來存儲臨時變量、向被調函數傳遞參數、保存線程“狀態”,等等。如果系統不使用虛擬內存(換句話說,它不能將內存頁面轉移到磁盤上以釋放內存空間供其它用途),堆棧將固定為產品出廠時的大小。如果由于某種原因堆棧越出了編程人員所分配的數量范圍,程序將變得不確定。這種不穩定可能導致系統發生嚴重故障。因此,確保系統在最壞情況下能夠分配到足夠的堆棧至關重要。
結構測試或白盒測試能有效地發現代碼中的邏輯、控制流、計算和數據錯誤。這項測試要求對軟件的內部工作能夠一覽無遺(因此稱為“白盒”或“玻璃盒”),以便了解軟件結構的詳細情況。它檢查每個條件表達式、數學操作、輸入和輸出。由于需要測試的細節眾多,結構測試每次檢查一個軟件單元,通常為一個函數或類。
代碼審查也使用與實現缺陷和潛在問題查找同樣復雜的技術。與白盒測試一樣,審查通常針對軟件的各個單元進行,因為一個有效的審查過程要求的是集中而詳盡的檢查。
與審查和白盒測試不同,功能測試或黑盒測試假設對軟件的實現一無所知,它測試由受控輸入所驅動的輸出。功能測試由測試人員或開發人員所編寫的測試過程組成,它們規定了一組特定程序輸入對應的預期程序輸出。測試運行之后,測試人員將實際輸出與預期輸出進行比較,查找問題。黑盒測試可以有效地找出未能實現的需求、接口問題、性能問題和程序最常用功能中的錯誤。
雖然將這些技術結合起來可以找出隱藏在一個特定軟件程序中的大部分錯誤,但它們也有局限。代碼審查和白盒測試每次只針對一小部分代碼,忽視了系統的其它部分。黑盒測試通常將系統作為一個整體來處理,忽視了實現的細節。一些重要的問題只有在集中考察它們在整個系統內相互作用時的細節才能被發現;傳統的方法無法可靠地找出這些問題。必須整體地檢查軟件系統,查找具體問題的特定原因。由于詳盡徹底地分析程序中的每個細節和它與代碼中所有其它部分之間的相互作用通常是不大可能的,因此分析應該針對程序中已經知道可能導致問題的特定方面。本文將探討其中三個潛在的問題領域:
* 堆棧溢出
* 競爭條件
* 死鎖
讀者可在網上閱讀本文的第二部分,它將探討下列問題:
* 時序問題
* 可重入條件
在采用多任務實時設計技術的系統中,以上所有問題都相當普遍。
一、堆棧溢出
處理器使用堆棧來存儲臨時變量、向被調函數傳遞參數、保存線程“狀態”,等等。如果系統不使用虛擬內存(換句話說,它不能將內存頁面轉移到磁盤上以釋放內存空間供其它用途),堆棧將固定為產品出廠時的大小。如果由于某種原因堆棧越出了編程人員所分配的數量范圍,程序將變得不確定。這種不穩定可能導致系統發生嚴重故障。因此,確保系統在最壞情況下能夠分配到足夠的堆棧至關重要。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于嵌入式WEB的電站數據動態監控軟件設計
- 嵌入式系統軟件設計教材資料 5次下載
- 嵌入式系統軟件并發缺陷的建模方法 2次下載
- 基于RTOS的嵌入式系統軟件設計 17次下載
- 嵌入式軟件在計算機軟件設計中應用 14次下載
- ARM的嵌入式系統軟件設計 8次下載
- DSP控制直流電動機的嵌入式軟件設計 9次下載
- 嵌入式軟件設計確保可靠性的技巧 0次下載
- 基于ARM的嵌入式系統軟件設計部分 15次下載
- 嵌入式軟件設計入門與進階---基于Kinetis K60K64 0次下載
- 基于ARM的嵌入式軟件設計
- ARM嵌入式系統開發-軟件設計與優化
- 基于嵌入式的腦卒中康復儀的軟件設計
- 基于嵌入式Linux 的BACnet 控制器軟件設計
- 基于ARM的嵌入式系統軟件設計
- 嵌入式軟件開發和軟件開發的區別 1738次閱讀
- 聊聊嵌入式軟件分層 525次閱讀
- 嵌入式軟件的設計模式(上) 1119次閱讀
- 淺談嵌入式與純軟開發的區別 1894次閱讀
- EsDA為用戶帶來簡單易用的軟件設計體驗 1882次閱讀
- 嵌入式開發軟件中回調函數的使用 2120次閱讀
- 嵌入式系統的軟件架構設計 4063次閱讀
- 基于嵌入式軟件的JNI技術應用解析 1020次閱讀
- 嵌入式系統中的OTA更新的若干不同軟件設計探討 1841次閱讀
- 嵌入式軟件開發編程規范介紹 4206次閱讀
- 嵌入式軟件開發的這些編程規范你了解嗎 3809次閱讀
- 嵌入式軟件可靠性設計需注意以下四個方面的問題! 2440次閱讀
- 基于嵌入式Linux的語音識別系統硬軟件設計詳細講解教程 6091次閱讀
- 嵌入式系統新手進階指南,這幾點請切記! 1273次閱讀
- 基于嵌入式Linux系統的導航軟件設計思路 4964次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多