你需要知道的軟件測試類型和常識testing【經典長文】

文章篇幅較長,閱讀完大概20min,建議收藏閱讀, 讀完會有收穫。歡迎點贊關注。

有多少軟件測試類型呢?

我們作爲測試人員瞭解很多種不同的軟件測試類型,例如功能測試(Functional Test)、非功能測試、自動測試、敏捷測試、以及它們的各種子類型. 儘管在我們的測試過程中會接觸很多種測試類型, 或者聽說過某些測試類型,但是很少人敢說精通所有的測試類型.

每個測試類型都有自己的特點、優勢和劣勢。所以我寫這篇文章,科普一下我們今天最常用的測試類型.

不同的軟件測試類型在這裏插入圖片描述

下面是軟件測試的通用類型列表

功能測試類型:
單元測試(Unit testing)
集成測試(Integration testing)
系統測試(System testing)
健全性測試(Sanity testing)
冒煙測試(Smoke testing)
接口測試(Interface testing)
迴歸測試(Regression testing)
Beta/驗收測試(Beta/Acceptance testing)
非功能測試類型:
性能測試(Performance Testing)
負載測試(Load testing)
壓力測試(Stress testing)
容量測試(Volume testing)
安全測試(Security testing)
兼容性測試(Compatibility testing)
安裝測試(Install testing)
恢復測試(Recovery testing)
可靠性測試(Reliability testing)
可用性測試(Usability testing)
一致性測試(Compliance testing)
本地化測試(Localization testing)
來看看這些測試類型的細節

如果對軟件測試、接口、自動化、性能測試、測試開發、面試經驗交流。感興趣可以1079636098,羣內會有不定期的發放免費的資料鏈接,這些資料都是從各個技術網站蒐集、整理出來的,如果你有好的學習資料可以私聊發我,我會註明出處之後分享給大家。

0) A/B測試(A/B Testing)在這裏插入圖片描述

顧名思義, A/B測試就是準備兩個(A/B)或兩個以上的版本,讓不同的用戶來隨機訪問這些版本,收集各羣組的用戶體驗數據和業務數據,最後分析、評估出最好版本,正式採用。如上圖,谷歌使用A/B測試來決定導航應該是紅色還是藍色。

1) Alpha測試(Alpha Testing)

Alpha測試這是軟件工程中很常見的測試類型。它的目標就是儘可能地在發佈到市場或交付給用戶之前找出所有的問題和缺陷。

Alpha測試一般在開發的末段且在Beta測試之前進行。在這個測試過程中可能會驅動開發者進行一些小(minor)的設計變動. Alpha測試一般在開發者網站進行,即只對開發者或內部用戶開放,一般可以爲此類測試創建內部虛擬的用戶環境。

一般大型的軟件項目都有規範化的軟件版本週期:在這裏插入圖片描述
Pre-alpha: 有時候軟件會在Alpha或Beta版本前先發布Pre-alpha版本, 相比Alpha和Beta,這是一個功能不完整的版本
Alpha: Alpha版本功能還沒完善,需要進一步測試。Alpha版本通常會發送到開發軟件的組織或某羣體中的軟件測試者進行內部測試。
Beta: 一般Beta版本會包含所有功能,但可能又有一些Bug,需要調試反饋。 Beta版本是軟件最早對外公開的軟件版本,由公衆(通常爲公司外的第三方開發者和業餘玩家)參與測試。
Release Candidate(rc): 發佈候選版本,如果沒有出現問題則可發佈成爲正式的版本。這個版本包含完整且比較穩定的功能
舉一個典型的例子, 最近把我坑得有點慘的iOS13的發佈計劃:

une 3: iOS 13 beta 1 and first look at WWDC 2019                 # -> WWDC後就可以裝的,相當於pre-alpha或Alpha階段吧
June 17: iOS 13 beta 2 launched for developers
June 24: iOS 13 public beta release date for adventurous testers  # -> 公開Beta版本,相當於上面說的Beta階段
July 3: iOS 13 developer beta 3 launch with some new features     
July 8: iOS 13 public beta 2 release date
Early September 2019: iOS 13 Golden Master (final dev beta)       # -> 九月初,該發最終Beta版本了,相當於進入RC階段了
Mid-September 2019: iOS 13 likely to launch with new 2019 iPhones # -> 正式版本

現在很多開源項目,已經淡化了瀑布式的軟件版本週期,變成一種持續(Continuous)的、常態化的行爲, 例如Firefox:
在這裏插入圖片描述

2) 驗收測試(Acceptance Testing)

驗收測試通常是部署軟件之前的最後一個測試操作, 也稱爲交付測試, 由最終客戶執行,他們會驗證端到端(end to end)的系統流程是否符合業務需求,以及功能是否是滿足最終用戶的需求。只有當所有的特性和功能按照期望的運行,客戶纔會接受軟件

這是測試的最後階段,在驗收測試之後,軟件將投入生產環境. 所以它也叫用戶驗收測試(UAT)在這裏插入圖片描述
舉個例子,驗收測試就相當於收快遞, 包裹是軟件、你就是客戶,是驗收方,如果貨物不符合你的要求,是要退貨的。

3) 臨時測試(Ad-hoc Testing)

Ad-hoc中文應該理解爲臨時的意思。顧名思義,這種測試是在臨時基礎上進行的, 有時候也稱爲隨機測試。即沒有參考測試用例、沒有針對該測試的任何計劃和文檔。Ad-hoc測試的目的就是通過執行隨意的流程或任意的功能來找出應用的缺陷和問題

Ad-hoc測試一種非正式的方法,可以由項目中的任何人執行。儘管沒有測試用例很難識別缺陷,但是有些時候在Ad-hoc測試期間發現的缺陷可能無法使用現有的測試用例來識別, 也就是說它一般用來發現‘意外’的缺陷.

4) 可訪問性測試(Accessibility Testing)

可訪問性測試的目的是確定軟件或應用程序是否可供殘疾人使用。殘疾是指聾人,色盲,智障人士,失明者,老年人和其他殘疾人羣體。這裏會執行各種檢查,例如針對視覺殘疾的字體大小測試,針對色盲的顏色和對比度測試等等。

不同平臺、不同應用類型對可訪問性支持情況不太一樣,比如iOS相比其他操作系統則更重視可訪問, 而國外比國內更重視可訪問性。在這裏插入圖片描述

5) Beta測試(Beta Testing)

上文Alpha測試已經提及Beta測試, Beta測試是一種正式的軟件測試類型,在將產品發佈到市場或者實際最終用戶之前,由客戶在真實的應用環境中執行。

執行Beta測試目的是確保軟件或產品中沒有重大故障,並且滿足最終用戶的業務需求。當客戶接受軟件時,Beta測試纔算通過。

通常,此類測試由最終用戶或其他人完成。這是在將應用發佈作爲商業用途之前完成的最終測試。通常,發佈的軟件或產品的Beta版本僅限於特定區域中的特定數量的用戶。 所以最終用戶實際使用軟件後會將一些問題反饋給公司。公司可以在全面發佈之前採取必要的措施。

Beta測試在正式版本之前也可能會迭代進行多次.

6) 後端測試(Back-end Testing)

前端應用輸入的數據,一般都會存儲在數據庫,所以針對數據庫的這類測試稱爲數據庫測試或者後端測試. 市面有不同的數據庫,如SQL Server,MySQL和Oracle等。數據庫測試會涉及表結構,模式,存儲過程,數據結構等。

後端測試一般不會涉及GUI,測試人員通過某些手段直接連接到數據庫,從而可以容易地運行一些數據庫請求來驗證數據。通過後端測試可以發現一些數據庫問題,比如數據丟失、死鎖、數據損壞。這些問題在系統投入生產環境之前進行修復至關重要

7) 瀏覽器兼容測試(Browser Compatibility Testing)

在這裏插入圖片描述
這是兼容性測試的子類型,由測試團隊執行. 瀏覽器兼容測試主要針對Web應用,用於確保軟件可以在不同瀏覽器或操作系統中運行; 或者驗證Web應用程序是否支持在瀏覽器的所有版本上運行, 以確定應用最終兼容的範圍.

瀏覽器兼容測試是前端開發者繞不開的坑。

我們有很多策略來應對瀏覽器兼容性,比如漸進增強或者優雅降級, 還有制定瀏覽器兼容規範;

爲了撫平瀏覽器之間的差異,我們會使用各種特性檢測工具(Modernizr), 還有各種polyfill(CSS Normaliz, polyfill/shim, css-autoprefixer);

當然爲了測試跨瀏覽器兼容性,還要一些輔助工具,例如BrowserStack, 對於我們這些小團隊,只能下一堆Portable(Portable瀏覽器運行時相互隔離的, 所以不會存在配置文件等衝突問題) 瀏覽器,手工測試了。

8) 後向兼容測試(Backward Compatibility Testing)

向後兼容測試, 用於驗證新開發或更新的軟件是否能在舊版本的環境中運行。

比如向後兼容測試會檢查新版軟件是否可以正確地處理舊版本軟件創建的文件格式。例如新版的Office 2016是否可以打開2012創建的文件。

同理也可以檢查新版本是否可以兼容舊版本軟件創建的數據表、數據文件、數據結構、配置文件。

任何軟件更新應該在先前版本的基礎之上良好地運行

9) 黑盒測試(Black Box Testing)

在這裏插入圖片描述
黑盒測試不考慮軟件的內部系統設計,它基於需求和功能進行測試, 只關心繫統的輸入/輸出以及功能流程。

換句話說黑盒測試從用戶的角度出發針對軟件界面、功能及外部結構進行測試,而不考慮程序內部邏輯結構.

黑盒測試下面有很多子類,例如集成測試、系統測試、大部分非功能性測試

10) 邊界值測試(Boundary Value Testing)

邊界值測試, 測試應用處於邊界條件(boundary level)的行爲。很多邊界條件開發者是很難考慮周到的,所以纔有一個專門的測試類型來驗證這種情況

邊界值測試檢查應用處於邊界值時是否存在缺陷。邊界值測試通常用於測試不同範圍的數字, 每個範圍都有一個上下邊界,邊界測試則是針對這些邊界值進行測試。

比如數字範圍爲1-500, 那麼邊界值測試會在這些值上進行驗證: 0、1、2、499、500、501

11) 分支測試(Branch Testing)

這是白盒測試的子類型,在單元測試中實施. 顧名思義,分支測試表示測試要覆蓋程序代碼的各種條件分支, 避免遺漏缺陷。分支覆蓋是單元測試覆蓋率的一個指標之一

12) 比較測試(Comparison Testing)

如果對軟件測試、接口、自動化、性能測試、測試開發、面試經驗交流。感興趣可以1079636098,羣內會有不定期的發放免費的資料鏈接,這些資料都是從各個技術網站蒐集、整理出來的,如果你有好的學習資料可以私聊發我,我會註明出處之後分享給大家。

在這裏插入圖片描述
比較測試,將產品的優點和弱點與舊版本或者同類(競品)產品進行比較.

比如類似王自如這種數碼測評欄目,評測一個手機或者其他數碼產品時,一般會橫向和友商產品進行比較,有時候也會縱向和上一代產品比較.

還有一種比較典型的例子就是和行業的領導者比較,比如我們做IM的,會經常和微信比較: ‘你這個應用的啓動速度怎麼比微信慢這麼多?’

13) 兼容性測試(Compatibility Testing)

這是一個大類, 兼容性測試用於驗證應用在不同環境、web服務器、硬件、網絡條件下的行爲。兼容性測試確保軟件可以在不同的配置、不同的數據庫、不同的瀏覽器,以及它們不同的版本下運行。兼容性測試由測試團隊實施

14) 組件測試(Component Testing)

組件測試(此組件非GUI組件, 取組合測試可能更好理解一點),一般也稱爲模塊測試(Module Testing), 一般由開發者在完成單元測試後執行。組件測試將多個功能組合起來作爲單一的整體進行測試,目的是發現多個功能在相互連接起來之後的缺陷。

組件測試可大可小,小到函數級別或者類級別的組合,大可以大到幾個單獨的頁面、模塊、子系統的組合。 舉一個前端例子,將多個頁面路由組合起來,測試它們的流程跳轉,就屬於組件測試。
在這裏插入圖片描述

15) 端到端測試(End-to-End Testing)

端到端測試也是一種黑盒測試類型,類似於系統測試. 端到端測試在模擬的、完整的、真實應用環境下模擬真實用戶對應用進行測試,比如應用會和數據庫交互、會使用網絡通信、或者在適當的情況下和其他硬件、應用、系統進行交互. 端到端是指從一個端點到另一個端點的意思,所以端到端測試重點用於測試模塊和模塊之間的協調性。

當應用是分佈式系統或者需要和其他外部系統協同時,端到端測試扮演着非常重要的角色, 它可以全面檢查以確保軟件在不同平臺和環境產品能準確地交互。端到端測試有以下目的:

確保應用可以和外部系統之間良好的協調。對於前端來說,是確保頁面和後端之間良好協調
檢查從源系統到目標系統的所有系統流
從最終用戶角度驗證需求
識別異構環境中的問題
前端也有很多自動化的端到端測試工具,比如nightwatch,通過它們可以模擬用戶對頁面進行操作,從而檢驗整個應用流程是否正常和符合需求:在這裏插入圖片描述
因爲和系統測試很相似,所以它們也被經常拿來比較。

16) 等價劃分(Equivalence Partitioning)

等價劃分, 這是一種黑盒測試的測試技術. 通過等價劃分,可以將所有的輸入數據合理地劃分爲多個分組,我們只需在每個分組中取一個數據作爲測試的輸入條件, 這樣可以實現用少量代表性的測試數據取得較好的測試結果.

所以說這個測試的目的: 是在不導致缺陷的前提下,移除指定分組中的重複的用例, 簡化測試的工作

在這裏插入圖片描述
比如一個程序應用接受-10到+10之間的值,使用等價分區方法可以劃分爲三個分組: 0、負值、正值. 接下來的測試只需從這個三個分組中取一個成員進行測試, 而不需要-10到+10每個成員都測試一遍.

17) 實例測試(Example Testing)

It means real-time testing. Example testing includes the real-time scenario, it also involves the scenarios based on the experience of the testers.

實例測試意味着實時測試。實例測試包含了實時場景、另外還涉及基於測試人員經驗的場景。

18) 探索測試(Exploratory Testing)

在這裏插入圖片描述
探索性測試有點類似於Ad-Hoc測試. 探索性測試是由測試團隊進行的非正式測試。此測試的目的是探索應用並查找應用中存在的缺陷。像探險一樣,在測試期間是有一定機率發現的重大、甚至可能導致系統故障的缺陷.

在探索性測試期間,建議跟蹤記錄好測試的流程、以及開始該流程之前的活動記錄, 方便復現bug.

探索測試不需要任何文檔和測試用例.

20) 功能測試(Functional Testing)

功能測試是一個大類, 又稱爲行爲測試, 功能測試會忽略內部實現而關注組件的輸出,目的是驗證是否符合需求,這是一種面向功能需求的黑盒測試類型。

功能測試是相對非功能測試而言的, 功能測試需要關心功能或者業務,需要業務耦合程度高;而非功能測試則是通用的,比如壓力測試、負載測試,這些測試都有通用的工具來支持,不需要或很少定製化操作.

21) GUI測試(Graphical User Interface (GUI) Testing)

GUI測試的目的是根據業務需求驗證GUI。在詳細設計文檔和GUI模型(UI設計文檔)中一般會提到應用期望的GUI.

常見的GUI測試包括測試屏幕上顯示的按鈕和輸入字段的大小、表格中所有文本、表格或內容的對齊規則等等. 如果團隊有UI設計規範,還會驗證是否符合設計規範

22) 大猩猩測試(Gorilla Testing)

在這裏插入圖片描述
大猩猩測試是由測試人員執行的測試類型,有時也由開發人員執行。在大猩猩測試中,對模塊中的一個模塊或功能進行了徹底和嚴格的測試。原文沒有說出大猩猩測試的精髓,大猩猩測試會對一個功能或模塊進行重複‘上百次’的測試, 人類根本受不了這樣子的測試方式,所以大猩猩測試的另一個別名是‘令人沮喪的測試(Frustrating Testing)’

這種測試的目的是檢查應用程序的穩健性(robustness)

23) 樂觀路線測試(Happy Path Testing)

樂觀路線測試的目標是在正常流程上成功測試應用。它不會考慮各種負面或異常情況。重點只關注於驗證應用在有效和合法輸入的條件下生成期望的輸出. 比如銀行付款,只考慮賬戶有錢的正常狀態

24) 增量集成測試(Incremental Integration Testing)

增量集成測試是一種自下而上的測試方法,即在添加新功能時立即集成應用程序進行連續測試。應用程序功能和模塊應該足夠獨立,以便單獨測試。這通常由程序員或測試人員完成。

25) 安裝卸載測試(Install/Uninstall Testing)

http://windows.com/stopcode (二維碼自動識別)

安裝和卸載測試是在不同硬件或軟件環境下的不同操作系統上的進行完整/部分的安裝、升級、卸載、回滾等測試. 常用於桌面端應用

26) 集成測試(Integration Testing)

集成測試是指將所有模塊集成之後,驗證合併後的功能. 模塊通常是代碼模塊、單個應用、網絡上的客戶端和服務器應用等等。
在這裏插入圖片描述
集成測試一般在單元測試之後,所以單元測試是集成測試的基礎,沒有進行單元測試的集成測試是不靠譜的。所以最簡單的形式是:‘把兩個已經測試過的單元組合成一個組件,測試它們之間的接口’。也就是說集成測試在單元測試的基礎之上,將單元測試中獨立的單元合併起來,驗證它們的協調性, 合併後的組件又是一個新的‘單元’,這樣逐步合併測試,最終形成完整的應用程序。

這種類型的測試常用於B/S軟件和分佈式系統。

27) 負載測試(Load Testing)

它是一種非功能性測試,負載測試的目的是檢查系統可以承受多少負載而不會降低性能, 或者說確定最大工作負載是多少。

負載測試有助於查找特定負載下系統的最大容量以及導致軟件性能下降的任何原因。可以使用JMeter,LoadRunner,WebLoad,Silk執行程序等工具執行負載測試。在這裏插入圖片描述
負載測試經常和性能測試、壓力測試、穩定性測試等聯繫在一起。如上圖(來源於淘寶性能白皮書). 其中TPS(Transation Per Second)指的是每秒鐘系統可以處理的交易或事務的數量; Server Resource指的是系統資源佔有.

性能測試. 主要位於a-b之間. 在系統設計初期就會規劃一個預期目標, 比如給定資源Ax,a點就是性能期望值。也就是說在給定固定資源Ax的情況下,如果TPS可以達到a點甚至更高,就說明系統性能達到或者好於預期. 通過性能測試可以驗證系統的處理能力有沒有達到預期
負載測試. 位於b-c之間。對系統不斷增加併發請求,直到系統的某項或者多項指標達到安全的臨界值,如上圖中的c,這個c就是所謂的最大負載量。後面再增加請求壓力,系統的處理能力不但不能提高,返回會下降. 通過壓力測試可以得出系統最大的安全負載值
壓力測試. 位於c-d之間。在超過安全負載的情況下,繼續對系統增加壓力,直到達到崩潰點, 即上圖的d. 通過壓力測試可以得出系統的最大承受能力
穩定性測試. 位於a-d之間。在a、b、c、d不同的點(代表特定的硬件、軟件和網絡環境),讓系統運行一段較長的時間,檢測系統在不同條件下的系統運行的穩定性。

28) 猴子測試(Monkey Testing)

在這裏插入圖片描述

猴子測試是由測試人員進行的,即把自己當成猴子,在沒有任何知識背景或者理解應用前提下,隨意輸入和操作。

猴子測試的目標是通過提供隨機輸入值/數據來檢查應用程序或系統是否崩潰。 猴子是隨機執行的,沒有測試用例, 也沒有必要了解系統的全部功能

29) 變異測試(Mutation Testing)

變異測試(或者說可變性測試)是一種白盒測試,這是一種和單元測試反着來的測試類型。在這裏插入圖片描述
通常單元測試的思路是通過測試用例來驗證代碼是否有效可靠,而變異測試是反過來. 它首先更改其中一個程序的源代碼,再跑單元測試,如果單元測試通過則可能說明測試用例沒有效果,或者測試用例沒有覆蓋到這處代碼變異.

所以說變異測試可以反過來驗證你的測試用例是否有效, 還有可以幫助我們找出一些無法被當前測試所防止的潛在錯誤.

30) 悲觀測試(Negative Testing)

悲觀測試和樂觀路線測試相反, 它要求測試者要具有“打破”常規的態度,考慮各種異常情況, 使用各種邪惡的 、不懷好意、不合法的操作來測試系統。悲觀測試會使用不正確的數據、無效數據或輸入來進行驗證。它驗證系統是否可以識別異常情況,並按預期運行。

31) 非功能測試(Non-Functional Testing)

每個大型的組織都有一個獨立的團隊,通常稱爲非功能測試(NFT)團隊或性能團隊。

非功能性測試涉及測試非功能性需求,如負載測試、壓力測試、安全性、容量,恢復測試等等. NFT測試的目標是確保軟件或應用程序的響應時間是否滿足業務需求。

例如加載任何頁面或系統都不應該花費太多時間,並且在負載峯值期間應該維持良好運行狀態。

32) 性能測試(Performance Testing)

這個術語通常與“壓力”和“負載”測試互換使用。性能測試用於檢查系統是否滿足性能要求。它會使用不同的性能和負載工具來執行此測試。

性能測試這個範圍比較大,廣義上的性能測試包括了上文提到的負載測試、壓力測試、穩定性測試、容量測試等等。狹義的性能測試則是指在特定資源條件下,測試系統能否達到期望值, 也就是基線測試(Baseline Test).

總結一下性能測試的類型:

基線測試(Baseline Test): 在給定的資源下,測試最佳的性能,用作後續測量的參考‘基線’。注意基線測試和基準測試是有區別的, 這麼理解,基準是你想達到的,比如100短跑世界紀錄,基線是你的成績。
負載測試(Load Test): 在預期峯值的生產負載下測量系統的性能。上文負載測試已經大概介紹了
穩定性測試(Endurance Test): 在指定負載下,長時間測量系統的穩定性
壓力測試(Stress Test): 測試極端條件下的系統性能

33) 恢復測試(Recovery Testing)

恢復測試用於驗證應用或系統中崩潰或災難中恢復的程度. 確定系統是否能夠在災難發生後繼續運行。

比如應用通過網絡電纜接收數據,突然斷開了網絡電纜的連接, 過一段時間,再插上網線, 系統應該開始恢復由於網絡電纜拔出而丟失連接的數據

34) 迴歸測試(Regression Testing)

在修改任意模塊或者功能後,將應用作爲一個整體進行測試,稱爲迴歸測試。迴歸測試的目的就是驗證在軟件原有的功能變動後是否保持完整性.在這裏插入圖片描述
有觀點認爲迴歸測試就是迴歸測試是指重複執行以前的全部或部分相同的測試工作, 其實不是不無道理。而且因爲局部修改而牽一髮動全身的意外在平時開發中並不少見,這種意外性就是迴歸測試的存在的目的.

因爲在迴歸測試中很難覆蓋所有系統,通常最好使用自動化測試工具進行這些類測試。比如每次修改完代碼,跑單元測試來確保不影響確保其他軟件單元。

在前端中組件快照測試(Snapshot Testing)和一些CSS UI測試,都是屬於迴歸測試類型,它們的原理都是和上一次測試生成的結果進行比對,以確保沒有意外的修改:在這裏插入圖片描述

35) 基於風險的測試(Risk-Based Testing (RBT))

在基於風險的測試中,功能或需求將根據其優先級進行測試。基於風險的測試會優先測試高度關鍵的功能,因爲這些功能對業務影響最大或者故障概率非常高. 而優先級由業務需求決定,因此一旦爲所有功能設置了優先級,則應該首先執行高優先級功能或測試用例,然後再執行低優先級功能。 低優先級功能可以在時間充裕時測試,或者不測試。

基於風險的測試應該在‘不夠時間來測試整個應用,但是又要按時交付軟件’的情況下執行,通常還需要客戶和高級管理層的討論和批准之後才進行

36) 完整性測試(Sanity Testing)

完整性測試用於確定一個新的軟件版本是否可以開始進行正式的測試,如果一個應該在一開始使用時就崩潰,那麼就說明系統還不夠穩定,沒有必要進行下一步測試。這種情況應該打回給開發,以免浪費時間

以我們公司爲例:在這裏插入圖片描述
在軟件設計階段,測試團隊就會爲編寫冒煙測試用例;
開發團隊在提交版本給測試之前會自己跑一下冒煙用例, 確保沒有重大故障;
將版本提交給測試團隊後,測試團隊就會先跑一下完整性測試,檢查一下有沒有重大的,影響測試進程的bug,如果有則退回開發
如果通過了完整性測試, 則進行冒煙測試,如果冒煙測試沒有通過也會立即打回開發。
順利通過完整性測試和冒煙測試之後纔會進入正式測試階段。
這麼做的目的之一就是爲了降低測試團隊的工作負擔,因爲他們要對接多個開發團隊的測試任務。

37) 安全測試(Security Testing)

在這裏插入圖片描述

安全也是一個龐大的學科,而且知識每天都在更新,所以安全測試一般由特殊的安全團隊執行,他們以各種黑客手段對系統進行滲透測試。

安全測試旨在確保應用或網站免受內部和外部威脅的侵害。這個測試包括預防惡意程序、病毒; 檢驗授權和身份驗證過程的安全性。

它還會檢查軟件對任何黑客攻擊和惡意程序的反應方式,以及在遭到黑客攻擊後如何維護軟件以保護數據安全

38) 冒煙測試(Smoke Testing)

在這裏插入圖片描述
冒煙測試,每當開發團隊提交新的構建時,軟件測試團隊就會先驗證構建, 並確保不存在重大問題, 如果存在重大問題會直接打回開發團隊.

如何通俗地理解冒煙測試呢?這個屬於來源於硬件行業,對一個硬件或硬件組件進行更改或修復後,直接給設備加電。如果沒有冒煙,則該組件就通過了測試。舉個例子,給三星Note7加電,如果沒爆炸,就說明通過了‘冒煙測試’(感覺當手機測試者不容易,容易有生命危險 )?

測試團隊在確保構建穩定後纔會進一步執行詳細的測試。 冒煙檢查會檢查構建中是否存在中斷缺陷(stopper defect, 即影響繼續測試的缺陷),這將阻止測試團隊進一步詳細測試。 即如果測試人員發現主要功能不能工作,他們會拒絕這次構建,並退回給開發團隊。

冒煙測試一般在迴歸測試或其他詳細測試之前進行

39) 靜態測試(Static Testing)

在這裏插入圖片描述
靜態測試有點類似於代碼Review,在不執行任何代碼的情況下執行(也就是不運行應用),它涉及對可交付成果審查(inspection)、review和演練(walkthrough). 比如檢查代碼語法、命名約定、項目組織。

靜態測試不僅適用於代碼, 也適用於測試用例、測試計劃和設計文檔. 如果在靜態測試階段發現缺陷,可以將缺陷成本降到最低。比如在設計階段就發現問題,相比到開發階段甚至到生產環境出現問題要好解決

舉前端的例子,靜態測試可能包括:

使用Lint工具對程序進行規範檢查,相關的工具有ESLint、TSLint、Stylint等, 甚至Typescript這些類型檢查器也可以歸到這個範疇
代碼Review。有一些問題是無法通過Lint工具覆蓋的,比如代碼邏輯、異常捕獲、項目組織、內存泄露等等,這些需要人工進行走查Review
檢查代碼是否與設計一致,是否符合軟件需求、概要和詳細設計,這不僅可以看出代碼問題,也可以反過來更早發現需求或設計是否正確。

40) 壓力測試(Stress Testing)

在這裏插入圖片描述
通過壓力測試,模擬系統受到超出其規格的壓力時失敗的方式和時間, 找出系統的崩潰點. 這個測試在高負載情況下執行的,例如存取超過容量限制的數據、執行復雜的數據庫查詢、連續暴力輸入到系統或加載到數據庫。

41) 系統測試(System Testing)

系統測試在完整的集成系統上進行測試,也就是說系統測試一般在集成測試之後進行,集成測試之後系統成爲了一個整體,系統測試在這個基礎上、在真實的運行環境中驗證系統是否符合業務需求。 這是一種黑盒型測試,基於總體需求規範,涵蓋系統的所有組合部分。

系統測試其實不是一個具體的測試技術,而是一個測試階段。 這個階段會進行很多種測試,一般公司的測試團隊的工作就集中在這一塊。 一般包含:

功能測試: 即上面講的,從系統的整體上測試是否符合業務需求
各種非功能測試:例如恢復測試、性能測試、壓力測試、安全測試等等。
歸納一下系統測試的目的:

確保應用作爲一個整體可以良好地運行.
確保應用符合業務需求
確保應用在真實的環境可以良好地運行。比如進行一些非功能測試,驗證系統的健壯性
其實系統測試和上文說的端到端測試很像,它們要求系統作爲一個整體進行測試。可以簡單展開對比一下

系統測試端到端測試測試範圍一般針對被測應用本身一般針對被測應用以及其依賴的其他系統。正如其名,端到端,即從一端點到另一端點。重點關注前端、後端以及中間件之間的處理流程測試類型包含功能測試和非功能測試一般涵蓋所有源系統和目標系統之間的接口級別的測試測試時機一般在集成測試之後一般在系統測試之後

42) 單元測試(Unit Testing)

在這裏插入圖片描述
測試獨立的軟件單元或模塊稱爲單元測試。它通常由開發者完成,而不是由測試人員完成,因爲它需要詳細瞭解內部程序設計和代碼。

單元測試是和我們開發者最密切相關的測試類型。它的測試對象是軟件單元。軟件單元可以是一個函數/方法、一個類或者一個GUI組件等。

這是一種白盒測試,所以要求由開發者自己進行,因爲只有開發者才知道單元的內部實現。單元測試一般會使用測試覆蓋率來驗證單元測試的完成度.

前端常見的單元測試工具有Jest、Mocha、Jasmine等等. 下面是典型的BDD風格的單元測試組織:在這裏插入圖片描述

43) 可用性測試(Usability Testing)

可用性測試用於檢測應用的用戶友好程度(User-friendliness). 它會驗證新用戶受可以輕鬆理解應用流程,如果用戶陷入麻煩,測試人員要記錄好並提供幫助。可以認爲可用性測試是在檢查系統的導航性(navigation)。

44) 漏洞測試(Vulnerability Testing)

漏洞測試,涉及識別軟件、硬件和網絡中的漏洞。如果漏洞容易受到攻擊,或者容易受到病毒和蠕蟲感染,黑客或惡意程序就可以控制系統。

因此有必要在投入生產環境之前檢查這些系統是否存在漏洞。

45) 容量測試(Volume Testing)

容量測試是由性能測試團隊執行的一種非功能測試。容量測試會檢查應用程序遇到大量的數據時的系統行爲和響應時間。這種大量數據可能會影響系統的性能和處理時間的速度。

46) 白盒測試(White Box Testing)

在這裏插入圖片描述
白盒測試, 它也被稱爲玻璃盒測試、結構測試、邏輯驅動測試或基於代碼的測試, 基於應用程序代碼的內部邏輯。即測試人員應該知道內部軟件和代碼是如何工作的, 對所有的邏輯路徑進行覆蓋測試。上面提到的單元測試和靜態測試就是典型的白盒測試, 基本上白盒測試可以等價於單元測試。

邏輯路徑包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋等等.

總結

在這裏插入圖片描述
上面提到的軟件測試類型只是測試中的一部分,實際有超過100種的測試類型,但是並非所有測試類型都會被所有項目使用,所以我這裏只是列舉一些比較常見的軟件測試類型。

如果對軟件測試、接口、自動化、性能測試、測試開發、面試經驗交流。感興趣可以1079636098,羣內會有不定期的發放免費的資料鏈接,這些資料都是從各個技術網站蒐集、整理出來的,如果你有好的學習資料可以私聊發我,我會註明出處之後分享給大家。

另外不同的組織中可能會有不同的定義或過程,但是基本概念在任何地方都是相同的。當項目、需求和範圍發生變化時,這些測試類型、過程及其實現方法會不斷演變。
以上內容就是本篇的全部內容以上內容希望對你有幫助,有被幫助到的朋友歡迎點贊,評論。

如果對軟件測試、接口測試、自動化測試、面試經驗交流。感興趣可以關注我,我們會有同行一起技術交流哦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章