曹斌
摘 要 軟件測試是軟件質量保障的基礎,而單元測試是軟件測試的重要階段,單元測試用例的設計是軟件測試的重要環節。文章重點結合xx型號嵌入式星載軟件的一個模塊,詳細介紹并論述單元測試的方法。
關鍵詞 軟件質量;單元測試;測試用例設計;安全性措施
中圖分類號:TP311 文獻標識碼:A 文章編號:1671-7597(2014)02-0026-03
YingHuo-1 Mars Probe Embedded software unit testing methods
CAO BIN
Abstract:Software testing is the key to software quality assurance. Unit testing is an important stage of software testing. The design of the unit test cases is an important part of software testing. This article focuses on combination of YingHuo-1 integrated electronic system software introduces and discusses the test case design methods, and provide an idea for the design of test cases.
Key words: Softeware quality; Unit testing; Design of test cases; Security measures
隨著計算機技術的不斷發展,軟件質量成為產品質量的一個不可或缺的組成部分。尤其對于航天型號來說,軟件的可靠性安全性設計更加重要。為保障軟件質量,軟件測試則是關鍵的技術環節。軟件測試是軟件測試人員或者軟件測試工具來測試或者運行特定的系統過程,它的目的是驗證它本身是否滿足需求規定的要求、預期設計結果與世界結果的差異。
在軟件開發過程中,單元測試是最低級別的測試活動。單元測試是將獨立的單元模塊與其他部分分離的情況下來測試的。單元測試作為編碼的一種輔助手段,無論在程序修改、移植在新的環境中,它都應該具備可重復性。因此,所有版本的單元測試都應該是在軟件的開發生命周期中進行的。
根據航天飛行器軟件的設計開發特點,其需要較高的軟件可靠性、健壯度、以及無錯的設計要求。本文針對這類軟件的單元測試進行測試流程以及用例設計方面的描述。
1 嵌入式航天飛行軟件單元測試流程
圖1 軟件單元測試測試內容
Fig.1 Test content of software unit test
單元測試是測試人員設計的一個代碼模塊,用來驗證被測試代碼的一個明確的功能的正確性。一般來說,一個單元測試的用例設計是用來判斷一個特定條件背景下的某個特定函數的邏輯。
單元測試針對每個程序的模塊,主要測試5個方面的問題:模塊接口、局部數據結構、邊界條件、獨立的路徑和錯誤處理,如圖1所示。
1.1 文檔審查
檢查文檔的流程如圖2所示,文檔檢查主要包括文檔內容的完整性、一致性。同時度量文檔編寫的質量。
圖2 文檔審查工作流程
Fig.2 Document review workflow
圖3 代碼審查
Fig.3 Code review workflow
1.2 代碼審查
代碼審查如圖3。代碼審查是審查代碼的設計與文檔描述之劍的一致性,還有代碼邏輯正確性、程序的結構和代碼的可閱讀性。
1.3 動態測試過
動態測試即測試模塊能否正確地運行需求中所描述的內容,還有在極限條件、邊界條件、溢出條件下的健壯度。在動態測試過程中,應該對被測試模塊給出執行路徑、語句覆蓋率、分支覆蓋率等一些量化的數據。
在進行對xx型號應用軟件的單元測試中,主要的測試流程如圖4所示。
2 測試用例設計實例
2.1 需求分析測試
根據動態測試中的要求,本節用實例演示,對一個被測模塊的覆蓋率統計。
實例是XX型號軟件中某判斷電池是否正常的函數。
function IsBatteryTempNormal return Boolean is
TempVolt1:Float;
TempVolt2:Float;
result:Boolean:=False;
begin
TempVolt1:=GetEffectValue(16);
TempVolt2:=GetEffectValue(17);
if (a > TEMP1 and a < TEMP2) or
(b > TEMP3 and b < TEMP4) then
result:=True;
end if;
return result;
end IsBatteryTempNormal;
上述程序模塊,a/b變量在不同值的情況下,模塊返回不同的計算結果。軟件流程圖如圖5所示。
圖5 軟件邏輯流程圖
Fig.5 Software logic flow chart
根據需求分析,該程序單元包含兩個判定,即a∈(TEMP1,TEMP2)和b∈(TEMP3,TEMP4)。endprint
2.2 測試用例設計
在本函數中,共有兩種判斷條件,單一判斷和組合判斷,根據流程圖的分支結構,設計可以用來覆蓋所有分支的測試用例,滿足分支覆蓋率的測試指標。
滿足全語句覆蓋需要3個用例,見表1。
滿足全分支覆蓋需要9個用例,見表2。
邊界測試用例設計需要4個用例,見表3。
3 利用工具進行單元測試
Adatest95是一款支持M1750 Ada程序的單元和集成測試工具,由英國的IPL公司開發。
AdaTest95支持采用Ada83、Ada95編寫的程序的單元測試,包括樁函數的定義、單元模塊的輸入設定、單元模塊涉及全局變量的設定以及返回值檢測、全局變量檢測、語句覆蓋率分析、分支覆蓋率分析等單元測試功能。
在AdaTest95測試工具的幫助下,無需考慮驅動模塊,驅動模塊由該測試軟件缺省完成。樁模塊是額外的開銷,雖然在單元測試中必須編寫,但并不是作為最終的結果。
被測模塊、驅動模塊和樁模塊共同構成了一個如圖6所示的單元測試的測試環境。
軟件使用歸納起來一共分成九步,具體流程如圖7所示。
4 測試結論
按照測試計劃中各個用例的要求,一共進行了16個用例的測試。測試用例輸出都滿足期望輸出要求,測試結果正確;各被測模塊的語句覆蓋率、分支覆蓋率、錯誤路徑覆蓋率均達到100%。
5 結束語
通過對軟件進行單元測試,確保了軟件在編碼上的邏輯正確性、驗證了軟件功能與文檔設計的一致性。降低了軟件開發風險以及開發成本,更是對航天飛行器軟件的高可靠性、安全性提供了保障。
參考文獻
[1]易海勝.單元測試用例設計方法初探[J].武漢科技學院學報.
[2]張巍,尹海波,孫立財.軟件的單元測試方法[J].光電技術應用.
[3]中國航天科技集團公司軟件專家組.航天軟件工程實施技術指南及范例(修訂版)[M].
[4]姜靜波,蔡建平,郭勇.Ada程序設計語言高級教程[M].
[5]Myers,G,J.,張曉明,黃琳.軟件測試的藝術[M].
[6]馬瑟,王峰,郭長國,陳振華.軟件測試基礎教程[M].
[7]徐宏革.白盒測試之道[M].endprint