在以前的《軟件測試筆記(一)什麼是軟件測試-定義、類型、方法?》中也曾經提升過測試的種類很是多,不一樣的術語每每讓新人或者入行不久的測試人員望而生畏,對於開發也是一樣的。這裏推薦一個比較好的參考資料《ISTQB認證的測試人員基礎水平教學大綱》,裏面就包含了比較全面的測試術語還有測試方法。html
在逐條介紹測試類型以前,讓咱們再次默唸一遍軟件測試的定義,對軟件的功能進行評估,以肯定所開發的軟件是否知足規定的要求,經過發現缺陷,解決缺陷,來生產出高質量的產品的過程。web
手工測試是經過手工測試軟件,執行測試用例來發現缺陷的過程。一般測試人員是以最終用戶的視角,並確保全部功能都按照需求客戶需求實現。數據庫
自動化測試是使用自動化工具,測試框架來測試軟件的過程。在這個過程當中,自動化工具會自動執行測試腳本並生成結果。一些最流行的自動化測試工具是test complete、selenium webdriver等。編程
在軟件測試中也稱爲驗證。驗證是檢查文檔和文件的靜態方法。驗證是一個過程,以確保咱們建立的產品是不是正確的,即驗證咱們的需求。這裏包括的活動有檢查、審查、演練。segmentfault
一樣也是也是一種驗證, 測試真實產品的動態過程。一樣也是以確保咱們建立的產品是不是正確的。其中涉及的活動是測試應用程序。不一樣於上面的靜態測試,而是更側重於產品的功能。後端
又稱玻璃盒、透明盒、結構測試。白盒測試是基於應用程序內部的代碼結構。在白盒測試中,是以系統的內部視角,以及須要相應的編程技巧來設計測試用例。這種測試一般在單元測試級別進行。瀏覽器
請參考白盒測試。安全
請參考白盒測試。服務器
請參考白盒測試。併發
語句覆蓋測試是一種白盒測試技術,用於驗證代碼中的每一個語句是否至少執行一次。一般能夠用語句覆蓋率來檢測單元測試的完成度。
決策覆蓋測試/分支覆蓋測試:決策覆蓋或分支覆蓋測試是一種白盒測試技術,用於驗證每一個可能的分支至少執行一次。一般也能夠用決策覆蓋測試/分支覆蓋測試率來檢測單元測試的完成度。
路徑覆蓋測試是一種白盒測試技術,用於驗證程序的全部路徑至少執行一次。一般也能夠用路徑覆蓋測試率來檢測單元測試的完成度。
變異測試是一種白盒測試,它改變(變異)源代碼中的某些語句,並驗證測試是否可以找到錯誤。
循環測試是一種白盒測試技術,用於驗證不一樣類型的循環,如簡單循環、嵌套循環、鏈接循環和非結構化循環。
也稱爲基於設計文檔的行爲/規範/輸入輸出測試。黑盒測試是一種軟件測試方法,在這種方法中,測試人員在不查看內部代碼結構的狀況下評估軟件的功能。
請參考黑盒測試。
灰盒測試是介於黑盒和白盒測試之間的一種測試。測試人員須要訪問開發設計文檔,接口文檔,從而來設計和執行相應的測試用例。
簡單地說,系統自己的功能其實就是一種功能測試。驗證軟件應用程序的每一個功能是否按照需求文檔中的規定運行。經過提供適當的輸入來測試全部功能,以驗證明際輸出是否與預期輸出匹配。它屬於黑盒測試的範圍,測試人員沒必要關心應用程序的源代碼。
簡單地說,系統性能如何就是非功能性測試。非功能性測試是指軟件的性能、負載、壓力、可擴展性、安全性、兼容性等各個方面,主要關注的是提升用戶體驗系統對請求的響應速度。
前面的白盒測試也提到了單元測試。單元測試是爲了檢查源代碼的各個模塊是否正常工做。即由開發人員在開發人員的環境中分別測試應用程序的每一個單元。它也能夠稱之爲模塊測試或組件測試。
請參考單元測試。
請參考單元測試。
集成測試是測試多個模塊之間的鏈接或數據傳輸的過程。又稱爲I&T (Integration Testing)測試或流測試。按照測試順序,又分爲自上而下法、自下而上法和夾心法(自上而下和自下而上相結合)。
在完成單個模塊測試後,將全部單元模塊總體合併,並進行功能驗證。
首先測試高級模塊,而後測試低級模塊,最後將低級模塊集成到高級模塊,以確保系統按預期工做。若是模塊未準備好進行集成測試,則能夠用虛構(臨時)模塊代替。
不一樣於自上而下的集成測試,測試是自下而上進行的。首先測試底層模塊,而後測試高層模塊,最後將高層模塊集成到低層,以確保系統按預期工做。驅動程序用做集成測試的臨時模塊。
混合集成測試是自頂向下和自下而上集成測試的結合。
一般來講這是一個黑盒測試。測試完整的應用程序這也稱爲端到端的測試。確保軟件在目標系統中能夠正常工做。驗證對不一樣的系統輸入,同時檢查所需的輸出。測試用戶對應用程序的體驗。
請參考系統測試。
這是由最終用戶和測試人員一塊兒完成的,以驗證應用程序的功能。驗收測試成功後。爲肯定應用程序是否按要求開發而進行的正式測試。它容許客戶接受或拒絕申請。驗收測試的類型有alpha、beta和gamma。
Alpha測試由內部開發人員(開發軟件的人員)和測試人員完成。有時,Alpha測試是由客戶或外包團隊在開發人員或測試人員在場的狀況下完成的。
在產品交付前,由有限數量的最終用戶測試完成。一般是在客戶的環境中完成的測試。
Gamma測試是在軟件已經準備好按照指定的需求發佈時完成的。一樣的也是在客戶的環境中完成。內部測試活動則徹底不參與。
等價劃分也稱爲等價類劃分。在等價劃分中,軟件的輸入被劃分爲指望表現類似的組,所以能夠將類似的輸入歸類。在測試中,從每一個組中選擇一個輸入來設計測試用例。
這種測試技術適用於輸入之間具備邏輯關係的功能。在決策表技術中,咱們處理輸入的組合。爲了識別帶有決策表的測試用例,咱們能夠看它是否使用有條件的輸入和操做結果做爲輸出。
當應用程序爲相同的輸入提供不一樣的輸出時,咱們能夠應用這個方法,這取決於在之前的狀態中發生了什麼。該測試的難點就是挑選出能夠覆蓋不一樣系統轉換的應用程序的測試輸入。
使用全部有效和無效的輸入和先決條件測試全部功能稱爲窮舉測試。可是一般來講這種測試狀況很是少。
全匹配測試方法是用全部可能的輸入參數值組合來測試應用程序,相似於窮舉測試。
它是爲了肯定系統應該作什麼。它有助於檢查應用程序是否符合要求。
它是爲了肯定系統不該該作什麼。它有助於從軟件中發現缺陷。
用例測試是在用例文檔的幫助下進行的。它是用來幫助完成系統測試。
場景測試是一種基於場景(用戶畫像)的軟件測試技術。它涉及將業務需求轉換爲特定的測試場景,以便更好地理解和實現系統測試。一個設計良好的情景應該是合理的、可信的、複雜的,而且其結果易於評估。
文檔測試是爲了驗證文檔化的文本,好比需求、測試計劃、跟蹤矩陣、測試用例。
很是重要的測試類型,這類測試肯定或驗證被測系統或應用程序的速度、可伸縮性和/或穩定性特徵。性能是指實現知足項目或產品性能目標的響應時間、吞吐量和資源利用率級別。
驗證系統/應用程序是否可以處理預期數量的事務,並驗證系統/應用程序在正常和峯值負載條件下的行爲。
在高負載下長時間運行系統以識別性能問題稱爲浸泡測試。
請參考浸泡測試。
請參考浸泡測試。
請參考浸泡試驗。
健壯性測試是爲了驗證應用程序的健壯性而進行的一種測試。不一樣於浸泡測試,它不須要有特別高的負載。
對應用程序進行長時間的連續測試,以驗證應用程序的穩定性
可伸縮性測試是一種非功能性測試。它是爲了肯定被測應用程序如何隨着工做負載的增長而動態的擴展。
併發測試是指多個用戶同時訪問應用程序,以確保系統的穩定性。這主要用於識別死鎖問題。
破壞性測試是一種測試技術,其目的是經過持續測試直到應用程序崩潰來驗證應用程序的健壯性。
執行恢復測試是爲了肯定系統崩潰或硬件故障後系統恢復的速度。它屬於非功能性測試。
驗證系統/應用程序是否可以處理大量數據。
識別應用程序中的漏洞或弱點的測試過程。
識別應用程序中的漏洞或弱點的測試過程。
它是一種非正式的測試類型。測試人員在不遵循任何文檔和測試設計技術的狀況下隨機測試應用程序。若是被測應用程序中的測試人員的知識很是豐富,則能夠主要執行此測試。測試人員在沒有任何測試用例或業務需求文檔的狀況下隨機測試應用程序。
一般,這個測試過程將由領域專家執行。他們僅僅經過探索應用程序的功能來執行測試,而不瞭解需求。
故意對應用程序執行異常操做,就像是讓一個猴子隨意敲擊鍵盤,以驗證應用程序的穩定性。
大猩猩測試是由測試人員完成的,有時開發人員也會與測試人員攜手合做。它包括反覆測試系統以測試系統的健壯性。
確保在早期版本中發現併發布的缺陷在當前版本中獲得修復或不被修復。
對一個已經測試過的程序在修改後進行的重複測試,以發現因爲被測試的軟件或其餘相關或不相關的軟件組件的變化而引入或發現的任何缺陷。它區別於從新測試的是它不只關注缺陷自己還關注修復缺陷帶來的新的影響。
健全性測試每每在發佈階段進行,以檢查應用程序的主要功能,而沒必要深刻。有時因爲發佈時間限制,沒法對構建進行嚴格的迴歸測試,而健全測試則經過檢查主要功能來完成這一部分。
冒煙測試是爲了確保構建的產品是否可測試。檢查關鍵功能不起做用或關鍵錯誤還沒有修復時,從而使用最少的時間來簡單地測試整個應用程序。
涉及對代碼的執行和調試。它用預期的結果驗證輸出。
驗證應用程序是否對用戶友好,用戶使用是否流暢。一個好的應用程序應該是自我探索的,而且不須要培訓就能夠來使用它。
可訪問性測試是可用性測試的一個子集。它是針對於殘疾人(如視覺障礙、身體障礙、聽力障礙、認知障礙、學習障礙)如何容易地使用一個系統/應用程序。
在不一樣的環境組件組合中部署並檢查應用程序是否按預期工做。一般互聯網的產品須要測試在不一樣的瀏覽器和設備是否能夠正常訪問。
跨瀏覽器測試是一種非功能性測試,是兼容性測試的一部分,它幫助咱們確保咱們的網站或web應用程序在各類web瀏覽器中按預期工做。
請參考跨瀏覽器測試。
配置測試是使用每一個受支持的硬件和軟件配置測試應用程序的過程,以肯定應用程序是否能夠正常工做而不出現任何問題。一般在程序發佈的時候,都會有個最低配置要求。做爲測試人員,須要測試不一樣配置條件下系統/應用程序的表現。
全球化是軟件應用程序的設計的一個部分,目的是讓它能夠在不作任何更改的狀況下適應不一樣的語言和地區。全球化測試則是針對於這部分的測試。
請參考全球化測試。
本地化是經過添加特定於本地化的組件(語言包),使全球化軟件適應特定區域或語言的過程。一般會檢查文字內容和系統樣式內容。
對於互聯網公司來講,安全測試是一個很是重要的測試類型。安全測試是一個肯定系統是否按預期保護數據和維護功能的過程。
滲透測試是一種安全測試。它爲了評估系統的安全性。
模糊測試是安全測試的一種,用於識別應用程序中的編碼錯誤和安全漏洞。經過向系統輸入大量隨機數據,試圖使其崩潰,以肯定應用程序中是否有任何中斷。
數據庫測試是爲了驗證UI(用戶界面)中的數據是否與數據庫中存儲的數據匹配。它包括檢查數據庫的模式(schema)、表、觸發器等。
其包含了數據庫測試,同時還包括了服務器的測試,後臺服務的測試等。
桶(bucket)測試是一種將應用程序的兩個版本進行比較以肯定哪一個版本性能更好的方法。
相似於桶測試。
相似於桶測試。
圖形用戶界面測試是測試應用程序和最終用戶之間的界面。測試人員主要關注的是外觀元素如字體和顏色是否符合設計規範。
在UI測試中,測試人員的目標是測試GUI和命令行界面(CLIs),一樣參考圖形用戶界面測試。
執行接口測試以評估兩個預期模塊是否傳遞數據並相互正確通訊。
API表明應用程序編程接口。API測試是一種軟件測試,包括使用postman等工具測試API。
敏捷測試是一種包含如下敏捷軟件開發方法原理的測試。在這種敏捷測試中,測試是在持續發展的項目的整個生命週期中進行的,而不是侷限於特定的階段。
檢查應用程序安裝/卸載是否成功,安裝後是否按預期工做,卸載後是否刪除全部不須要的文件。
測試人員經過預先計劃好的程序和適當的文檔來測試應用程序的過程。
試運行測試是指公司爲了得到客戶的信任而在實時運行條件下進行的測試。
前向兼容性測試是爲了驗證被測應用程序是否按照軟件當前版本的更高版本的預期工做。
向後兼容性測試是爲了驗證被測應用程序是否按照軟件當前版本的早期版本的預期工做。
請參考向後兼容性測試。
合規性測試是一種非功能性測試,用於驗證軟件是否符合一組定義的標準。
依賴性測試是檢查應用程序對應用程序正常運行的前提條件、初始狀態和配置的需求。
衆包測試是由一個由質量保證專家組成的社區經過一個在線平臺進行的。
ETL(extract,transform,load)測試包括驗證從源到目的地的數據移動,驗證源和目的地的數據量,驗證數據提取、轉換,以及驗證表關係。
請參閱ETL測試。
故障注入測試是爲了提升測試覆蓋率而在代碼中有意引入故障的測試技術。
用於驗證系統在服務器故障期間可以分配額外資源,並將處理部分任務傳輸到備份系統
相似於組隊開發的模式,一般有一個熟悉單元模塊的測試和一個不熟悉該單元模塊的測試,組隊進行測試。
肯定最有可能致使故障的模塊或功能,一般能夠由開發和產品高階使用人員給出相關的風險測試範圍,而後測試這些功能。
上面列舉了我所瞭解到的一些測試的種類,但願能夠幫助你們拋開專業術語,瞭解其真實的測試內容。隨着軟件產品的多樣化和測試技術的進步,上面列舉的103種測試方法,確定還有繼續擴充的機會。若是大夥有什麼補充請在留言回覆。