軟體測試概念及分類

2021-09-12 03:21:17 字數 4871 閱讀 7595

前言

測試小夥伴在談論軟體測試分類,五花八門的分類,眼花繚亂。因為將各個維度劃分的內容都整到一塊了,在加上各自不同的見解與補充,各種衝突…

findyou我經過多年測試總結基本定為4類測試(最多5類,自動化或者相容性單獨提出來):功能測試、效能測試、安全測試、特性測試、。化繁為簡,轉為自己理解的分類,避免死記硬揹帶來的理解不深入,遺漏測試範圍。我的測試4類劃分如下:

功能測試:關注功能正常(包含相容性測試),除了下面分類都測;

效能測試:關注(比如前端效能、後端效能);

安全測試:關注傳輸、儲存等安全;

特性測試:特性指平台差異(即部分相容性測試),如pc端滑鼠,鍵盤操作特性(tab鍵等);如手機觸屏操作,橫豎屏,中斷恢復(來電)等。

本文主要對現有軟體分類進行梳理,請見文。

a.1 經典定義

軟體測試(software testing),在規定的條件下對程式進行操作,以發現程式錯誤,衡量軟體質量,並對其是否能滿足設計要求進行評估的過程。

a.2 標準定義(ieee)

軟體測試是使用人工或自動的手段來執行或測定某個軟體系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。

a.3 測試目的

軟體測試的目的是發現問題,發現至今未發現的問題。檢查系統是否滿足需求。

grenford j.myers觀點

(1)測試是程式的執行過程,目的在於發現錯誤;

(2)乙個好的測試用例在於能發現至今未發現的錯誤;

(3)乙個成功的測試是發現了至今未發現的錯誤的測試;

a.4 測試的物件

程式、資料、文件。

a.5 軟體錯誤佔比

據業界著名的統計公司的統計表明,屬於需求分析和軟體設計錯誤的約佔64%,屬於程式編寫錯誤的僅佔36%。

b.1 wikipedia

測試級別:單元測試、整合測試、介面測試、系統測試、驗收測試

測試方法:動態測試、靜態測試;黑盒測試、白盒測試、灰盒測試。

測試型別:一共19種,不列舉了。

如感興趣,請find見you傳送門

b.2 綜合整理分類

b.2.1 按階段劃分 //重要

√ 單元測試(unit testing)

單元測試是對軟體組成單元進行測試。其目的是檢驗軟體基本組成單位的正確性。測試的物件是軟體設計的最小單位:模組。findyou又稱為模組測試

測試階段:編碼後

測試物件:最小模組

測試人員:白盒測試工程師或開發工程師

測試依據:**和注釋+詳細設計文件

測試方法:白盒測試

測試內容:模組介面測試、區域性資料結構測試、路徑測試、錯誤處理測試、邊界測試

√ 整合測試(integration testing)

整合測試也稱聯合測試、組裝測試,將程式模組採用適當的整合策略組裝起來,對系統的介面及整合後的功能進行正確性檢測的測試工作。阿旺主要目的是檢查軟體單位之間的介面是否正確。

測試階段:一般單元測試之後進行

測試物件:模組間的介面

測試人員:白盒測試工程師或開發工程師

測試依據:單元測試的模組+概要設計文件

測試方法:黑盒測試與白盒測試相結合

測試內容:模組之間資料傳輸、模組之間功能衝突、模組組裝功能正確性、全域性資料結構、單模組缺陷對系統的影響

√ 系統測試(system testing)

將軟體系統看成是乙個系統的測試。包括對功能、效能以及軟體所執行的軟硬體環境進行測試。時間大部分在系統測試執行階段

測試階段:整合測試通過之後

測試物件:整個系統(軟、硬體)

測試人員:黑盒測試工程師

測試依據:需求規格說明文件

測試方法:黑盒測試

測試內容:功能、介面、可靠性、易用性、效能、相容性、安全性等

√ 驗收測試(acceptance testing)

驗收測試是部署軟體之前的最後乙個測試操作。它是技術測試的最後乙個階段,也稱為交付測試。阿旺總結驗收測試的目的是確保軟體準備就緒,按照專案合同、任務書、雙方約定的驗收依據文件,向軟體購買都展示該軟體系統滿足原始需求。

測試階段:系統測試通過之後

測試物件:整個系統(包括軟硬體)。

測試人員:主要是終端使用者或者需求方。

測試依據:使用者需求、驗收標準

測試方法:黑盒測試

測試內容:同系統測試(功能…各類文件等)

b.2.2、按是否檢視**劃分 //重要

∑ 黑盒測試(black-box testing)

黑盒測試也稱功能測試,測試中把被測的軟體當成乙個黑盒子,不關心盒子的內部結構是什麼,只關心軟體的輸入資料與輸出資料。

∑ 白盒測試(white-box testing)

白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基於**的測試。白盒指的開啟盒子,去研究裡面的源**和程式結果。

∑ 灰盒測試(gray-box testing)

灰盒測試,是介於白盒測試與黑盒測試之間的一種測試,灰盒測試多用於整合測試階段,不僅關注輸出、輸入的正確性,同時也關注程式內部的情況。

b.2.3、按是否執行程式劃分

£ 靜態測試(static testing)

靜態方法是指不執行被測程式本身,僅通過分析或檢查源程式的語法、結構、過程、介面等來檢查程式的正確性。對需求規格說明書、軟體設計說明書、源程式做結構分析、流程圖分析、符號執行來找錯。阿旺分析如下

檢查項:**風格和規則審核;程式設計和結構的審核;業務邏輯的審核;走查、審查與技術複審手冊。

靜態質量:度量所依據的標準是iso9126。在該標準中,軟體的質量用以下幾個方面來衡量,即功能性(functionality)、可靠性(reliability)、可用性(usability)、有效性(efficiency)、可維護性(maintainability)、可移植性(portability)。

£ 動態測試(dynamic testing)

動態測試方法是指通過執行被測程式,檢查執行結果與預期結果的差異,並分析執行效率、正確性和健壯性等效能。這種方法由三部分組成:構造測試用例、執行程式、分析程式的輸出結果。

b.2.4、按是否檢視**劃分 //重要

∂ 手工測試(manual testing)

手工測試就是由人去乙個乙個的輸入用例,然後觀察結果,和機器測試相對應,屬於比較原始但是必須的乙個步驟。阿旺總結優缺點:

優點:自動化無法替代探索性測試、發散思維類無既定結果的測試。

缺點:執行效率慢,量大易錯。

∂ 自動化測試(automation testing)

就是在預設條件下執行系統或應用程式,評估執行結果,預先條件應包括正常條件和異常條件。簡單說自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。

自動化測試比如功能測試自動化、效能測試自動化、安全測試自動化。

通常所說的自動化是指功能測試自動化。

findyou看ai技術的興起發展,類似可預見工作都有可能會被偽ai代替。

b.2.5、其他彙總

€ 冒煙測試(smoke testing) //重要

在《微軟專案求生法則》一書第14章「構建過程」關於冒煙測試,就是開發人員在個人版本的軟體上執行目前的冒煙測試專案,確定新的程式**不出故障。

冒煙測試目的是確認軟體基本功能正常,冒煙測試的執行者是版本編譯人員。

現基本執行物件為測試人員,在正規測試乙個新版本之前,投入較少的人力和時間驗證基本功能,通過則測試准入。

€ 隨機測試(ad-hoc testing)

隨機測試主要是根據測試者的經驗對軟體進行功能和效能抽查。

根據測試說明書執行用例測試的重要補充手段,是保證測試覆蓋完整性的有效方式和過程。

隨機測試主要是對被測軟體的一些重要功能進行複測,也包括測試那些當前的測試用例(testcase)沒有覆蓋到的部分。

€ 安全測試(security testing) //重要

安全測試是在it軟體產品的生命週期中,特別是產品開發基本完成到發布階段,對產品進行檢驗以驗證產品符合安全需求定義和產品質量標準的過程 。

findyou覺現在對安全知識的普及,大家意識都提上來了。比如現在越來越多的不支援http協議,轉用https等。

€ 探索性測試(exploratory testing)

探索性測試可以說是一種測試思維技術。它沒有很多實際的測試方法、技術和工具,但是卻是所有測試人員都應該掌握的一種測試思維方式。探索性強調測試人員的主觀能動性,拋棄繁雜的測試計畫和測試用例設計過程,強調在碰到問題時及時改變測試策略。

探索性測試自動化暫時無法代替。findyou也無法被代替。

€ 回歸測試(regression testing)

回歸測試是指修改了舊**後,重新進行測試以確認修改沒有引入新的錯誤或導致其他**產生錯誤。自動回歸測試將大幅降低系統測試、維護公升級等階段的成本。

在整個軟體測試過程中占有很大的工作量比重,軟體開發的各個階段都會進行多次回歸測試。通過選擇正確的回歸測試策略來改進回歸測試的效率和有效性是很有意義的。

€ α測試(alpha testing) //重要

α測試是由乙個使用者在開發環境下進行的測試,也可以是公司內部的使用者在模擬實際操作環境下進行的測試。α測試的目的是評價軟體產品的flurps(即功能、局域化、可使用性、可靠性、效能和支援)。

大型通用軟體,在正式發布前,通常需要執行alpha和beta測試。α測試不能由程式設計師或測試員完成。

€ β測試(beta testing) //重要

beta測試是一種驗收測試。beta測試由軟體的終端使用者們在乙個或多個客房場所進行。

α測試與beta測試的區別:findyou

測試的場所不同:alpha測試是指把使用者請到開發方的場所來測試,beta測試是指在乙個或多個使用者的場所進行的測試。

alpha測試的環境是受開發方控制的,使用者的數量相對比較少,時間比較集中。beta測試的環境是不受開發方控制的,使用者數量相對比較多,時間不集中。

alpha測試先於beta測試執行。通用的軟體產品需要較大規模的beta測試,測試週期比較長。

軟體測試的概念及分類

一 軟體測試相關概念 1.軟體測試的定義 a.ieee 標準的定義 使用人工或自動的手段來執行或測定某個系統的過程,其目的在於檢驗 它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。b.g.j.myers給出的定義 程式測試是為了發現錯誤而執行程式的過程 2.軟體測試流程分析 2 1 軟體測...

效能測試的概念及其分類

一 效能測試 系統效能是乙個很大的概念,覆蓋面非常廣泛,軟體系統的效能包括執行效率 資源占用 系統穩定性 安全性 相容性 可靠性 可擴充套件性等。效能測試是為描述物件與效能相關的特徵並對其進行評價而實施和執行的一類測試。效能測試主要能過自動化的測試工具模擬多種正常 峰值以及異常負載條件來對系統的各項...

效能測試的概念及其分類

系統的效能是乙個很大的概念,覆蓋面非常廣泛,軟體系統的效能包括執行效率 資源占用 系統穩定性 安全性 相容性 可靠性 可擴充套件性等。效能測試是為描述測試物件與效能相關的特徵並對其進行評價而實施和執行的一類測試。效能測試主要通過自動化的測試工具模擬多種正常 峰值以及異常負載條件來對系統的各項效能指標...