《軟件設計師》復習筆記(11.5)——測試原則、階段、測試用例設計、調試

目錄

1. 測試基礎概念

2. 測試方法分類

3. 測試階段

真題示例:

題目1

題目2

題目3

4. 測試策略

5. 測試用例設計

?真題示例:?

6. 調試與度量

?真題示例:


1. 測試基礎概念

  • 定義:系統測試是為發現錯誤而執行程序的過程,成功的測試是發現尚未暴露的錯誤。
  • 測試原則
    • 盡早并持續測試
    • 避免由開發人員執行測試
    • 設計測試時需明確輸入和預期輸出
    • 包含有效和無效的測試用例
    • 檢查程序是否完成正確功能,避免多余行為
    • 嚴格遵循測試計劃,保存測試用例

2. 測試方法分類

  • 靜態測試(不運行程序):
    • 方法:人工檢查、代碼審查、代碼走查
    • 作用:可發現30%-70%的邏輯和編碼錯誤
  • 動態測試(運行程序):
    • 黑盒測試(功能測試):基于輸入輸出,不關注代碼結構
    • 白盒測試(結構測試):基于代碼邏輯設計用例

3. 測試階段

  1. 單元測試(模塊測試):
    • 測試對象:獨立模塊
    • 依據:詳細設計文檔
  2. 集成測試
    • 測試對象:模塊間接口
    • 依據:概要設計文檔
  3. 確認測試(驗證需求一致性):
    • 類型:內部測試、Alpha測試(開發環境)、Beta測試(用戶環境)、驗收測試
  4. 系統測試
    • 測試對象:完整系統
    • 內容:功能、性能、安全性等
  5. 配置項測試:驗證軟件配置項是否符合需求規格說明書(SRS)
  6. 回歸測試:確保變更后原有功能不受影響


真題示例:

題目1

軟件確認測試也稱為有效性測試,主要驗證( )。確認測試計劃通常是在需求分析階段完成的。

A. 系統中各個單元模塊之間的協作性

B. 軟件與硬件在實際運行環境中能否有效集成

C. 軟件功能、性能及其它特性是否與用戶需求一致

D. 程序模塊能否正確實現詳細設計說明中的功能、性能和設計約束等要求

題目2

根據用戶的參與程度不同,軟件確認測試通常包括( )。

A. 黑盒測試和白盒測試

B. 一次性組裝測試和增量式組裝測試

C. 內部測試、Alpha、Beta和驗收測試

D. 功能測試、性能測試、用戶界面測試和安全性測試

題目3

軟件測試一般分為兩個大類:動態測試和靜態測試。前者通過運行程序發現錯誤,包括( )等方法;后者采用人工和計算機輔助靜態分析的手段對程序進行檢測,包括( )等方法。

A. 邊界值分析、邏輯覆蓋、基本路徑 B. 桌面檢查、邏輯覆蓋、錯誤推測

C. 桌面檢查、代碼審查、代碼走查 D. 錯誤推測、代碼審查、基本路徑

  • 題目1:軟件確認測試主要是驗證軟件功能、性能及其它特性是否與用戶需求一致。A選項系統中各個單元模塊之間的協作性是集成測試關注的;B選項軟件與硬件在實際運行環境中能否有效集成是系統測試中可能涉及的硬件 - 軟件集成相關內容;D選項程序模塊能否正確實現詳細設計說明中的功能、性能和設計約束等要求是單元測試關注的。
  • 題目2:根據用戶參與程度不同,軟件確認測試通常包括內部測試、Alpha(在開發環境下,由部分用戶參與)、Beta(在用戶實際環境下,由大量用戶參與)和驗收測試(用戶最終對軟件進行驗收)。A選項黑盒測試和白盒測試是按照測試的方法分類;B選項一次性組裝測試和增量式組裝測試是集成測試的策略;D選項功能測試、性能測試、用戶界面測試和安全性測試是軟件測試的不同類型,并非按用戶參與程度分類。
  • 題目3:動態測試通過運行程序發現錯誤,包括邊界值分析、邏輯覆蓋、基本路徑等方法。靜態測試采用人工和計算機輔助靜態分析的手段對程序進行檢測,包括桌面檢查、代碼審查、代碼走查等方法。邏輯覆蓋是動態測試方法,錯誤推測雖然在測試中會用到,但不是靜態測試特有的典型方法。

4. 測試策略

  • 自底向上:從底層模塊開始,需驅動模塊
  • 自頂向下:從系統層開始,需樁模塊
  • 三明治策略:結合自底向上和自頂向下

5. 測試用例設計

  • 黑盒測試
    • 黑盒測試用例定義:將程序視為一個黑盒子,僅知曉輸入輸出,不了解內部代碼,據此設計測試用例。
    • 等價類劃分:依據某種特性對所有數據進行歸類,從每類數據中選取一個代表。設計原則為,新測試用例應盡可能多地覆蓋未被覆蓋的有效等價類,直至所有有效等價類被覆蓋;新測試用例應僅覆蓋一個未被覆蓋的無效等價類,直至所有無效等價類被覆蓋。
    • 邊界值劃分:選取每類數據的邊界值作為測試用例。邊界值一般是范圍的兩端值,以及在此范圍之外且與該范圍間隔最小的兩個值,如年齡范圍0 - 150的邊界值為0、150、 - 1、151。
    • 錯誤推測:憑借經驗推測可能產生問題的地方,以此作為測試用例進行測試,無固定方法。
    • 因果圖:通過一個結果反推原因的方法,需根據具體結果具體分析,無固定方法。
  • 白盒測試
    • 知道程序的代碼邏輯,按照程序的代碼語句,來設計覆蓋代碼分支的測試用例,覆蓋級別從低至高分為下面幾種:
    • 語句覆蓋(SC):執行所有語句
    • 判定覆蓋(DC):覆蓋所有判斷分支
    • 條件覆蓋(CC):每個條件取真/假
    • 條件判定組合覆蓋(CDC):同時滿足DC和CC
    • 路徑覆蓋:覆蓋所有可行路徑(最高級別)


?真題示例:?

招聘系統要求求職的人年齡在20歲到60歲之間(含),學歷為本科、碩士或者博士,專業為計算機科學與技術、通信工程或者電子工程。其中( )不是好的測試用例。

A. (20,本科, 電子工程) B. (18,本科, 通信工程)

C. (18, 大專, 電子工程) D. (25, 碩士, 生物學)

好的測試用例應該盡可能覆蓋各種邊界情況、有效等價類和無效等價類。招聘系統要求年齡在20 - 60歲(含),學歷為本科、碩士或博士,專業為計算機科學與技術、通信工程或電子工程。

  • (20,本科, 電子工程) 是完全符合招聘系統要求的有效測試用例。
  • (18,本科, 通信工程) 年齡不滿足要求,屬于無效等價類測試用例,可測試年齡邊界情況。
  • (18, 大專, 電子工程) 年齡和學歷都不滿足要求,而新測試用例應僅覆蓋一個未被覆蓋的無效等價類。
  • (25, 碩士, 生物學) 專業不滿足要求,屬于無效等價類測試用例,可測試專業的無效情況。

以下關于測試的敘述中,正確的是( )。

A.實際上,可以采用窮舉測試來發現軟件中的所有錯誤

B.錯誤很多的程序段在修改后錯誤一般會非常少

C.測試可以用來證明軟件沒有錯誤

D.白盒測試技術中,路徑覆蓋法往往能比語句覆蓋法發現更多的錯誤

  • 窮舉測試也叫完全測試,即把程序所有可能的執行路徑都檢查一遍的測試。但由于軟件系統的復雜性和輸入的多樣性,在實際中幾乎不可能采用窮舉測試來發現軟件中的所有錯誤
  • 錯誤很多的程序段往往存在更多的潛在問題和隱藏的邏輯錯誤,即使進行了修改,由于代碼結構本身的復雜性和可能存在的耦合性等問題,修改后不一定錯誤就非常少,甚至可能引入新的錯誤
  • 測試的目的是盡可能地發現軟件中的錯誤,而不能證明軟件沒有錯誤。即使經過大量的測試沒有發現錯誤,也不能說明軟件就沒有潛在的錯誤
  • 白盒測試中,語句覆蓋是指設計足夠的測試用例,使得程序中的每條語句至少被執行一次;路徑覆蓋是指設計足夠的測試用例,覆蓋程序中所有可能的路徑。路徑覆蓋比語句覆蓋的覆蓋程度更高,能測試更多的程序邏輯,往往能比語句覆蓋法發現更多的錯誤

采用白盒測試方法對下圖進行測試,設計了4個測試用例:①(x=0, y=3),②( x=1, y=2),③(x=-1, y=2),④(x=3,y=1)。至少需要測試用例①②才能完成(35)覆蓋,至少需要測試用例①②③或①②④才能完成(36)覆蓋。

A. 語句 B. 條件 C. 判定/條件 D. 路徑

A. 語句 B. 條件 C. 判定/條件 D. 路徑

(35)語句覆蓋

語句覆蓋是指設計足夠的測試用例,使得程序中的每條語句至少被執行一次。

  • 對于測試用例①?(x = 0, y = 3)
    • 第一個判斷條件?(x = 0) && (y > 2)?為真,執行語句?A
  • 對于測試用例②?(x = 1, y = 2)
    • 第一個判斷條件?(x = 0) && (y > 2)?為假,進入第二個判斷條件?(x < 1) || (y = 1),此條件也為假,執行語句?B。 通過測試用例①和②,程序中的語句?A?和語句?B?都能被執行到,滿足語句覆蓋。

(36)判定/條件覆蓋

判定/條件覆蓋要求設計足夠的測試用例,使得判斷中每個條件的所有可能取值至少出現一次,并且每個判定本身的所有可能判定結果(真/假)也至少出現一次。

  • 對于測試用例①?(x = 0, y = 3)
    • 第一個判斷條件?(x = 0) && (y > 2)?中,x = 0?為真,y > 2?為真,整個判定為真。
  • 對于測試用例②?(x = 1, y = 2)
    • 第一個判斷條件?(x = 0) && (y > 2)?中,x = 0?為假,y > 2?為假,整個判定為假;第二個判斷條件?(x < 1) || (y = 1)?中,x < 1?為假,y = 1?為假,整個判定為假。
  • 對于測試用例③?(x = -1, y = 2)
    • 第一個判斷條件?(x = 0) && (y > 2)?為假,進入第二個判斷條件?(x < 1) || (y = 1),其中?x < 1?為真,y = 1?為假,整個判定為真。 或者測試用例④?(x = 3, y = 1)
    • 第一個判斷條件?(x = 0) && (y > 2)?為假,進入第二個判斷條件?(x < 1) || (y = 1),其中?x < 1?為假,y = 1?為真,整個判定為真。


6. 調試與度量

  • 調試:定位錯誤原因并修復,方法包括:
    • 蠻力法、回溯法、原因排除法(演繹法、歸納法、二分法)
  • 軟件度量
    • 軟件的屬性分類
      • 外部屬性:面向管理者和用戶,可直接測量,一般表現為性能指標。
      • 內部屬性:屬于軟件產品本身的屬性,例如可靠性等,只能通過間接方式測量。
    • McCabe度量法
      • 定義:又稱為環路復雜度。
      • 計算方法:對于有向圖,若有向邊數為m,節點數為n,則環路復雜度為m - n + 2。
      • 記憶與應用要點:m和n含義不能混淆,可借助最簡單的環路作為特殊值來記憶公式;對于程序流程圖,每個分支邊(連線)是一條有向邊,每條語句(語句框)是一個頂點。


?真題示例:

下圖用白盒測試方法進行測試,圖中有( )條路徑,采用McCabe度量計算該程序圖的環路復雜性為( )

A、3 B、4 C、5 D、6
A、3 B、4 C、5 D、6

  1. 計算圖中的路徑數量
    • 路徑是從開始節點到結束節點的一條可執行的路線。
    • 路徑1:開始→語句1→判斷1(N)→結束。
    • 路徑2:開始→語句1→判斷1(Y)→語句2→判斷2(N)→語句3→語句6→結束。
    • 路徑3:開始→語句1→判斷1(Y)→語句2→判斷2(Y)→判斷3(N)→語句5→語句6→結束。
    • 路徑4:開始→語句1→判斷1(Y)→語句2→判斷2(Y)→判斷3(Y)→語句4→語句5→語句6→結束。
    • 所以圖中有4條路徑。
  2. 采用McCabe度量計算該程序圖的環路復雜性
    • V(G)=E - N+2P(E是流圖中邊的數量,N是流圖中節點的數量,P是強連通分量的數量,對于單連通圖,P = 1)。
    • 判斷節點和語句節點作為流圖節點,連接它們的線作為流圖的邊。數得節點數量N = 11,邊的數量E = 13。
    • 根據公式V(G)=E - N + 2P,因為是單連通圖P = 1,所以V(G)=13?- 11+2×1=4。
    • 也可以用另一種方法,即V(G)=判定節點數 + 1,圖中有3個判定節點(判斷1、判斷2、判斷3),所以V(G)=3 + 1=4。

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

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

相關文章

方案解讀:虛擬電廠標桿項目整體建設方案【附全文閱讀】

在電力市場背景下,傳統電力現貨市場存在電能定價不合理、分布式電源并網困難等問題。本虛擬電廠標桿項目旨在研究全時間尺度虛擬電廠智能管控關鍵技術,通過研制虛擬電廠控制器樣機、開發運行管理平臺,實現對分布式能源的合理優化配置。項目內容涵蓋虛擬調控、建設目標、建設…

PyTorch 深度學習實戰(37):分布式訓練(DP/DDP/Deepspeed)實戰

在上一篇文章中&#xff0c;我們探討了混合精度訓練與梯度縮放技術。本文將深入介紹分布式訓練的三種主流方法&#xff1a;Data Parallel (DP)、Distributed Data Parallel (DDP) 和 DeepSpeed&#xff0c;幫助您掌握大規模模型訓練的關鍵技術。我們將使用PyTorch在CIFAR-10分類…

OpenAI重返巔峰:o3與o4-mini引領AI推理新時代

引言 2025年4月16日&#xff0c;OpenAI發布了全新的o系列推理模型&#xff1a;o3和o4-mini&#xff0c;這兩款模型被官方稱為“迎今為止最智能、最強大的大語言模型&#xff08;LLM&#xff09;”。它們不僅在AI推理能力上實現了質的飛躍&#xff0c;更首次具備了全面的工具使…

【AI插件開發】Notepad++ AI插件開發實踐:支持配置界面

一、引用 此前的系列文章已基本完成了Notepad的AI插件的功能開發&#xff0c;但是此前使用的配置為JSON配置文件&#xff0c;不支持界面配置。 本章在此基礎上集成支持配置界面&#xff0c;這樣不需要手工修改配置文件&#xff0c;直接在界面上操作&#xff0c;方便快捷。 注…

Android12 ServiceManager::addService源碼解讀

源碼 Status ServiceManager::addService(const std::string& name, const sp<IBinder>& binder, bool allowIsolated, int32_t dumpPriority) {auto ctx mAccess->getCallingContext();// apps cannot add servicesif (multiuser_get_app_id(ctx.uid) >…

第十四節:實戰場景-何實現全局狀態管理?

React.createElement調用示例 Babel插件對JSX的轉換邏輯 React 全局狀態管理實戰與 JSX 轉換原理深度解析 一、React 全局狀態管理實現方案 1. Context API useReducer 方案&#xff08;輕量級首選&#xff09; // 創建全局 Context 對象 const GlobalContext createConte…

第四十八篇 電信行業數倉建設實戰指南:從架構設計到場景落地

目錄 一、云原生架構設計實戰1.1 計算存儲分離架構搭建1.2 實時離線融合方案 二、維度建模深度解析2.1 電信業務建模方法論2.2 典型模型設計示例 三、ETL流程優化實踐3.1 增量同步技術選型3.2 數據清洗規范 四、核心場景實現方案4.1 用戶流失預警模型 五、數據治理實施指南5.1 …

2025年山東燃氣瓶裝送氣工考試真題練習

燃氣瓶裝送氣工考試真題練習 單選題 1、液化石油氣主要成分是&#xff08; &#xff09;。 A. 甲烷 B. 丙烷、丁烷 C. 一氧化碳和氫氣 答案&#xff1a;B 2、燃氣鋼瓶搬運過程中&#xff0c;正確的做法是&#xff08; &#xff09;。 A. 滾動鋼瓶 B. 踢鋼瓶 C. 輕拿輕…

《AI大模型應知應會100篇》第24篇:限定輸出格式:如何讓AI回答更加結構化

第24篇&#xff1a;限定輸出格式&#xff1a;如何讓AI回答更加結構化 摘要 在日常使用AI的過程中&#xff0c;我們經常希望得到的不僅僅是“正確”的答案&#xff0c;更是一個清晰、規范、易于處理的回答。無論是生成數據分析報告、代碼片段&#xff0c;還是教學內容&#xff…

【MySQL】數據庫和表的操作詳解

目錄 一、數據庫&#xff1a; 1、查看數據庫&#xff1a; 2、創建數據庫&#xff1a; 3、刪除數據庫&#xff1a; 4、數據庫的編碼問題&#xff1a; 5、校驗規則對數據庫的影響&#xff1a; 6、修改數據庫&#xff1a; 7、庫的備份與恢復&#xff1a; 8、查看鏈接情況…

Docker--Docker鏡像原理

docker 是操作系統層的虛擬化&#xff0c;所以 docker 鏡像的本質是在模擬操作系統。 聯合文件系統&#xff08;UnionFS&#xff09; 聯合文件系統&#xff08;UnionFS&#xff09; 是Docker鏡像實現分層存儲的核心技術&#xff0c;它通過將多個只讀層&#xff08;Image Laye…

雙層Key緩存

雙層 Key 緩存是一種針對 緩存擊穿 和 雪崩問題 的優化方案&#xff0c;其核心思想是通過 主備雙緩存 的機制&#xff0c;確保在熱點數據過期時仍能提供可用服務&#xff0c;同時降低對數據庫的瞬時壓力。以下是其核心原理、實現細節及適用場景的深度解析&#xff1a; 一、核心…

力扣每日打卡 2176. 統計數組中相等且可以被整除的數對(簡單)

力扣 2176. 統計數組中相等且可以被整除的數對 簡單 前言一、題目內容二、解題方法1. 暴力解法2.官方題解官方也是暴力解法 前言 這是刷算法題的第十三天&#xff0c;用到的語言是JS 題目&#xff1a;力扣 2176. 統計數組中相等且可以被整除的數對(簡單) 一、題目內容 給你一…

云服務器和物理服務器

服務器&#xff0c;作為互聯網世界中數據存儲與處理的關鍵樞紐&#xff0c;其重要性不言而喻。在眾多服務器類型中&#xff0c;云服務器和物理服務器占據了主導地位&#xff0c;它們各自有著獨特的特點和應用場景。咱們就來深入探討一下這兩者的區別。

Kubernetes Pod 調度策略:從基礎到進階

文章目錄 環境Kubernetes 部署Kubernetes Pod 調度策略Kubernetes Pod 調度策略對照表調度流程經歷階段案例展示生成yaml文件默認調度節點選擇器為節點添加標簽編寫 Deployment 配置文件應用資源并查看調度結果 Node Affinity&#xff08;節點親和性&#xff09;為節點添加標簽…

SQLite、MySQL、SQL Server、Oracle 和 PostgreSQL 五種數據庫的區別

以下是 SQLite、MySQL、SQL Server、Oracle 和 PostgreSQL 五種主流關系型數據庫管理系統(RDBMS)的區別,從多個維度進行對比: 1. 架構與部署 SQLite(Structured Query Language Lite?): 嵌入式數據庫,無服務器架構。數據庫存儲在一個單一的磁盤文件中。部署簡單,適合輕量…

電路安全智控系統與主機安全防護系統主要功能是什么

電路安全智控系統被稱為電路安全用電控制系統。電路安全智控系統具備一系列強大且實用的功能。電路安全智控系統能夠對總電壓、總電流、總功率、總電能&#xff0c;以及各分路的電壓、電流、功率、電能和功率因素等進行全方位的監控。在大型工廠的電力分配中&#xff0c;通過對…

使用Lean 4和C#進行數學定理證明與邏輯推理

步驟1&#xff1a;安裝與配置環境 安裝Lean 4 訪問Lean官網或GitHub倉庫&#xff0c;按照指南安裝Lean 4及配套工具鏈&#xff08;如VS Code擴展&#xff09;。 設置C#開發環境 安裝.NET SDK及IDE&#xff08;如Visual Studio或Rider&#xff09;&#xff0c;確保C#開發環境正…

八股文---MySQl(3)

目錄 12.事務的特性是什么&#xff1f;可以詳細說一下嗎&#xff1f; 回答 13并發事務帶來哪些問題&#xff1f;怎么解決這些問題呢&#xff1f;MySQL的默認隔離級別是&#xff1f; 臟讀&#xff1a;一個事務讀到另外一個事務還沒有提交的數據。 不可重復讀&#xff1a;一個…

實驗五 內存管理實驗

實驗五 內存管理實驗 一、實驗目的 1、了解操作系統動態分區存儲管理過程和方法。 2、掌握動態分區存儲管理的主要數據結構--空閑表區。 3、加深理解動態分區存儲管理中內存的分配和回收。 4、掌握空閑區表中空閑區3種不同放置策略的基本思想和實現過程。 5、通過模擬程…