軟件測試都有什么???

文章目錄

  • 一、白盒測試(結構測試)
  • 二、黑盒測試(功能測試)
  • 三、灰盒測試
  • 四、其他測試類型
  • 五、覆蓋準則對比
  • 六、應用場景

軟件測試主要根據測試目標、技術手段和覆蓋準則進行分類。分為白盒測試、黑盒測試、灰盒測試及其他補充類型


一、白盒測試(結構測試)

基于代碼內部邏輯設計測試用例,關注程序結構和覆蓋準則:

  1. 語句覆蓋
    確保每條代碼語句至少執行一次。
  2. 分支(判定)覆蓋
    覆蓋代碼中所有分支(如 if-else 的所有可能結果)。
  3. 條件覆蓋
    覆蓋每個邏輯條件(如 a>0 && b<5 中的每個子條件)。
  4. 條件組合覆蓋
    覆蓋所有條件組合(如 a>0b<5 的真假組合)。
  5. 路徑覆蓋
    覆蓋代碼中所有可能的執行路徑(復雜度高,常用于關鍵模塊)。
  6. MC/DC(修正條件/判定覆蓋)
    航空領域常用,確保每個條件能獨立影響判定結果。

二、黑盒測試(功能測試)

基于需求規格設計用例,不關注代碼實現:

  1. 等價類劃分
    將輸入劃分為有效/無效類,每類選代表性用例。
  2. 邊界值分析
    針對輸入邊界(如最小值、最大值)設計用例。
  3. 決策表測試
    基于條件組合生成表格,覆蓋所有規則。
  4. 狀態轉換測試
    針對系統狀態遷移(如登錄失敗后的鎖定機制)。
  5. 因果圖分析
    將輸入條件與輸出結果關聯,生成邏輯組合。
  6. 錯誤猜測法
    基于經驗猜測易錯場景(如空輸入、超長字符串)。

三、灰盒測試

結合白盒與黑盒,部分了解內部邏輯:

  1. 基于模型的測試
    使用狀態機或流程圖生成用例。
  2. 接口測試
    驗證模塊間接口數據傳遞(如API參數校驗)。
  3. 日志與監控分析
    結合日志數據定位代碼問題。

四、其他測試類型

  1. 組合測試
    • Pairwise(配對測試):覆蓋參數兩兩組合,減少用例數量。
  2. 基于經驗的測試
    • 探索式測試:動態設計用例,依賴測試者直覺。
  3. 安全測試
    • 模糊測試(Fuzzing):輸入隨機/異常數據檢測漏洞。
  4. 自動化測試
    • 數據驅動測試:分離測試邏輯與數據。
    • 關鍵字驅動測試:用自然語言描述測試步驟。

五、覆蓋準則對比

覆蓋類型描述強度排序(低→高)
語句覆蓋每行代碼至少執行一次最低
分支覆蓋每個分支(如if結果)覆蓋高于語句
條件覆蓋每個子條件(如a>0)覆蓋可能低于分支覆蓋
條件組合覆蓋所有子條件組合覆蓋高(組合爆炸問題)
路徑覆蓋所有執行路徑覆蓋最高(但通常不可行)
MC/DC條件獨立影響判定結果航空標準,高于分支覆蓋

六、應用場景

  • 白盒測試:單元測試、代碼審查、高可靠性系統(如航空航天)。
  • 黑盒測試:功能驗證、用戶場景模擬、驗收測試。
  • 灰盒測試:集成測試、性能優化、接口驗證。

根據項目需求選擇合適的方法,通常需要組合多種策略以達到效率與覆蓋率的平衡。

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

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

相關文章

very_easy_sql(SSRF+SQL注入)

題目有一行提示&#xff1a; you are not an inner user, so we can not let you have identify~&#xff08;你不是內部用戶&#xff0c;所以我們不能讓你進行身份驗證&#xff09;聯想到可能存在SSRF漏洞&#xff0c;一般情況下&#xff0c;SSRF攻擊的目標是外網無法訪問的內…

國內外主流AI編程工具全方位對比分析(截至2025年5月)

一、國際主流工具對比 1. Windsurf&#xff08;Codeium公司&#xff09; 核心功能&#xff1a;代理型AI編程&#xff08;代碼導航/修改/命令執行&#xff09;、瀏覽器DOM訪問、網頁研究功能語言支持&#xff1a;70語言&#xff0c;包括Python/Java/JavaScript/Rust等[[22-23]…

ARP協議的工作原理

文章目錄 ARP協議的工作原理ARP報文&#xff08;以太網&#xff09;ARP高速緩存 ARP協議的工作原理 ARP協議的作用是實現任意網絡層地址到任意物理地址轉換。工作原理是&#xff1a; 主機向自己所在網絡廣播一個ARP請求&#xff0c;該請求包含目標機器的網絡地址。處于該網絡…

【小知識酷】《Matlab》考點精簡

在線編譯器 https://matlab.mathworks.com/?elqsidumic49viv8wu5r6fckew 第1章 matlab基礎知識 第1節 輸出函數 1. 使用disp函數 disp函數可用于輸出變量的值或者字符串。 % 輸出字符串 disp(Hello, MATLAB!); %顯示Hello, MATLAB!% 輸出變量 x 10; disp(x); %顯示10% 輸出數…

碼蹄集——中庸之道(三個數比較)

MT1112 中庸之道 請編寫一個簡單程序&#xff0c;輸入3個整數&#xff0c;比較他們的大小&#xff0c;輸出中間的那個數 格式 輸入格式&#xff1a; 輸入整型&#xff0c;空格分隔 輸出格式&#xff1a;輸出整型 樣例 1 輸入&#xff1a;1 5 3 輸出&#xff1a;3 比較…

快速搭建一個vue前端工程

一、環境準備 1、安裝node.js 下載地址&#xff1a;Node.js 推薦版本如下&#xff1a; 2、檢查node.js版本 node -v npm -v 二、安裝Vue腳手架 Vue腳手架是Vue官方提供的標準化開發工具。vue官網&#xff1a;https://cn.vuejs.org/ 全局安裝vue/cli &#xff08;僅第一次…

React Native基礎環境配置

React Native基礎環境配置 1.引言2.React-Native簡介3.項目基礎環境搭建1.引言 感覺自己掌握的知識面還是有點太窄了,于是決定看看移動端的框架,搞個react搭一個后端管理項目,然后拿react-native寫個小的軟件,試著找個三方上架一下應用市場玩玩。畢竟不可能一直在簡歷上掛一…

PHP和Composer 安裝

Composer 是 PHP 的 依賴管理工具&#xff0c;就像&#xff1a; Node.js 用 npm Python 用 pip Java 用 maven 用來安裝和管理 PHP 項目中需要用到的第三方庫 安裝PHP可以理解成 Java解釋器 安裝PHP PHP For Windows: Binaries and sources Releaseshttps://windows.php.n…

API請求參數有哪些?

通用參數 app_key&#xff1a;應用的唯一標識&#xff0c;用于驗證應用身份&#xff0c;調用API時必須提供。 timestamp&#xff1a;請求時間戳&#xff0c;通常為當前時間的毫秒級時間戳&#xff0c;用于防止請求被重放攻擊。 format&#xff1a;返回數據的格式&#xff0c;…

并發筆記-條件變量(三)

文章目錄 背景與動機30.1 條件變量的定義與基本操作 (Definition and Routines)30.2 生產者/消費者問題 (Bounded Buffer Problem)30.3 覆蓋條件 (Covering Conditions) 與 pthread_cond_broadcast30.4 總結 背景與動機 到目前為止&#xff0c;我們已經學習了鎖 (Locks) 作為并…

stm32實戰項目:無刷驅動

目錄 系統時鐘配置 PWM模塊初始化 ADC模塊配置 霍爾接口配置 速度環定時器 換相邏輯實現 主控制循環 系統時鐘配置 啟用72MHz主頻&#xff1a;RCC_Configuration()設置PLL外設時鐘使能&#xff1a;TIM1/ADC/GPIO時鐘 #include "stm32f10x.h"void RCC_Configu…

LC-3 中常見指令

當然可以&#xff01;以下是 LC-3 中常見指令&#xff08;匯編格式&#xff09;與對應的二進制編碼格式 的總結表&#xff0c;通俗易懂地介紹每條指令的用途、操作碼&#xff08;opcode&#xff09;以及格式結構。 ? 常見 LC-3 指令與對應的二進制格式 指令名稱操作碼&#x…

深入解析Docker:核心架構與最佳實踐

文章目錄 前言一、Docker 解決了什么問題&#xff1f;二、Docker 底層核心架構2.1 Docker 引擎的分層架構2.2 鏡像的奧秘&#xff1a;聯合文件系統&#xff08;UnionFS&#xff09;2.3 容器隔離的核心技術2.3.1 命名空間2.3.2 控制組&#xff08;Cgroups&#xff09;2.3.3 內核…

從零打造企業級Android木馬:數據竊取與遠程控制實戰

簡介 木馬病毒已從簡單的惡意軟件演變為復雜的攻擊工具,尤其在2025年企業級攻擊中,木馬病毒正成為黑客組織的主要武器之一。 本文將深入探討如何制作具備數據竊取和遠程控制功能的Android木馬,從基礎原理到企業級防御繞過技術,同時提供詳細的代碼實現,幫助開發者理解木馬…

ES常識5:主分詞器、子字段分詞器

文章目錄 一、主分詞器&#xff1a;最基礎的文本處理單元主分詞器的作用典型主分詞器示例 二、其他類型的分詞器&#xff1a;解決主分詞器的局限性1. 子字段分詞器&#xff08;Multi-fields&#xff09;2. 搜索分詞器&#xff08;Search Analyzer&#xff09;3. 自定義分詞器&a…

【第三十五周】Janus-pro 技術報告閱讀筆記

Janus-Pro 摘要Abstract文章信息引言方法Janus 架構Janus 訓練Janus-Pro 的改進 實驗結果總結 摘要 本篇博客介紹了Janus-Pro&#xff0c;這是一個突破性的多模態理解與生成統一模型&#xff0c;其核心思想是通過解耦雙路徑視覺編碼架構解決傳統方法中語義理解與像素生成的任務…

MySQL 數據操縱與數據庫優化

MySQL數據庫的DML 一、創建&#xff08;Create&#xff09; 1. 基本語法 INSERT INTO 表名 [(列名1, 列名2, ...)] VALUES (值1, 值2, ...); 省略列名條件&#xff1a;當值的順序與表結構完全一致時&#xff0c;可省略列名&#xff08;需包含所有字段值&#xff09;批量插…

(9)被宏 QT_DEPRECATED_VERSION_X_6_0(“提示內容“) 修飾的函數,在 Qt6 中使用時,會被編譯器提示該函數已過時

&#xff08;1&#xff09;起因是看到 Qt 的官方源代碼里有這樣的寫法&#xff1a; #if QT_DEPRECATED_SINCE(6, 0) //里面的都是廢棄的成員函數QT_WARNING_PUSHQT_WARNING_DISABLE_DEPRECATEDQT_DEPRECATED_VERSION_X_6_0("Use the constructor taking a QMetaType inst…

【bibtex4word】在Word中高效轉換bib參考文獻,Texlive環境安裝bibtex4word插件

前言 現已退出科研界&#xff0c;本人水貨一個。希望幫到有緣人 本篇關于如何將latex環境中的參考文獻bib文件轉化為word&#xff0c;和一些踩坑記錄。 可以看下面的資料進行配置&#xff0c;后面的文字是這些資料的補充說明。 參考文章&#xff1a;https://blog.csdn.net/g…

Python 自動化腳本開發秘籍:從入門到實戰進階(6/10)

摘要&#xff1a;本文詳細介紹了 Python 自動化腳本開發的全流程&#xff0c;從基礎的環境搭建到復雜的實戰場景應用&#xff0c;再到進階的代碼優化與性能提升。涵蓋數據處理、文件操作、網絡交互、Web 測試等核心內容&#xff0c;結合實戰案例&#xff0c;助力讀者從入門到進…