第十三章 軟件測試方法與過程
1.判斷題
(1)白盒測試無須考慮模塊內部的執行過程和程序結構,只需了解模塊的功能即可。(×)
解析:白盒測試需要考慮模塊內部的執行過程和程序結構,以便設計測試用例和覆蓋代碼路徑。
(2)白盒測試是結構測試,主要以程序的內部邏輯為基礎設計測試用例。(√)
(3)單元測試通常應該先進行“人工走查”,再以白盒法為主,輔以黑盒法進行動態測試(×)
解析:單元測試通常應該先進行“人工走查”來確保代碼質量,然后以白盒測試為主,輔以黑盒測試進行動態測試。
(4)白盒測試法是一種靜態測試方法,主要用于模塊測試。(×)
解析:白盒測試法是一種動態測試方法,通過執行代碼路徑來檢查程序的正確性。
(5)在等價分類法中,為了提高測試效率,一個測試用例可以覆蓋多個無效等價類。(×)
解析:等價類劃分法中,每個測試用例應該只覆蓋一個等價類,以確保每個等價類都得到適當的測試。
(6)功能測試是系統測試的主要內容,檢查系統的功能和性能是否與需求規格說明相同。(×)
解析:
功能測試是系統測試的一部分,但并不是系統測試的主要內容。系統測試還包括其他類型的測試,如性能測試、安全測試等,以驗證系統的功能、性能和符合性等方面。
2.選擇題
(1)白盒法又稱為邏輯覆蓋法,主要用于(D)
A.確認測試
B.系統測試
C.α測試
D.單元測試
(2)以下哪種測試方法不屬于白盒測試技術(B)。
A.基本路徑測試
B.邊界值分析測試
C.循環覆蓋測試
D.條件測試
(3)白盒測試法是根據程序的(B)來設計測試用例的方法。
A.輸出數據
B.內部邏輯
C.功能
D.輸數據
(4)軟件的集成測試工作最好由(C)承擔,以提高集成測試的效果。
A.該軟件的設計人員
B.該軟件開發組的負責人員
D.該軟件的編程人員
C.不屬于該軟件開發組的軟件設計人員
(5)黑盒測試是從(B)觀點的測試,白盒測試是從(B)觀點的測試。
A.開發人員、管理人員
B.用戶、管理人員
D.開發人員、用戶
C.用戶、開發人員
(6)使用白盒測試方法時確定測試數據應根據(B)和指定的覆蓋標準
B.程序的復雜程度
A.程序的內部邏輯
D.程序的功能
C.程序的難易程度
(7)黑盒測試方法根據(B)設計測試用例。
A.程序的調用規則
B.軟件要完成的功能
C.模塊間的邏輯關系
D.程序的數據結構
(8)在軟件測試中,邏輯覆蓋標準主要用于(A).
D.回歸測試方法
A.白盒測試方法
法B.黑盒測試方法
C.灰盒測試方法
(9)集成測試的主要方法有兩個,一個是(B)一個是(B)。
B.等價類劃分方法、邊緣值分析方法
A.白盒測試方法、黑盒測試方法
D.因果圖方法、錯誤推測方法
C.漸增式測試方法、非漸增式測試方法
(10)單元測試主要針對模塊的幾個基本特征進行測試,該階段不能完成的測試是(A)。
B.局部數據結構
A.系統功能
C.重要的執行路徑
D.錯誤處理
3.簡答題
(1)什么是黑盒測試?有哪些常用的黑盒測試方法?
? 在黑盒測試里,測試人員把被測試的軟件系統看成是一個黑盒子,并不需要關心盒子的內部結構和內部特性,而只關注軟件產品的輸人數據和輸出結果,從而檢查軟件產品是否符合它的功能說明。
測試方法:
- 等價類劃分法
- 邊界值分析法
- 錯誤推測法
- 因果圖法
- 決策表法
- 場景法
(2)什么是白盒測試?有哪些常用的白盒測試方法?
? 白盒測試關注軟件產品的內部細節和邏輯結構,即把被測的程序看成是一個透明的盒子.
測試方法:
- 代碼檢查法
- 靜態結構分析法
- 程序插樁技術
- 邏輯覆蓋法
- 基本路徑法
(3)請對比白盒測試和黑盒測試。
? 白盒測試和黑盒測試是軟件測試中的兩種方法。通常在白盒測試中交叉著黑盒測試,黑盒測試中也交叉著白盒測試。
白盒測試:
- 關注系統的內部邏輯和代碼。
- 基于對系統內部的了解來設計測試用例,覆蓋代碼的各個路徑和邏輯分支。
- 需要測試人員具備編程和軟件開發知識。
黑盒測試:
- 關注系統的外部行為和功能。
- 基于對系統功能和接口的了解來設計測試用例,驗證系統的輸出和行為是否符合預期。
- 不需要測試人員了解系統的內部實現。
? 白盒測試側重于驗證系統的正確性和缺陷檢測,黑盒測試側重于驗證系統的功能和需求是否滿足。在實際測試中,通常會結合使用這兩種方法。
(4)請簡述靜態測試和動態測試的區別。
靜態測試和動態測試是軟件測試中的兩種方法。
靜態測試:
- 在代碼執行之前進行分析和評審。
- 針對文檔、源代碼等進行測試。
- 目的是發現潛在問題和提高軟件質量。
- 示例技術包括代碼審查、文檔審查、靜態分析工具等。
動態測試:
- 在代碼執行期間進行驗證。
- 針對軟件的功能、性能、安全等進行測試。
- 目的是檢測錯誤、評估系統性能。
- 示例技術包括單元測試、集成測試、性能測試、安全測試等。
靜態測試側重于分析和評審,動態測試側重于實際運行和驗證。通常會結合使用這兩種方法進行全面的軟件測試。
(5)單元測試、集成測試和系統測試各自的主要目標是什么?它們之間有什么不同?相互之間有什么關系?
單元測試目標:驗證最小可測試單元的功能。
集成測試目標:驗證多個單元之間的交互和協作。
系統測試目標:驗證整個軟件系統的完整功能、性能和一致性。
它們之間的關系:單元測試是構建塊,為集成測試提供基礎;集成測試為系統測試提供可靠的功能子集。
(6)什么是集成測試?非增量測試與增量測試有什么區別?增量測試如何組裝模塊?
? 集成測試是多個單元的聚合,許多單元組合成模塊,而這些模塊又聚合成程序的更大部分。集成測試是單元測試的邏輯擴展,它的最簡單形式是將兩個已經測試通過的單元組合成一個構件,并且測試它們之間的接口。集成測試是在單元測試的基礎上,測試將所有的軟件單元按照概要設計規則的要求組裝成模塊、子系統或系統的過程中,各部分功能是否達到或實現相應技術指標及要求的活動。
? 非增量集成是先分別測試每個模塊,再將所有模塊按照設計要求放在一起結合成所要的程序;增量集成是將下一個要測試的模塊同已經測試好的那些模塊結合起來進行測試,測試完后再將下一個應測試的模塊結合起來進行測試。
在增量測試中,可以采用自頂向下或自底向上的方法來組裝模塊。
(7)什么是調試?什么是測試?二者有何區別?
調試(Debugging)是通過修復程序中的錯誤和問題,確保程序按預期運行。
測試(Testing)是通過執行一系列操作和輸入,評估系統的行為、功能和性能。
區別:
- 目標:調試解決錯誤和問題,使程序正確運行;測試評估系統行為和符合性。
- 方法:調試追蹤代碼、檢查變量狀態;測試設計和執行測試用例、比較結果。
- 階段:調試發生在開發過程中;測試可以在不同階段進行。
- 關注點:調試關注程序內部錯誤;測試關注系統行為、功能和性能。
(8)軟件測試應該劃分為幾個階段?各個階段應重點測試的內容是什么?
軟件測試通常可以劃分為以下幾個階段,每個階段都有其特定的重點和目標:
- 單元測試(Unit Testing):
- 目標:測試最小的可測試單元,例如函數、方法或模塊。
- 重點內容:驗證單元的功能和邏輯正確性,檢查邊界條件、異常處理和各種路徑覆蓋。
- 集成測試(Integration Testing):
- 目標:測試多個模塊或組件之間的集成。
- 重點內容:驗證模塊之間的接口和交互是否正確,檢查數據傳遞、通信和協作。
- 系統測試(System Testing):
- 目標:測試整個軟件系統的功能、性能和可靠性。
- 重點內容:驗證系統的功能是否符合需求規格,檢查系統的完整性、兼容性和可用性。
- 驗收測試(Acceptance Testing):
- 目標:由最終用戶或客戶進行的測試,確認系統是否滿足預期需求。
- 重點內容:驗證系統是否符合用戶的期望和需求,檢查系統是否可交付和可接受。
4.應用題
(1)某程序功能說明書指出,該程序的輸入數據為每個學生的學號。其中,學號由以下
三個部分構成:
①人學年份:4位數字(1900~2999)之間的數字。
②專業編碼:0或1開頭的4位數字。
③序號:2位數字。
試用等價類劃分法設計測試用例。
使用等價類劃分法,我們可以將輸入數據劃分為有效等價類和無效等價類,以設計測試用例。根據給定的要求,我們可以進行如下劃分:
有效等價類:
- 人學年份:4位數字(1900~2999)之間的數字。
- 專業編碼:以0或1開頭的4位數字。
- 序號:2位數字。
無效等價類:
- 人學年份:小于1900的數字、大于2999的數字、非數字字符。
- 專業編碼:不以0或1開頭的4位數字、非數字字符。
- 序號:非2位數字、非數字字符。
根據上述劃分,我們可以選擇以下測試用例:
有效等價類測試用例:
- 輸入:1998, 0123, 05
預期結果:有效輸入,符合要求。 - 輸入:2025, 1123, 99
預期結果:有效輸入,符合要求。
無效等價類測試用例:
- 輸入:1800, 0123, 05
預期結果:無效輸入,人學年份不在有效范圍內。 - 輸入:3050, 0123, 05
預期結果:無效輸入,人學年份不在有效范圍內。 - 輸入:2025, 6123, 05
預期結果:無效輸入,專業編碼不符合要求。 - 輸入:2025, 023, 05
預期結果:無效輸入,專業編碼不符合要求。 - 輸入:2025, 0123, 5
預期結果:無效輸入,序號不是2位數字。 - 輸入:2025, 0123, 059
預期結果:無效輸入,序號不是2位數字。
通過設計這些測試用例,我們可以覆蓋各個等價類,并驗證程序對于不同等價類的處理是否正確。