摘 要:軟件測試是軟件工程中的重要環節,是保證軟件產品質量的重要過程和手段。該文闡述了軟件測試技術原理,探討了軟件測試技術在動車組上的應用,定義動車組軟件測試過程V模型,從軟件測試工程化角度論述了動車組軟件測試在軟件全生命周期各階段的任務。論證軟件測試是動車組軟件產品質量的重要保障。
關鍵詞:測試技術 動車組 軟件生命周期
中圖分類號:U270.16 文獻標識碼:A 文章編號:1672-3791(2016)08(a)-0025-02
隨著動車組的廣泛應用,動車組各系統軟件內部邏輯錯綜復雜,運行環境動態變化,不同的軟件失效機理具有不同的表現形式。據統計分析,軟件錯誤的分布大致為:軟件需求分析階段占56%,軟件設計階段占27%,編碼階段占7%,其他占10%。軟件錯誤在軟件開發階段的早期錯誤較多,軟件錯誤貫穿了整個軟件生命周期。軟件測試是軟件工程中的一個重要階段,在軟件投入運行前,對軟件需求分析、架構設計和編碼各階段產品的最終驗證,是為了保證軟件開發產品的正確性、可靠性和一致性,因此軟件測試技術日益受到重視[1]。
1 動車組軟件測試概述
動車組軟件由牽引系統、制動系統、網絡控制系統、輔助系統、門控系統、空調系統、通信系統、信號系統組成,其中網絡控制系統由中央控制單元軟件,人機接口單元軟件,網關等軟件組成。由于動車組軟件的應用場合和領域多種多樣,要求的程度也不盡相同、不能一概而論,故該文僅針對軟件測試過程,結合動車組軟件測試過程的要求和特點探討軟件測試技術。
2 動車組軟件測試技術原理
2.1 軟件測試技術分類
軟件測試可通過下面幾種不同的方法劃分類別。
(1)從被測試軟件方面講,講軟件測試被分為靜態測試與動態測試。
(2)從軟件結構與算法方面講,講軟件測試被分為白盒測試與黑盒測試。
(3)從軟件測試不同階段方面講,講軟件測試被分為單元測試、集成測試、系統測試、驗收測試和回歸測試。
2.2 白盒測試
白盒測試又稱邏輯驅動測試,其原理是把程序看成裝在一個透明的盒子里,程序的結構和處理過程完全可見,依據程序的內部邏輯測試軟件程序,通過分析程序內部的邏輯與程序執行路線來設計測試用例的測試方法,檢查軟件程序中的每條通路是否都能按預定動作正確工作。
白盒測試方法包括代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法等。
2.3 黑盒測試
黑盒測試又稱數據驅動測試,其原理是把軟件程序看成一個黑盒子,不考慮程序的內在結構和處理方法,主要針對軟件界面、軟件功能、外部數據庫訪問以及軟件初始化等方面進行的測試。
黑盒測試方法包括等價類劃分、邊界值分析、因果圖、錯誤推測等。
2.4 內存泄漏測試
內存泄漏是一種典型的程序缺陷,它可導致應用程序不斷消耗系統內存,使軟件程序運行響應變慢,一些功能無法實現,甚至導致整個系統癱瘓等問題。在使用C/C++語言編寫的程序中,內存泄漏是一個極其普遍的問題,在動車組嵌入式系統應用軟件中,內存泄漏將很快導致系統癱瘓。通過內存泄漏測試釋放不需要再使用的內存空間,檢查“內存越界”現象是否存在。
3 軟件測試技術在動車組上的應用
軟件測試是軟件質量保證的重要手段,貫穿整個軟件生命周期的每個階段。動車組網絡控制系統應用軟件測試過程采用V模型,依據不同的測試階段分為單元測試、集成測試、系統測試、驗收測試和回歸測試。下面將以動車組網絡控制系統為例闡述軟件測試技術在動車組上的應用。
3.1 單元測試
單元測試又稱模塊測試,是針對軟件設計的最小單位程序模塊進行的正確性檢驗,其目的是驗證每個程序單元能否正確實現詳細設計規范的模塊功能、性能、接口和設計約束等要求,發現各模塊內部可能存在的各種錯誤。單元測試從程序內部結構出發來設計測試用例,而且可以多個模塊或單元并行進行獨立的測試。單元測試采用白盒測試方法。
動車組單元測試主要內容有如下幾項。
(1)程序語法檢查。
(2)程序邏輯檢查。
(3)模塊接口測試。
(4)路徑測試。
(5)邏輯覆蓋法。
3.2 集成測試
集成測試是按設計要求把通過單元測試的各個模塊或單元組裝在一起之后,進行集成測試。驗證組成軟件系統的各模塊的接口和交互作用。
3.3 系統測試
系統測試是測試被開發軟件的功能要求和非功能要求,在真實環境下對系統的正確性和完整性進行測試,驗證系統各部分是否都能正常工作并完成任務。系統測試采用黑盒測試技術。動車組軟件系統測試采用如下測試方法。
(1)等價類劃分。
(2)邊界值分析。
(3)因果圖。
(4)錯誤推測。
3.4 驗收測試
驗收測試是驗證系統是否滿足合同規定的要求,通過驗收測試,可以進一步發現軟件中的錯誤,測試被開發軟件的易用性、兼容性、安全性和文檔資料審查驗收。驗收測試主要采用黑盒測試方法。
3.5 回歸測試
回歸測試是指軟件系統被修改后再次進行的測試,如軟件新增了某些功能后,可能會影響軟件原來的功能和結構,使得以往可以正常工作的功能失效,因此為了保證對軟件所做的修改沒有引入新的錯誤而再次進行的測試。
3.6 軟件測試覆蓋率
軟件測試覆蓋率是用來度量軟件測試的完整性程度,包括基于需求的測試覆蓋和基于代碼的測試覆蓋。
3.6.1 基于需求的測試覆蓋
需求測試覆蓋率=Ts/RfT%
其中,Ts為已實施測試用例覆蓋的需求數;RfT為測試需求總數。
3.6.2 基于代碼的測試覆蓋
代碼測試覆蓋率=Te/Tlic%
其中,Te為用代碼、分支、路徑、數據狀態判定點表示的已執行代碼數;Tlic為代碼總數。
4 結語
該文論述了軟件測試技術原理,以動車組網絡控制系統應用軟件為測試樣例,全面闡述了軟件全生命周期各階段軟件測試活動,動車組軟件測試不同階段采用多種測試技術,論證了軟件測試技術是動車組軟件產品質量的重要保障,可提高動車組軟件的安全性、可靠性,對開展動車組軟件測試工作進行了有益的探索。
參考文獻
[1]熊應高.軟件測試技術[M].北京:北京航空航天大學出版社, 2009.
[2]陳明.軟件測試[M].北京:機械工業出版社,2004.
[3]徐擁軍,王炯,郝進.軟件測試技術、方法和環境[M].北京:北京航空航天大學出版社,2012.
[4]BRUCE ECKEL.Thinking in C++[M].Prentice Hall PTR,2000.