複製鏈接
請複製以下鏈接發送給好友

軟件測試

(使用人工或自動的手段來運行或測定某個軟件系統的過程)

鎖定
軟件測試(英語:Software Testing),是使用人工操作(手動測試)或者軟件自動運行的方式(自動化測試)來檢驗軟件是否滿足用户需求的過程。
中文名
軟件測試
外文名
software testing
目    的
鑑定、審核軟件
方    式
人工操作或者軟件自動運行
工作內容
驗證和確認
領    域
IT行業、有信息化管理的各行業

軟件測試產生過程

軟件測試是伴隨着軟件的產生而產生的。早期的軟件開發過程中軟件規模都很小、複雜程度低,軟件開發的過程混亂無序、相當隨意,測試的含義比較狹窄,開發人員將測試等同於“調試”,目的是糾正軟件中已經知道的故障,常常由開發人員自己完成這部分的工作。對測試的投入極少,測試介入也晚,常常是等到形成代碼,產品已經基本完成時才進行測試。到了上世紀80年代初期,軟件和IT行業進入了大發展,軟件趨向大型化、高複雜度,軟件的質量越來越重要。這個時候,一些軟件測試的基礎理論和實用技術開始形成,並且人們開始為軟件開發設計了各種流程和管理方法,軟件開發的方式也逐漸由混亂無序的開發過程過渡到結構化的開發過程,以結構化分析與設計、結構化評審、結構化程序設計以及結構化測試為特徵。人們還將“質量”的概念融入其中,軟件測試定義發生了改變,測試不單純是一個發現錯誤的過程,而且將測試作為軟件質量保證(SQA)的主要職能,包含軟件質量評價的內容,Bill Hetzel在《軟件測試完全指南》(Complete Guide of Software Testing)一書中指出:“測試是以評價一個程序或者系統屬性為目標的任何一種活動。測試是對軟件質量的度量。”這個定義至今仍被引用。軟件開發人員和測試人員開始坐在一起探討軟件工程和測試問題。

軟件測試行業標準

軟件測試已有了行業標準(IEEE/ANSI ),1983年IEEE提出的軟件工程術語中給軟件測試下的定義是:“使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別”。這個定義明確指出:軟件測試的目的是為了檢驗軟件系統是否滿足需求。它再也不是一個一次性的,而且只是開發後期的活動,而是與整個開發流程融合成一體。軟件測試已成為一個專業,需要運用專門的方法和手段,需要專門人才和專家來承擔。

軟件測試測試原則

對計算機軟件進行測試前,首先需遵循軟件測試原則,即不完全原則的遵守。不完全原則即為若測試不完全、測試過程中涉及免疫性原則的部分較多,可對軟件測試起到一定幫助。因軟件測試因此類因素具有一定程度的免疫性,測試人員能夠完成的測試內容與其免疫性成正比,若想使軟件測試更為流暢、測試效果更為有效,首先需遵循此類原則,將此類原則貫穿整個開發流程,不斷進行測試,而並非一次性全程測試。

軟件測試測試方法

1、靜態測試方法
軟件測試 軟件測試
靜態測試方式指軟件代碼的靜態分析測驗,此類過程中應用數據較少,主要過程為通過軟件的靜態性測試(即人工推斷或計算機輔助測試)測試程序中運算方式、算法的正確性,進而完成測試過程,此類測試的優點在於能夠消耗較短時間、較少資源完成對軟件、軟件代碼的測試,能夠較為明顯地發現此類代碼中出現的錯誤。靜態測試方法適用範圍較大,尤其適用於較大型的軟件測試。
計算機動態測試的主要目的為檢測軟件運行中出現的問題,較靜態測試方式相比,其被稱為動態的原因即為其測試方式主要依賴程序的運用,主要為檢測軟件中動態行為是否缺失、軟件運行效果是否良好。其最為明顯的特徵即為進行動態測試時軟件為運轉狀態,只有如此才能於使用過程中發現軟件缺陷,進而對此類缺陷進行修復。動態測試過程中可包括兩類因素,即被測試軟件與測試中所需數據,兩類因素決定動態測試正確展開、有效展開。
3、黑盒測試
黑盒測試,顧名思義即為將軟件測試環境模擬為不可見的“黑盒”。通過數據輸入觀察數據輸出,檢查軟件內部功能是否正常。測試展開時,數據輸入軟件中,等待數據輸出。數據輸出時若與預計數據一致,則證明該軟件通過測試,若數據與預計數據有出入,即便出入較小亦證明軟件程序內部出現問題,需儘快解決。
4、白盒測試
白盒測試相對於黑盒測試而言具有一定透明性,原理為根據軟件內部應用、源代碼等對產品內部工作過程進行調試。測試過程中常將其與軟件內部結構協同展開分析,最大優點即為其能夠有效解決軟件內部應用程序出現的問題,測試過程中常將其與黑盒測試方式結合,當測試軟件功能較多時,白盒測試法亦可對此類情況展開有效調試。其中,判定測試作為白盒測試法中最為主要的測試程序結構之一,此類程序結構作為對程序邏輯結構的整體實現,對於程序測試而言具有較為重要的作用。此類測試方式針對程序中各類型的代碼進行覆蓋式檢測,覆蓋範圍較廣,適用於多類型程序。實際檢測中,白盒測試法常與黑盒檢測法並用,以動態檢測方式中測試出的未知錯誤為例,首先使用黑盒檢測法,若程序輸入數據與輸出數據相同,則證明內部數據未出現問題,應從代碼方面進行分析,若出現問題則使用白盒測試法,針對軟件內部結構進行分析,直至檢測出問題所在,及時加以修改。 [1] 

軟件測試測試策略

1、單元測試
單元測試即為將整個軟件分解為各個單元,隨後對單元進行測試。此類測試策略的優點在於所需分析數據較少,且針對性較強,程序開發者於開發過程中可通過操作經驗明確出現問題的大致區域,隨後針對此類問題對相關單元展開分析,進行問題排查。但需注意的是,某些程序中無具體單元驅動程序,即單個單元無法有效驅動,易出現問題,若針對此類軟件展開測試,需重點注意此類分解單元。
2、集成測試
集成測試與單元測試相反,原理為將部分需測試部分作為整體進行集成,隨後針對此類集成部分進行測試。測試要求為此類被測試集成題應具有一定的結構,且屬於非漸增方式集成。對於較大軟件而言,集成測試方式較單元測試方式而言較為繁瑣,多數大型軟件的測試皆採取漸增方式進行測試。漸增測試方式為集成測試方式的衍生,其能夠按照不同次序對軟件進行測試,日常測試中,常將兩類方式進行集成測試,隨後按照次序展開選擇。 [2] 

軟件測試發展現狀

軟件測試 軟件測試
軟件系統越來越複雜,一個軟件不能夠由單獨的軟件工程師單獨編寫,而是由團隊進行配合,每個人可能只負責一個模塊,對於全局沒有過多的瞭解,這時如果運行軟件就會容易產生很多的錯誤。在行業內將這些錯誤叫做BUG。並且每一個軟件工程師都會有思維的死角,自己不容易發現自己編寫出來的錯誤。所以這個時候就需要專門的軟件測試工程師用專業的測試方式來檢查軟件。檢查該軟件是否符合客户要求的產品設計,是否能夠符合大多數用户的使用習慣,如果發現異常狀態及時進行處理。軟件市場雖然遠遠沒有達到飽和但是各種各樣功能的軟件也層出不窮競爭激烈,對軟件開發的質量要求也是日益增高。
所以軟件測試是由於軟件開發編程行業高度成熟後所形成的產物。從行業的整體成熟度來講,軟件開發行業的整體成熟度更高,人們對軟件開發的理解也更為全面深入。故此通常將軟件測試和軟件開發放在一起做比較。縱然二者都屬於產品研發但通常人們的關注點有所傾斜。所以經常用軟件開發設計工程師的要求來評價軟件測試工程師,僅看到軟件測試和軟件開發相比的弱勢卻看不到優勢。 [3] 

軟件測試發展趨勢

從整體行業背景看,一方面,在中國的很多軟件企業存在着重開發、輕測試的現象,造成日後的軟件產品的質量問題頻出,亟待解決;另一方面市場上的軟件測試人員偏少,崗位缺口較大,不少企業以開發暫代測試,以作急用。軟件測試人才的缺口在30萬人以上。
從個人職業發展看,軟件測試人才更強調崗位的經驗積累。從業者在擁有幾年的測試經驗背景後,可以逐步轉向管理或者資深測試工程師,擔當測試經理或者部門主管,所以職業壽命更長。另外,由於國內軟件測試工程師人才奇缺,並且一般只有大中型企業才會單獨設立軟件測試部門,所以很有保障,待遇普遍較高。
綜合以上分析來看,軟件測試行業前景廣闊。 [4] 

軟件測試中國應用

2020年11月7日,南京國際軟件質量總部基地項目落户南京浦口。將建設面向全球市場的 DevOps 軟件基礎平台、全球一流及中國最先進的軟件安全驗證實驗室、5G 算法軟件技術實驗室、開源項目評估實驗室;搭建中國軟件質量設計平台、檢測平台、部署及應用平台,提供面向全球的雲基礎設施全流程化服務;設立軟件教育學院,培養雲計算、邊緣計算、軟件測試等方向的實用高端人才,成為軟件人才輸出基地。 [5] 
2021年,在江蘇省科協推動下幫助引進世界500強惠普DXC公共軟件測試服務基地項目,惠普系龍頭企業及核心合作伙伴率先在宿遷投資建設宿遷軟件公共測試基地,全力助推宿遷市“智改數轉”數字化經濟產業加速發展。 [6] 

軟件測試相關資料

《軟件自動測試方法的研究與實現》
作者:翟立東 孫麗萍 [7] 
《計算機軟件測試方法及應用研究》
作者:黃天開 [8] 
參考資料