總結知乎答主和蟲師博客的觀點:
根據項目流程階段劃分測試
單元測試:單元測試是對軟件中的基本組成單位進行的測試。目的是檢驗軟件基本組成單位的正確性。
集成測試:集成測試是在軟件系統集成過程中所進行的測試。目的是檢查軟件單位之間的接口是否正確。
系統測試:系統測試是對已經集成好的軟件系統進行徹底的測試,以驗證軟件系統的正確性和性能等是否滿足其規約所指定的要求。
驗收測試:驗收測試是部署軟件之前的最后一個測試操作。驗收測試的目的是確保軟件準備就緒,向軟件購買都展示該軟件系統滿足其用戶的需求。
根據我們看待所測試對象時的位置或者說設計測試時的思路
黑盒測試:黑盒測試,指的是把被測的軟件看作是一個黑盒子,我們不去關心盒子里面的結構是什么樣子的,只關心軟件的輸入數據和輸出結果。它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息。黑盒測試著眼于程序外部結構,不考慮內部邏輯結構,主要針對軟件界面和軟件功能進行測試。
白盒測試:白盒測試,指的是把盒子蓋子打開,去研究里面的源代碼和程序結果。它是按照程序內部的結構測試程序,通過測試來檢測產品內部動作是否按照設計規格說明書的規定正常進行,檢驗程序中的每條通路是否都能按預定要求正確工作
灰盒測試:灰盒測試介于黑盒測試與白盒測試之間。可以這樣理解,灰盒測試關注輸出對于輸入的正確性,同時也關注內部表現,但這種關注不象白盒那樣詳細、完整,只是通過一些表征性的現象、事件、標志來判斷內部的運行狀態,有時候輸出是正確的,但內部其實已經錯誤了,這種情況非常多,如果每次都通過白盒測試來操作,效率會很低,因此需要采取這樣的一種灰盒的方法。
根據所測試對象的不同面或者說不同的屬性,或者說是被測對象在不同維度所表現出來的不同行為,也可以簡稱為測試類型。
功能測試:
功能測試檢查實際的功能是否符合用戶的需求。測試的大部分工作也是圍繞軟件的功能進行,設計軟件的目的也就是滿足客戶對其功能的需求。如果偏離的這個目的任何測試工作都是沒有意義的。
功能測試又可可以細分為很多種:邏輯功能測試、界面測試、易用性測試、安裝測試、兼容性測試等。
性能測試:
性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。
軟件的性能包括很多方面,主要有時間性能和空間性能兩種。
時間性能:主要是指軟件的一個具體的響應時間。比如一個登錄所需要的時間,一個交易所需要的時間等。當然,拋開具體的測試環境,來分析一次事務的響應時間是沒有任何意義的。需要搭建一個具體且獨立的測試環境。
空間性能:主要指軟件運行時所消耗的系統資源,比如硬件資源,CPU、內存,網絡帶寬消耗等。
性能測試分類之我見:http://www.cnblogs.com/fnng/archive/2012/06/09/2543274.html
不算具體明確的測試階段,是各個階段的測試技術,也即是說我們在計劃一個項目時,按照時間順序以及自身測試水平和能力所需要的中間過程,并非是必須的,也會因為不同的測試開展方式而有極大的不同。例如,在敏捷方式下開展測試,就沒有單獨的回歸測試階段,可以認為是無時無刻不在進行回歸。
冒煙測試:
是指在對一個新版本進行系統大規模的測試之前,先驗證一下軟件的基本功能是否實現,是否具備可測性。
引入到軟件測試中,就是指測試小組在正規測試一個新版本之前,先投入較少的人力和時間驗證一個軟件 的主要功能,如果主要功能都沒有實現,則打回開發組重新開發。這樣做的好處是可以節省大量的時間成本和人力成本。
回歸測試:
回歸測試是指修改了舊代碼后,重新時行測試以確認修改后沒有引入新的錯誤或導致其他代碼產生錯誤。
回歸測試一般是在進行軟件的第二輪測試開始的,驗證第一輪中發現的問題是否得到修復。當然,回歸也是一個循環的過程,如果回歸的問題通不過,則需要開發人員修改后再次進行回歸,直到通過為止。
隨機測試:
是指測試中的所有輸入數據都是隨機生成的,其目的是模擬用戶的真實操作,并發現一些邊緣性的錯誤。
隨機測試可以發現一些隱蔽的錯誤,但是也有很多缺點,比如測試不系統,無法統計代碼覆蓋率和需求覆蓋率,發現的問題難以重現。一般是放在測試的最后執行。其實隨機測試更專業的升級版叫 探索性測試
探索性測試:
探索性測試可以說是一種測試思維技術。它沒有很多實際的測試方法、技術和工具,但是卻是所有測試人員都應該掌握的一種測試思維方式。探索性強調測試人員的主觀能動性,拋棄繁雜的測試計劃和測試用例設計過程,強調在碰到問題時及時改變測試策略。
探索性測試應該是未來測試領域的一個方向。
安全測試:
安全測試是在IT軟件產品的生命周期中,特別是產品開發基本完成到發布階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標準的過程。
安全測試也在越來越受到企業的關注和重視,因為由于安全性問題造成的后果是不可估量的。尤其對于互聯網產品最容易遭受各種安全攻擊。
作者:宣spring
鏈接:https://www.zhihu.com/question/24345678/answer/27547581
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
任何主張都受限于其所處時代。也即是說,也許在當時很適用、很正確的觀念和做法,放到如今的時代背景中來看待,卻顯得不合理、不正確了,但這并不代表這些觀念和做法本身有問題,只是它們已經不再適合。1. 設計測試時的思路問題白盒、黑盒:是指我們看待所測試對象時的位置,是以“身處其中”(白盒)也即可以知曉其內部運作機制的角度看待并設計和執行測試用例,還是以“置身事外”(黑盒)也即只知道外面可以看見的情況完全不知道內部情況如何的方式看待并設計和執行測試用例。在往年那個生產力匱乏、工具也欠缺的年代,這種說法還很有啟發作用,畢竟要去觀察和跟蹤系統內部運行狀態并不那么容易,但在如今這個時代,哪還有什么白盒、黑盒之分?難道你在白盒測試編程語言本身的時候,會深入到編譯器內部去觀察語言執行情況?或者是檢查硬件的數字或脈沖信號?2. 跟被測對象強相關的測多大東西、測哪個方面的問題單元測試、系統測試等:是我們所選定的測試對象的范圍或規模的不同,單元測試就是關注一個類、一個函數這個級別的表現的測試,系統測試則是關注系統整體的行為。每個公司可能都會有自己的一些測試范圍的名詞,例如模塊測試之類的。功能、壓力、性能等:是我們所測試對象的不同面或者說不同的屬性,或者說是被測對象在不同維度所表現出來的不同行為,也可以簡稱為測試類型。就好像一個人,會不會洗碗(功能)?能夠連續洗碗4個小時嗎(壓力)?最快能夠在10分鐘內洗幾個碗(性能)?3. 跟整體研發方式強相關的測試時間點問題集成測試、回歸測試等:其實是測試的階段,也即是說我們在計劃一個項目時,按照時間順序以及自身測試水平和能力所需要的中間過程,并非是必須的,也會因為不同的測試開展方式而有極大的不同。例如,在敏捷方式下開展測試,就沒有單獨的集成測試和回歸測試階段,可以認為是無時無刻不再進行集成和回歸。又例如,在傳統方式(例如瀑布)下,由于需求分析和測試用例設計進行方式的原因,集成和回歸則會被看作是一種測試類型,以覆蓋其他測試類型沒有覆蓋的部分。4. 跟整體測試活動相關的生產力問題測試工具:測試工具這個詞本身是很泛(也即很廣義)的,簡單來講,就是測試工作中用到的任何工具都可以稱之為測試工具。而測試工作又包含了很多活動,例如分析需求、擬訂測試計劃、設計測試用例、執行測試用例、編寫測試報告、提交缺陷等等,這也意味著會有很多種不同用途的測試工具,甚至,可能還有不同廠商打包不同用途的(狹義)測試工具而提供的測試工具包(也被稱為測試工具)……如果你們的需求文檔是用Word編寫的,那么你可以認為Word是你們的一種需求工具。如果你們用DOORS或其他工具保存,那你可以認為DOORS是你們的需求管理工具。如果你們用了Lotus Notes或者QC等來管理你們的測試計劃和測試用例,那么你可以認為它們是測試管理工具。如果你使用了Jira或Bugzilla等來管理你們的缺陷,那么你可以認為它們是你們的缺陷追蹤系統。如果你們用了Redmine、VersionOne等敏捷項目管理工具來管理你們的測試工作任務,那么你可以認為它們也是你們的項目管理工具。如果你們使用了Robotframework、Watir、Robotium、LoadRunner等各種工具來編寫自動化測試用例和執行,那么你可以認為它們就是你們的測試自動化工具。
作者:徐毅
鏈接:https://www.zhihu.com/question/24345678/answer/27486022
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
http://www.cnblogs.com/fnng/archive/2012/10/24/2737972.html
首先要明確,測試是整個軟件過程的一部分,當你從軟件過程來看測試,就知道為什么測試會有那么多種類了。比如大型軟件開發中經常用到的持續集成過程,軟件被分成多個增量過程,代碼開發者不停的將自己的開發代碼checkin到代碼樹,為了保障質量差的代碼不被引入到代碼樹,就需要代碼review和單元測試。當多個模塊由底向上集成的時候,為了保證集成后的集合質量,就有了集成測試。等整個系統完成了,就需要做各種系統測試,驗收測試。根據各種測試的特性,有些測試適合用白盒的方法設計,這些測試就都叫做白盒測試,比如一般的單元測試;有些測試適合用黑盒的方法設計,就有了黑盒測試,比如系統測試。而自動化測試則是為了緩解測試覆蓋和測試成本之間的矛盾,移除回歸測試中的重復僵化的部分而來的。總之,想要想清楚在什么時候需要什么測試,就必須要用一種工程的眼光來看待軟件過程。