測試分類詳解

測試分類

一、按測試對象分類

1. 界面測試

1.1 測試內容介紹
界面測試驗證用戶界面(UI)的視覺呈現和交互邏輯,確保符合設計規范并提供良好的用戶體驗。測試內容包括:

  • 頁面布局和元素對齊
  • 字體、顏色和圖標一致性
  • 交互反饋(懸停、點擊狀態)
  • 導航邏輯和流程
  • 響應式設計(不同設備適配)

1.2 關鍵指標

  • 設計規范符合度 ≥ 95%
  • 操作路徑深度 ≤ 3步(核心功能)
  • 元素響應時間 ≤ 300ms
  • 無障礙標準(WCAG 2.1 AA級)

1.3 常見界面錯誤

  • 文字重疊
  • 截斷顯示
  • 不合理換行
  • 錯位元素
  • 焦點丟失
  • 狀態不一致
  • 未對齊元素

2. 可靠性測試

2.1 可靠性概念

可靠性指系統在規定條件下和時間內,無故障執行所需功能的能力。反映軟件的健壯性持續服務能力

2.2 關鍵指標

可靠性等級年故障時間適用場景
99.9%(三個9)≤8.76小時普通應用
99.99%(四個9)≤52.6分鐘企業系統
99.999%(五個9)≤5.26分鐘金融/醫療

2.3 常見可靠性問題

  • 服務不可用(HTTP 503)
  • 數據損壞或丟失
  • 事務處理中斷
  • 資源耗盡導致的崩潰
  • 級聯故障(一個組件故障引發系統崩潰)

3. 容錯性測試

驗證系統在異常輸入故障環境下的自我恢復能力:

  • 輸入容錯:非法字符、超長文本、空值提交
  • 環境容錯
    • 硬件故障(磁盤滿、內存不足)
    • 網絡中斷(丟包率>50%)
    • 依賴服務不可用
  • 恢復機制
    • 自動重試策略(如指數退避)
    • 事務回滾能力
    • 優雅降級方案

4. 文檔測試

國家有關計算機軟件產品開發文件編制指南中共有14 種文件,可分為3 大類。

  • 開發文件:可行性研究報告、軟件需求說明書、數據要求說明書、概要設計說明書、詳細設計說明書、數據庫設計說明書、模塊開發卷宗。
  • 用戶文件:用戶手冊、操作手冊,用戶文檔的作用:改善易安裝性;改善軟件的易學性與易用性;改善軟件可靠性;降低技術支持成本。
  • 管理文件:項目開發計劃、測試計劃、測試分析報告、開發進度月報、項目開發總結報告。

在實際的測試中,最常見的是用戶文件的測試,例如:手冊說明書等。也會有一些公司對需求文檔進行測試,來保證需求文檔的質量。

測試要點:

  • 步驟可執行性(按文檔操作能否達成目標)
  • 術語一致性(與UI和代碼保持一致)
  • 截圖與版本匹配
  • 多語言翻譯準確性
  • 搜索功能有效性(PDF/在線文檔)

5. 兼容性測試

跨維度兼容驗證矩陣:

維度測試范圍工具推薦
操作系統Windows/macOS/Linux/iOS/AndroidVirtualBox, Docker
瀏覽器Chrome/Firefox/Safari/EdgeBrowserStack
分辨率720P/1080P/4K/折疊屏Viewport Resizer
外設打印機/掃描儀/特殊輸入設備Device Farmer
API版本向后兼容3個歷史版本Postman, Swagger

6. 易用性測試

基于尼爾森十大原則的驗證:

  1. 系統狀態可見性 → 進度指示器
  2. 系統與現實匹配 → 符合領域術語
  3. 用戶控制與自由 → 可撤銷操作
  4. 一致性與標準 → 統一交互模式
  5. 防錯設計 → 危險操作確認
  6. 識別優于回憶 → 可視化操作路徑
  7. 靈活高效 → 支持快捷鍵
  8. 美學與簡約 → 信息層級清晰
  9. 容錯與恢復 → 錯誤指導方案
  10. 幫助文檔 → 上下文敏感幫助

7. 安裝卸載測試

關鍵測試場景矩陣:

階段WindowsmacOSLinuxMobile
安裝管理員/普通權限安裝應用商店/直接安裝源碼編譯/包管理器應用商店/側載
升級增量更新/覆蓋安裝版本兼容升級依賴沖突解決熱更新/強更
卸載控制面板卸載殘留檢測AppCleaner驗證包管理器卸載驗證清除用戶數據
回滾版本回退功能TimeMachine恢復快照還原歷史版本安裝

8. 安全測試

OWASP Top 10 2023核心測試點:

  • 注入攻擊
  • 認證失效
  • 敏感數據泄露
  • XXE漏洞
  • 訪問控制缺陷
  • 安全配置錯誤
  • XSS攻擊
  • 反序列化漏洞
  • 組件已知漏洞
  • 日志監控缺失

滲透測試工具鏈:

  • 偵察階段:Nmap, Shodan
  • 漏洞掃描:OWASP ZAP, Nessus
  • 滲透利用:Burp Suite, Metasploit
  • 后滲透:Cobalt Strike, Mimikatz

9. 性能測試

分層性能指標:

層級關鍵指標測試工具
前端FCP/LCP/FID/CLSLighthouse
接口TPS/響應時間P99/錯誤率JMeter, Locust
服務器CPU/內存/磁盤IO/網絡吞吐Prometheus, Grafana
數據庫查詢耗時/鎖等待/連接池SQL Profiler
全鏈路端到端延遲/事務成功率SkyWalking

性能反模式檢測:

  • 循環內數據庫查詢
  • 未分頁的大數據加載
  • 同步阻塞調用
  • 緩存穿透/雪崩
  • 線程死鎖

10. 內存泄漏測試

內存泄漏檢測方法論:

檢測方法
靜態分析
運行時監控
壓力測試
堆轉儲分析
Lint工具
Valgrind
Java VisualVM
長時間負載
MAT分析工具

內存泄漏典型場景:

  • 未釋放資源:數據庫連接、文件句柄
  • 監聽器未注銷:事件總線訂閱
  • 靜態集合膨脹:緩存無淘汰策略
  • 線程局部變量:未清理的ThreadLocal
  • 第三方庫缺陷:Native代碼泄漏

排查黃金法則:

  1. 監控內存趨勢(持續增長即泄漏)
  2. 對比GC前后內存快照
  3. 定位支配樹(Dominator Tree)中的異常對象
  4. 檢查引用鏈(Reference Chain)中的非預期持有者

二、按是否查看代碼分類

1. 黑盒測試

1.1 測試方法概覽
  • 等價類劃分
  • 邊界值分析
  • 因果圖/正交判定表
  • 正交測試法
  • 場景設計法
  • 錯誤猜測法
1.2 黑盒測試優缺點總結
優點缺點
? 無需了解內部實現細節? 無法覆蓋所有代碼路徑
? 貼近用戶實際使用場景? 可能遺漏邊界條件組合
? 早期即可開展測試? 測試用例設計依賴需求質量
? 適合功能驗證? 難以檢測深層次邏輯錯誤

2. 白盒測試

2.1 語句覆蓋(Statement Coverage)

定義:確保程序中的每條可執行語句至少被執行一次

測試用例設計

# 示例函數
def login(username, password):if username == "admin":  # 語句1print("管理員登錄")   # 語句2else:print("普通用戶登錄") # 語句3return True              # 語句4# 滿足語句覆蓋的用例
test_case1 = ("admin", "123456")  # 覆蓋語句1,2,4
test_case2 = ("user", "password") # 覆蓋語句1,3,4

覆蓋能力:?

缺陷檢測:無法發現條件分支中的邏輯錯誤

2.2 判定覆蓋(Decision Coverage)

定義:每個邏輯判斷的真假分支至少執行一次

測試用例設計

# 示例函數
def check_discount(amount, is_vip):if amount > 100 and is_vip:  # 判定點return 0.8return 1.0# 滿足判定覆蓋的用例
test_case1 = (150, True)   # 真分支
test_case2 = (50, False)   # 假分支

覆蓋能力:??

局限:無法檢測條件內部的錯誤(如 amount > 100 寫成 amount >= 100

2.3 條件覆蓋(Condition Coverage)

定義:每個子條件的真假取值至少出現一次

測試用例設計

# 示例函數
def grant_access(age, has_permission):if age >= 18 and has_permission:  # 條件1: age>=18, 條件2: has_permissionreturn Truereturn False# 條件覆蓋用例
test_case1 = (20, True)   # 條件1真, 條件2真
test_case2 = (15, False)  # 條件1假, 條件2假

覆蓋能力:???

特點:比判定覆蓋更細致,但可能遺漏判定組合

2.4 判定-條件覆蓋(Condition/Decision Coverage)

定義:同時滿足判定覆蓋和條件覆蓋

測試用例設計

# 接上例
test_case1 = (20, True)   # 真分支, 條件1真, 條件2真
test_case2 = (15, True)   # 假分支, 條件1假, 條件2真 → 覆蓋假分支
test_case3 = (20, False)  # 假分支, 條件1真, 條件2假 → 覆蓋假分支

覆蓋能力:????

價值:平衡了判定和條件的驗證深度

2.5 條件組合覆蓋(Multiple Condition Coverage)

定義:所有條件取值的可能組合都被覆蓋

測試用例設計

# 兩個條件,需4種組合
test_case1 = (20, True)   # 條件1真, 條件2真 → 真分支
test_case2 = (20, False)  # 條件1真, 條件2假 → 假分支
test_case3 = (15, True)   # 條件1假, 條件2真 → 假分支
test_case4 = (15, False)  # 條件1假, 條件2假 → 假分支

覆蓋能力:?????

代價:條件數n → 組合數2^n(指數級增長)

2.6 路徑覆蓋(Path Coverage)

定義:覆蓋程序中所有可能的執行路徑

測試用例設計

def process_order(status, amount):if status == "PAID":          # 分支1if amount > 1000:         # 分支2print("大額訂單審核")else:print("訂單直接發貨")else:print("等待付款")# 路徑覆蓋用例
test_case1 = ("PAID", 1500)  # 路徑:分支1真→分支2真
test_case2 = ("PAID", 500)   # 路徑:分支1真→分支2假
test_case3 = ("UNPAID", 0)   # 路徑:分支1假

覆蓋能力:?????

挑戰:循環結構可能導致路徑無限(需設置最大迭代)

2.7 白盒測試優缺點總結
優點缺點
? 高代碼覆蓋率(可達100%)? 需要編程能力和源碼訪問權限
? 發現深層次邏輯錯誤? 測試成本高(設計/維護)
? 適合關鍵模塊測試? 可能產生"過度測試"
? 支持自動化測試? 無法檢測遺漏功能

3. 灰盒測試

功能驗證
代碼洞察
黑盒
灰盒測試
白盒
接口測試
性能分析
安全掃描
3.1 典型應用場景
  1. API測試:基于接口文檔設計用例 + 監控代碼執行路徑
  2. 性能優化:負載測試(黑盒) + 代碼熱點分析(白盒)
  3. 滲透測試:模擬攻擊(黑盒) + 漏洞源碼定位(白盒)
3.2 灰盒測試優缺點總結
優勢挑戰
? 兼顧內外視角? 需要跨領域技能
? 高效定位缺陷根源? 測試設計復雜度高
? 適合微服務架構? 工具鏈整合成本
? 優化測試資源分配? 可能遺漏純黑盒場景

三、按開發階段分類

1. 單元測試

單元測試是對軟件組成單元進行測試。其目的是檢驗軟件基本組成單位的正確性。測試的對象是軟件設計的最小單位:模塊。

  • 測試階段:編碼后或者編碼前(TDD)
  • 測試對象:最小模塊
  • 測試人員:白盒測試工程師或開發工程師
  • 測試依據:代碼和注釋+詳細設計文檔
  • 測試方法:白盒測試
  • 測試內容:模塊接口測試、局部數據結構測試、路徑測試、錯誤處理測試、邊界測試

2. 集成測試

集成測試也稱聯合測試(聯調)、組裝測試,將程序模塊采用適當的集成策略組裝起來,對系統的接口及集成后的功能進行正確性檢測的測試工作。集成主要目的是檢查軟件單位之間的接口是否正確。

  • 測試階段:一般單元測試之后進行
  • 測試對象:模塊間的接口
  • 測試人員:白盒測試工程師或開發工程師
  • 測試依據:單元測試的模塊+概要設計文檔
  • 測試方法:黑盒測試與白盒測試相結合
  • 測試內容:模塊之間數據傳輸、模塊之間功能沖突、模塊組裝功能正確性、全局數據結構、單模塊缺陷對系統的影響

3. 系統測試

將軟件系統看成是一個系統的測試。包括對功能、性能以及軟件所運行的軟硬件環境進行測試。

  • 測試階段:集成測試通過后
  • 測試對象:完整可交付系統
  • 測試人員:專業測試團隊
  • 測試依據:需求規格說明書(SRS)
  • 測試方法:黑盒測試為主
  • 環境要求:功能、界面、可靠性、易用性、性能、兼容性、安全性等

4. 回歸測試

回歸測試是指修改了舊代碼后,重新進行測試以確認修改沒有引入新的錯誤或導致其他代碼產生錯誤。

5. 冒煙測試

冒煙測試的對象是每一個新編譯的需要正式測試的軟件版本,目的是確認軟件主要功能和核心流程正常,在正式進行系統測試之前執行。冒煙測試一般在開發人員開發完畢后提交給測試人員來進行測試時,先進行冒煙測試,保證基本功能正常,不阻礙后續的測試。

如果冒煙測試通過,則測試人員開始進行正式的系統測試,如果不通過,則測試人員可以讓開發人員重新修復代碼直到冒煙測試通過,再開始進行系統測試。

回歸測試和冒煙測試都屬于系統測試

6. 驗收測試

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

  • 測試階段:系統測試通過之后
  • 測試對象:整個系統(包括軟硬件)。
  • 測試人員:主要是最終用戶或者需求方。
  • 測試依據:用戶需求、驗收標準
  • 測試方法:黑盒測試
  • 測試內容:同系統測試(功能…各類文檔等)

四、按實施組織分類

1. Alpha測試

2. Beta測試

類型執行者典型活動
Alpha測試內部用戶受控環境模擬操作
Beta測試外部公測用戶真實環境收集反饋
UAT(用戶驗收測試)真實客戶生產環境驗證業務流程
合同驗收測試客戶+供應商SLA(服務等級協議)驗證

五、按是否運行代碼分類

1. 靜態測試

謂靜態測試(static testing)就是不實際運行被測軟件,而只是靜態地檢查程序代碼、界面或文檔中可能存在的錯誤的過程。不以測試數據的執行而是對測試對象的分析過程,僅通過分析或檢查源程序的設計、內部結構、邏輯、代碼風格和規格等來檢查程序的正確性。

2. 動態測試

動態測試(dynamic testing),指的是實際運行被測程序,輸入相應的測試數據,檢查實際輸出結果和預期結果是否相符的過程,所以判斷一個測試屬于動態測試還是靜態的,唯一的標準就是看是否運行程序。

六、按是否手工進行測試分類

1. 手工測試

手工測試就是由人去一個一個的輸入用例,然后觀察結果,和機器測試相對應,屬于比較原始但是必須的一個步驟。

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

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

2. 自動化測試

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

七、按地域分類

國際化測試、本地化測試

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/907648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/907648.shtml
英文地址,請注明出處:http://en.pswp.cn/news/907648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

打開NRODIC SDK編譯不過怎么處理,keil與segger studio

打開NRODIC SDK編譯不過怎么處理,以下是keil處理. 1,如圖,不要安裝安裝也不會過 2. 不要安裝點擊否 3.點擊確定后進來這個樣子 4.這里選擇這個勾,OK后就不會再有后面的pack_license 5.去掉勾后這里要選擇自己SDK對應的pack版本,我的是8.27.0 6.OK后彈出個界面也要反復選擇…

HarmonyOS ArkUI-X開發中的常見問題及解決方案

一、跨平臺編譯與適配問題 1. 平臺特定API不兼容 ?問題現象?:使用Router模塊的replaceUrl或startAbility等鴻蒙專屬API時,編譯跨平臺工程報錯cant support crossplatform application。 ?解決方案?: 改用ohos.router的跨平臺封裝API&a…

CSS篇-2

4. position 的值分別是相對于哪個位置定位的? position 屬性是 CSS 布局中一個非常核心的概念,它允許我們精確控制元素在文檔中的定位方式,從而脫離或部分脫離正常的文檔流。理解 position 的不同值以及它們各自的定位基準,是實…

設計模式:觀察者模式 - 實戰

一、觀察者模式場景 1.1 什么是觀察者模式? 觀察者模式(Observer Pattern)觀察者模式是一種行為型設計模式,用于定義一種一對多的依賴關系,當對象的狀態發生變化時,所有依賴于它的對象都會自動收到通知并更…

Axure中繼器交互完全指南:核心函數解析×場景實戰×避坑策略(懂得才能應用)

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝!如有幫助請訂閱專欄! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 主要內容:中繼器核心函數解析、場景方法詳解、注意事項、特殊函數區別 課程目標:提高中繼器的掌握…

【設計模式-4.5】行為型——迭代器模式

說明:本文介紹設計模式中,行為型設計模式之一的迭代器模式。 定義 迭代器模式(Iterator Pattern),也叫作游標模式(Cursor Pattern),它提供一種按順序訪問集合/容器對象元素的方法&…

鴻蒙OSUniApp自定義手勢識別與操作控制實踐#三方框架 #Uniapp

UniApp自定義手勢識別與操作控制實踐 引言 在移動應用開發中,手勢交互已經成為提升用戶體驗的重要組成部分。本文將深入探討如何在UniApp框架中實現自定義手勢識別與操作控制,通過實際案例幫助開發者掌握這一關鍵技術。我們將以一個圖片查看器為例&…

【數據結構】樹形結構--二叉樹

【數據結構】樹形結構--二叉樹 一.知識補充1.什么是樹2.樹的常見概念 二.二叉樹(Binary Tree)1.二叉樹的定義2.二叉樹的分類3.二叉樹的性質 三.二叉樹的實現1.二叉樹的存儲2.二叉樹的遍歷①.先序遍歷②.中序遍歷③.后序遍歷④.層序遍歷 一.知識補充 1.什…

從認識AI開始-----解密LSTM:RNN的進化之路

前言 我在上一篇文章中介紹了 RNN,它是一個隱變量模型,主要通過隱藏狀態連接時間序列,實現了序列信息的記憶與建模。然而,RNN在實踐中面臨嚴重的“梯度消失”與“長期依賴建模困難”問題: 難以捕捉相隔很遠的時間步之…

接地氣的方式認識JVM(一)

最近在學jvm,浮于表面的學了之后,發現jvm并沒有我想象中的那么神秘,這篇文章將會用接地氣的方式來說一說這些jvm的相關概念以及名詞解釋。 帶著下面兩個問題來閱讀 認識了解JVM大致有什么在代碼運行時的都在背后做了什么 JVM是個啥&#xf…

Next.js 15 與 Apollo Client 的現代集成及性能優化

Next.js 15 與 Apollo Client 的現代集成及性能優化 目錄 技術演進集成實踐性能優化應用案例未來趨勢 技術演進 Next.js 15 核心特性對開發模式的革新 Next.js 15 通過引入 App Router、服務器組件(Server Components)和客戶端組件(Clie…

無人機橋梁3D建模、巡檢、檢測的航線規劃

無人機橋梁3D建模、巡檢、檢測的航線規劃 無人機在3D建模、巡檢和檢測任務中的航線規劃存在顯著差異,主要體現在飛行高度、航線模式、精度要求和傳感器配置等方面。以下是三者的詳細對比分析: 1. 核心目標差異 任務類型主要目標典型應用場景3D建模 生成…

Hive數據傾斜問題深度解析與實戰優化指南

一、數據傾斜現象的本質與危害 數據傾斜是Hive在MapReduce計算過程中,?部分Key對應的數據量遠超其他Key,導致少數Reducer任務處理時間遠高于其他任務的性能瓶頸問題。典型表現為: ?作業進度卡在99%??:99%的Reducer已完成,剩余1%持續數小時?資源利用率失衡?:部分節…

VRRP 原理與配置:讓你的網絡永不掉線!

VRRP 原理與配置:讓你的網絡永不掉線! 一. VRRP 是什么,為什么需要它?二. VRRP 的核心概念三. VRRP 的工作原理四. 華為設備 VRRP 配置步驟 (主備模式)4.1 拓撲示例4.2 🛠 配置步驟 五. VRRP 配…

解決開發者技能差距:AI 在提升效率與技能培養中的作用

企業在開發者人才方面正面臨雙重挑戰。一方面,IDC 預測,到2025年,全球全職開發者將短缺400萬人;另一方面,一些行業巨頭已暫停開發者招聘,轉而倚重人工智能(AI)來滿足開發需求。這不禁…

痛點即爆點?如何挖掘客戶的痛點和需求?

銷售的核心在于精準洞察客戶需求與痛點,并運用專業能力為其提供定制化解決方案,從而消除客戶顧慮、解決問題,最終實現雙贏。而快速識別客戶痛點,不僅是成交的關鍵,更是建立專業形象、贏得客戶信任的核心能力。那么&…

云服務器如何自動更新系統并保持安全?

云服務器自動更新系統是保障安全、修補漏洞的重要措施。下面是常見 Linux 系統(如 Ubuntu、Debian、CentOS)和 Windows 服務器自動更新的做法和建議: 1. Linux 云服務器自動更新及安全維護 Ubuntu / Debian 系統 手動更新命令 sudo apt up…

fvm install 下載超時 過慢 fvm常用命令、flutter常用命令

Git 配置問題 確保 Git 使用的是 HTTPS,而不是 SSH。如果你有 .gitconfig,確保沒有配置奇怪的代理: git config --global --get http.proxy git config --global --get https.proxy如果有代理設置且不需要,取消代理:…

多語種OCR識別系統,引領文字識別新時代

在全球化與數字化深度融合的今天,語言障礙成為企業跨國協作、信息管理的一大挑戰。無論是跨國合同簽署、多語言檔案管理,還是跨境商務溝通,高效精準的文字識別技術已成為剛需。中安智能OCR多語種識別系統應運而生,憑借其強大的光學…