關鍵字:“白盒”靜動測試兩齊全
在通常情況下,嵌入式軟件測試一般采取黑盒測試與白盒測試相結合的方法。其中,白盒測試一般分為靜態測試與動態測試。靜態測試不實際運行軟件,主要是對軟件的編程格式、結構等方面進行評估,而動態測試需要在Host環境或Target環境中實際運行軟件,并使用設計的測試用例去探測軟件漏洞。 靜態測試
靜態測試包括代碼檢查、靜態結構分析、代碼質量度量等。它可以由人工進行,充分發揮人的邏輯思維優勢,也可以借助軟件工具自動進行。
代碼檢查 代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和設計的一致性,代碼對標準的遵循、可讀性,代碼的邏輯表達的正確性,代碼結構的合理性等方面;可以發現違背程序編寫標準的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風格的問題,包括變量檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結構檢查等內容。
在實際使用中,代碼檢查比動態測試更有效率,能快速找到缺陷,發現30%~70%的邏輯設計和編碼缺陷;代碼檢查看到的是問題本身而非征兆。但是代碼檢查非常耗費時間,而且代碼檢查需要知識和經驗的積累。代碼檢查應在編譯和動態測試之前進行,在檢查前,應準備好需求描述文檔、程序設計文檔、程序的源代碼清單、代碼編碼標準和代碼缺陷檢查表等。
靜態結構分析 靜態結構分析主要是以圖形的方式表現程序的內部結構,例如函數調用關系圖、函數內部控制流圖。其中,函數調用關系圖以直觀的圖形方式描述一個應用程序中各個函數的調用和被調用關系;控制流圖顯示一個函數的邏輯結構,它由許多節點組成,一個節點代表一條語句或數條語句,連接結點的叫邊,邊表示節點間的控制流向。
代碼質量度量 ISO/IEC 9126國際標準所定義的軟件質量包括六個方面:功能性、可靠性、易用性、效率、可維護性和可移植性。軟件的質量是軟件屬性的各種標準度量的組合。
針對軟件的可維護性,目前業界主要存在三種度量參數:Line復雜度、Halstead復雜度和McCabe復雜度。其中Line復雜度以代碼的行數作為計算的基準。Halstead以程序中使用到的運算符與運算元數量作為計數目標(直接測量指標),然后可以據以計算出程序容量、工作量等。McCabe復雜度一般稱為圈復雜度(Cyclomatic complexity),它將軟件的流程圖轉化為有向圖,然后以圖論來衡量軟件的質量。McCabe復雜度包括圈復雜度、基本復雜度、模塊設計復雜度、設計復雜度和集成復雜度。
動態測試
動態測試包括功能確認與接口測試、覆蓋率分析、性能分析、內存分析等。
功能確認與接口測試 這部分的測試包括各個單元功能的正確執行、單元間的接口,包括:單元接口、局部數據結構、重要的執行路徑、錯誤處理的路徑和影響上述幾點的邊界條件等內容。
覆蓋率分析 覆蓋率分析主要對代碼的執行路徑覆蓋范圍進行評估,語句覆蓋、判定覆蓋、條件覆蓋、條件/判定覆蓋、修正條件/判定覆蓋、基本路徑覆蓋都是從不同要求出發,為設計測試用例提出依據的。
性能分析 代碼運行緩慢是開發過程中一個重要問題。一個應用程序運行速度較慢,程序員不容易找到是在哪里出現了問題?如果不能解決應用程序的性能問題,將降低并極大地影響應用程序的質量,于是查找和修改性能瓶頸成為調整整個代碼性能的關鍵。目前性能分析工具大致分為純軟件的測試工具、純硬件的測試工具(如邏輯分析儀和仿真器等)和軟硬件結合的測試工具三類。
內存分析 內存泄漏會導致系統運行的崩潰,尤其對于嵌入式系統這種資源比較匱乏、應用非常廣泛,而且往往又處于重要部位的,將可能導致無法預料的重大損失。通過測量內存使用情況,我們可以了解程序內存分配的真實情況,發現對內存的不正常使用,在問題出現前發現征兆,在系統崩潰前發現內存泄露錯誤;發現內存分配錯誤,并精確顯示發生錯誤時的上下文情況,指出發生錯誤的原由。
連接方式
在嵌入式軟件測試中,測試系統Host與被測試系統Target的連接有兩種方式:直接連接和通過仿真器連接。直接連接是Host與Target通過串口、并口或網口直接連接。
白盒測試
部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能。白盒測試的主要方法有邏輯驅動、基路測試等,主要用于軟件驗證。
“白盒”法全面了解程序內部邏輯結構、對所有邏輯路徑進行測試!鞍缀小狈ㄊ歉F舉路徑測試。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。貫穿程序的獨立路徑數是天文數字,但即使每條路徑都測試了仍然可能有錯誤。第一,窮舉路徑測試決不能查出程序違反了設計規范,即程序本身是個錯誤的程序;第二,窮舉路徑測試不可能查出程序中因遺漏路徑而出錯;第三,窮舉路徑測試可能發現不了一些與數據相關的錯誤。
注意:
由于白盒測試則只根據程序的內部結構進行測試,而不考慮外部特性,如果程序結構本身有問題,比如說程序邏輯有錯誤或是有遺漏,那是無法發現的。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/