主頁 >  其他 > 你需要知道的軟體測驗型別和常識【經典長文】

你需要知道的軟體測驗型別和常識【經典長文】

2020-10-28 01:10:16 其他

文章篇幅較長,閱讀完大概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,群內會有不定期的發放免費的資料鏈接,這些資料都是從各個技術網站搜集、整理出來的,如果你有好的學習資料可以私聊發我,我會注明出處之后分享給大家,

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

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/194458.html

標籤:其他

上一篇:5個優秀的計算機視覺應用與相關資料集

下一篇:黑客進階基礎篇:逆向破解win.exe—讓我們來談談逆向分析那些事

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more