鄧 佳
(中國解放軍31401部隊,煙臺 264001)
隨著現(xiàn)代社會信息科技智能化水平的飛速發(fā)展,軟件相關產(chǎn)品已廣泛應用于各行各業(yè),與人們工作生活深度融合??梢哉f,軟件產(chǎn)品質(zhì)量的高低對推動社會信息化進程發(fā)展起著決定性作用。軟件開發(fā)項目由于其高度的復雜性和集成性,在軟件開發(fā)過程中極易產(chǎn)生錯誤和缺陷,因此貫穿整個軟件開發(fā)周期的軟件項目測試,是保障軟件開發(fā)質(zhì)量的重要技術手段,對提升軟件性能有顯著的促進作用。隨著互聯(lián)網(wǎng)+時代的來臨,進行高效專業(yè)軟件測試的要求和挑戰(zhàn)日益迫切。
IEEE將軟件測試定義為“使用人工和自動手段來運行或測試某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預期結(jié)果與實際結(jié)果之間的差別”。[1]
軟件測試工作并非等到軟件開發(fā)完畢才開始,而是和項目開發(fā)同時展開,伴隨著軟件項目研發(fā)生命周期的每個重要階段。第一,需求分析階段,測試人員需要參與需求調(diào)研,深入理解系統(tǒng)需求,這一步驟有助于測試計劃的科學制定及對需求規(guī)格說明書的審核審查,是開發(fā)過程的基礎。第二,分析設計階段,測試人員要詳細理解系統(tǒng)工作流的實現(xiàn)過程,針對系統(tǒng)測試需求制定出完備的測試計劃,內(nèi)容要具體到測試方法的確定、測試對象的范圍、測試時間及測試覆蓋率等,還需對開發(fā)文檔進行審查,檢查計劃與設計的合理性。第三,開發(fā)階段,測試人員將系統(tǒng)合理分解成相對獨立的子系統(tǒng)以降低測試復雜性,并在此階段完成測試用例設計。軟件測試中最為關鍵的步驟就是測試用例的設計,軟件測試成效如何在很大程度上是由測試用例決定的。第四,軟件測試階段,是測試的實際執(zhí)行階段,測試人員需要嚴格按照制定好的測試計劃和已經(jīng)準備好的測試用例,對整個軟件項目和硬件環(huán)境進行完全的測試。第五,測試完成階段,測試人員結(jié)合整個測試過程,生成最終的測試報告,主要包含測試的思路、方法,在測試過程中發(fā)現(xiàn)的問題,如何改進,發(fā)布軟件系統(tǒng)與需求的一致性檢驗結(jié)果等,以確定該軟件項目是否符合部署條件。
軟件測試根據(jù)不同的分類標準有不同的分類方法。
靜態(tài)測試方法是指對靜態(tài)的軟件代碼進行分析和檢測,在實際的測試過程中,并不需要軟件運行起來,而是單純的只對軟件的各種文檔進行分析檢測。故而,靜態(tài)測試方法通常只應用于軟件開發(fā)的過程中,其主要測試手段是人工測試和計算機輔助測試。
動態(tài)測試方法是指對運行過程中的軟件進行檢測,其測試原理是通過檢測軟件運行過程中的某些動態(tài)行為,來判斷軟件的測試結(jié)果是否符合標準。動態(tài)測試的特點就是必須確保軟件的完整運行。另外,需要注意的一點是在實際操作過程中,除了被測試軟件,軟件測試中所涉及到的各種數(shù)據(jù)也會影響動態(tài)測試結(jié)果。[2]
白盒測試也稱為邏輯驅(qū)動測試或結(jié)構(gòu)測試,其工作原理是對軟件系統(tǒng)的內(nèi)部結(jié)構(gòu)進行測試,對軟件系統(tǒng)的運行狀態(tài)進行評估,根據(jù)系統(tǒng)不同區(qū)域反饋的測試信息得出最終檢測結(jié)果。白盒測試主要包括:基本路徑測試法、邏輯覆蓋法、靜態(tài)結(jié)構(gòu)分析法和代碼檢查法等。白盒測試技術需要測試人員對被測試軟件的系統(tǒng)內(nèi)部構(gòu)造有足夠的了解,能夠在實際的檢測過程中正確分析軟件的檢測數(shù)據(jù)。與其他測試技術相比,白盒測試技術最大的優(yōu)勢就是測試速度快且可以促進軟件的運行效率。
黑盒測試的工作原理是通過對被檢測軟件的功能進行測試,來判斷該軟件系統(tǒng)是否能夠正常運行。在它的實際操作及應用過程中,測試人員無需考慮軟件的內(nèi)部架構(gòu),只需對其輸入輸出數(shù)據(jù)進行分析。黑盒測試被廣泛應用于軟件系統(tǒng)的界面設計和功能測試方面,主要包括等價類劃分、錯誤推測、邊界值分析、因果圖等方法。黑盒測試的技術優(yōu)勢是:操作和設計代碼簡單且有利于實現(xiàn)軟件的功能。[3]
當今社會已步入數(shù)據(jù)信息時代,大數(shù)據(jù)、物聯(lián)網(wǎng)、云計算、人工智能等新型IT技術的快速發(fā)展和廣泛應用對軟件行業(yè)產(chǎn)生了巨大影響,也為軟件測試帶來了新的挑戰(zhàn)和機遇。
新技術背景下,軟件測試的發(fā)展會具備以下幾個特點:一是對軟件測試周期要求更高。傳統(tǒng)的軟件測試通常會遵循軟件測試流程,但互聯(lián)網(wǎng)+技術下的軟件對即時性要求很高,應對市場需求要有更快的更新速度,因此軟件測試周期需更加快捷。二是對數(shù)據(jù)準確性和可靠性需要求更高。面對概念模糊、格式不一的海量數(shù)據(jù),軟件測試效率會在一定程度上降低,因此,提升數(shù)據(jù)準確性和可靠性將有助于減少軟件測試頻次,提高測試性能。三是軟件測試將趨于標準化。在軟件測試進程中實現(xiàn)檢測標準化后,軟件開發(fā)人員更容易滲透軟件開發(fā)和設計的思想,去規(guī)范和完善軟件測試。四是智能測試工具將得到開發(fā)和推廣。在新技術環(huán)境下手工方式的軟件測試將逐漸被智能測試軟件所取代,也就需要我們開發(fā)出合適的軟件測試工具以應對軟件測試范圍不斷擴大的新需求,提升預期和實際數(shù)據(jù)的一致性。
軟件測試技術已經(jīng)成為保證軟件產(chǎn)品質(zhì)量的重要組成部分,甚至已發(fā)展為推進軟件開發(fā)和實踐應用的重要驅(qū)動因素。為滿足新時代更多的的軟件測試需求,我們需要不斷總結(jié)成熟的方法,研究新的熱點,提出不同的思路,以促進軟件測試系統(tǒng)工程的研究和軟件產(chǎn)業(yè)的快速發(fā)展。