1、根據項目流程階段劃分: 單元測試、集成測試、系統測試、驗收測試
單元測試:單元測試是對軟件中的基本組成單位進行的測試。目的是檢驗軟件基本組成單位的正確性。
集成測試:集成測試是在軟件系統集成過程當中所進行的測試。目的是檢查軟件單位之間的接口是否正確。
系統測試:系統測試是對已經集成好的軟件系統進行完全的測試,以驗證軟件系統的正確性和性能等是否知足其規約所指定的要求。
驗收測試:驗收測試是部署軟件以前的最後一個測試操做。驗收測試的目的是確保軟件準備就緒,向軟件購買都展現該軟件系統知足其用戶的需求。安全
==>單元測試階段
模塊接口測試
經過所測模塊的數據流進行測試。調用所測模塊時的輸入參數與模塊的形式參數的個數、屬性和順序是否匹配。
局部數據結構測試 局部數據結構是爲了保證臨時存儲在模塊內的數據在程序執行過程當中完整、正確、模塊的局部數據結構每每是錯誤的根源。
路徑測試
對模塊中重要的執行路徑進行測試。
錯誤處理測試
比較完善的模塊設計要求能碰見出錯的條件,並設置適當的出錯處理,以便在一旦程序出錯時,能對出錯程序重作安排,保證其邏輯上的正確性。
邊界條件測試
軟件常常在便捷上失效,邊界條件測試是一項基礎測試,也是後面系統測試中的功能測試的重點。
==>集成測試階段
在集成測試中,咱們主要關注如下內容:
1. 把各個模塊鏈接起來時,穿越模塊接口的數據據是否會丟失。
2. 各個了模塊組合起來,可否達到預期要求的功能。
3. 一個模塊的功能是否會對另外一個模塊的功能產生不利影響。
4. 全局數據據結構是否有問題。
5. 單個模塊的偏差積累起來是否會被放大,從而達到不可接受的程序。
==>系統測試階段
通常系統的主要測試工做都集中系統測試階段。根據不一樣的系統,所進行的測試種類也不少。
功能測試:
功能測試是對產品的各功能進行驗證,以檢查是否知足需求的要求。
性能測試:
性能測試是經過自動化測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。
安全測試:
安全測試檢查系統對非法入侵的防範能力。
兼容測試:
兼容性測試主要是測試系統在不一樣的軟硬件環境下是否可以正常的運行。
==>驗收測試階段:
功能確認測試
安全可靠性測試
易用性測試
可擴充性測試
兼容性測試
資源佔用率測試
用戶文檔資料驗收 網絡
2、根據代碼的可見程度劃分: 白盒測試、黑盒測試、灰盒測試
上面是根據項目流程按照測試的各個階段對測試工具的劃分。白盒測試與黑盒測試,主要是測試工做對軟件代碼的的可見程度的劃分。這也是我軟件測試中領域中最基本的兩個概念。
==>黑盒測試:
黑盒測試,指的是把被測的軟件看做是一個黑盒子,咱們不去關心盒子裏面的結構是什麼樣子的,只關心軟件的輸入數據和輸出結果
它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息。黑盒測試着眼於程序外部結構,不考慮內部邏輯結構,主要針對軟件界面和軟件功能進行測試。
==>白盒測試:
白盒測試,指的是把盒子蓋子打開,去研究裏面的源代碼和程序結果。
它是按照程序內部的結構測試程序,經過測試來檢測產品內部動做是否按照設計規格說明書的規定正常進行,檢驗程序中的每條通路是否都能按預約要求正確工做
==>灰盒測試:
灰盒測試介於黑盒測試與白盒測試之間。
能夠這樣理解,灰盒測試關注輸出對於輸入的正確性,同時也關注內部表現,但這種關注不象白盒那樣詳細、完整,只是經過一些表徵性的現象、事件、標誌來判斷內部的運行狀態,有時候輸出是正確的,但內部其實已經錯誤了,這種狀況很是多,若是每次都經過白盒測試來操做,效率會很低,所以須要採起這樣的一種灰盒的方法。 數據結構
功能測試、性能測試
==>功能測試
功能測試檢查實際的功能是否符合用戶的需求。測試的大部分工做也是圍繞軟件的功能進行,設計軟件的目的也就是知足客戶對其功能的需求。若是偏離的這個目的任何測試工做都是沒有意義的。
功能測試又可能夠細分爲不少種:邏輯功能測試、界面測試、易用性測試、安裝測試、兼容性測試等。
==>性能測試
性能測試是經過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。
軟件的性能包括不少方面,主要有時間性能和空間性能兩種。
時間性能:主要是指軟件的一個具體的響應時間。好比一個登陸所須要的時間,一個交易所須要的時間等。固然,拋開具體的測試環境,來分析一次事務的響應時間是沒有任何意義的。須要搭建一個具體且獨立的測試環境。
空間性能:主要指軟件運行時所消耗的系統資源,好比硬件資源,CPU、內存,網絡帶寬消耗等。
併發
手工測試與自動化測試
==>手工測試:
手工測試就是由人去一個一個的去執行測試用例,經過鍵盤鼠標等輸入一些參數,查看返回結果是否符合預期結果。
(其實,不太喜歡別人把通常的功能測試工做叫手工測試,就像一個雕塑家不喜歡別人叫他刻石頭的同樣。手工測試一樣須要業務熟悉、基本測試方法的理解。看似簡單的工做卻可以發現別人不能發現的軟件問題。在目前的測試領域,手工測試仍然是沒法替代的一種測試方法)
==>自動化測試
自動化測試是把以人爲驅動的測試行爲轉化爲機器執行的一種過程。一般,在設計了測試用例並經過評審以後,由測試人員根據測試用例中描述的規程一步步執行測試,獲得實際結果與指望結果的比較。在此過程當中,爲了節省人力、時間或硬件資源,提升測試效率,便引入了自動化測試的概念。
自動化測試:又可分爲功能自動化測試與性能自動化測試。
咱們通常所說的自動化測試就是指功能自動化測試,經過相關的測試技術,經過編碼的方式用一段程序來測試一個軟件的功能,這樣就能夠重複執行程序來進行重複的測試。若是一個軟件一小部分發生改變,咱們只要修改一部分代碼,就能夠重複的對整個軟件進行功能測試。這樣就大大的提升了測試效率。
性能自動化測試,固然,除了早期階段,如今的性能測試工做都是經過性能測試工具輔助完成的。能過工具能夠模擬成千上萬的用戶向系統發送請求,用來驗證系統的處理能力。 工具
冒煙測試、迴歸測試、隨機測試、探索性測試、安全測試
這三種測試在軟件功能測試過程當中,既不算具體明確的測試階段也不算是具體的測試方法。
==>冒煙測試:
是指在對一個新版本進行系統大規模的測試以前,先驗證一下軟件的基本功能是否實現,是否具有可測性。
引入到軟件測試中,就是指測試小組在正規測試一個新版本以前,先投入較少的人力和時間驗證一個軟件 的主要功能,若是主要功能都沒有實現,則打回開發組從新開發。這樣作的好處是能夠節省大量的時間成本和人力成本。
==>迴歸測試:
迴歸測試是指修改了舊代碼後,從新時行測試以確認修改後沒有引入新的錯誤或致使其餘代碼產生錯誤。
迴歸測試通常是在進行軟件的第二輪測試開始的,驗證第一輪中發現的問題是否獲得修復。固然,迴歸也是一個循環的過程,若是迴歸的問題通不過,則須要開發人員修改後再次進行迴歸,直到經過爲止。
==>隨機測試:
是指測試中的全部輸入數據都是隨機生成的,其目的是模擬用戶的真實操做,並發現一些邊緣性的錯誤。
隨機測試能夠發現一些隱蔽的錯誤,可是也有不少缺點,好比測試不繫統,沒法統計代碼覆蓋率和需求覆蓋率,發現的問題難以重現。通常是放在測試的最後執行。其實隨機測試更專業的升級版叫 探索性測試
==>探索性測試
探索性測試能夠說是一種測試思惟技術。它沒有不少實際的測試方法、技術和工具,可是倒是全部測試人員都應該掌握的一種測試思惟方式。探索性強調測試人員的主觀能動性,拋棄繁雜的測試計劃和測試用例設計過程,強調在碰到問題時及時改變測試策略。
探索性測試應該是將來測試領域的一個方向。
==>安全測試
安全測試是在IT軟件產品的生命週期中,特別是產品開發基本完成到發佈階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標準的過程。
安全測試也在愈來愈受到企業的關注和重視,由於因爲安全性問題形成的後果是不可估量的。尤爲對於互聯網產品最容易遭受各類安全攻擊。性能