江陰做網(wǎng)站百度秒收錄軟件工具
一、學(xué)習(xí)目的與要求
本章對(duì)單元測(cè)試進(jìn)行了詳細(xì)的介紹。通過(guò)本章的學(xué)習(xí),應(yīng)掌握單元測(cè)試的概念,了解單元測(cè)試的誤區(qū),掌握單元測(cè)試的策略、分析方法和用例設(shè)計(jì)方法。
二、考核知識(shí)點(diǎn)與考核目標(biāo)
(一)單元測(cè)試的概念(次重點(diǎn))
- 理解:單元測(cè)試的概念
- 定義: 是在軟件開(kāi)發(fā)過(guò)程中要進(jìn)行的最低價(jià)級(jí)別的測(cè)試活動(dòng),或者說(shuō)是針對(duì)軟件設(shè)計(jì)的最小單位—程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。
- 目的:發(fā)現(xiàn)每個(gè)程序模塊內(nèi)部可能存在的差錯(cuò)
- 步驟:靜態(tài)檢查和動(dòng)態(tài)執(zhí)行跟蹤
- 目標(biāo):驗(yàn)證開(kāi)發(fā)人員所編寫(xiě)的代碼是否可以按照其所設(shè)想的方式執(zhí)行并產(chǎn)生符合預(yù)期值的結(jié)果
- 與集成測(cè)試的區(qū)別
類別 | 單元測(cè)試 | 系統(tǒng)測(cè)試 |
---|---|---|
對(duì)象不同 | 詳細(xì)設(shè)計(jì) | 概要設(shè)計(jì) |
方法不同 | 白盒測(cè)試 | 黑盒測(cè)試 |
內(nèi)容不同 | 模塊內(nèi)程序邏輯、功能測(cè)試 | 驗(yàn)證各個(gè)接口、模塊組合是否達(dá)到預(yù)期 |
目的相同 | 發(fā)現(xiàn)開(kāi)發(fā)過(guò)程的錯(cuò)誤 |
- 與系統(tǒng)測(cè)試的區(qū)別
類別 | 單元測(cè)試 | 系統(tǒng)測(cè)試 |
---|---|---|
對(duì)象不同 | 詳細(xì)設(shè)計(jì) | 需求規(guī)格說(shuō)明書(shū) |
層次不同 | 早期測(cè)試 | 后期測(cè)試 |
性質(zhì)不同 | 錯(cuò)誤容易定位,且可并行測(cè)試 | 難定位錯(cuò)誤 |
角度不同 | 開(kāi)發(fā)人員 | 用戶 |
(二)單元測(cè)試環(huán)境(一般)
- 理解:單元測(cè)試環(huán)境
- 驅(qū)動(dòng)模塊:相當(dāng)于被測(cè)模塊的主程序。它接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)模塊,最后輸出實(shí)測(cè)結(jié)果。
- 樁模塊:用以代替被測(cè)模塊調(diào)用的子模塊。樁模塊可以做少量的數(shù)據(jù)操作,不需要把子模塊所有功能都帶進(jìn)來(lái),但不允許什么事情也不做。
(三)單元測(cè)試策略(重點(diǎn))
- 理解:自頂向下策略
自頂向下的單元測(cè)試策略:
- 從頂層調(diào)用的單元做成樁模塊;
- 對(duì)第二層測(cè)試,使用上面已測(cè)試的單元做驅(qū)動(dòng)模塊;
- 依次類推,直到全部單元測(cè)試結(jié)束。
- 優(yōu)點(diǎn):在集成測(cè)試之前為系統(tǒng)提供早期的集成途徑,可以與詳細(xì)設(shè)計(jì)和編碼工作重疊進(jìn)行。
- 缺點(diǎn):被樁模塊控制,測(cè)試過(guò)程會(huì)越來(lái)越復(fù)雜
- 理解:自底向上策略孤立測(cè)試
自底向上的單元測(cè)試策略:
- 先對(duì)模塊調(diào)用的最底層模塊進(jìn)行測(cè)試,模擬調(diào)用該模塊的模塊為驅(qū)動(dòng)模塊;
- 其次,對(duì)上一層模塊進(jìn)行單元測(cè)試,用已經(jīng)被測(cè)試過(guò)的模塊做樁模塊,依次類推,直到全部單元測(cè)試結(jié)束。
- 優(yōu)點(diǎn):不需要單獨(dú)設(shè)計(jì)樁模塊
- 缺點(diǎn):過(guò)程會(huì)變復(fù)雜;周期會(huì)延長(zhǎng);維護(hù)成本會(huì)增加;頂層覆蓋率難以保證;不能與編碼,詳設(shè)同時(shí)進(jìn)行。
孤立測(cè)試的單元測(cè)試策略:
- 無(wú)需考慮每個(gè)模塊與其他模塊之間的關(guān)系,分別為每個(gè)模塊單獨(dú)設(shè)計(jì)樁模塊和驅(qū)動(dòng)模塊,逐一完成所有單元模塊的測(cè)試。
- 優(yōu)點(diǎn):簡(jiǎn)單,易操作,時(shí)間短,覆蓋率高,可以并行。
- 缺點(diǎn):成本高,需要設(shè)計(jì)多個(gè)樁模塊和驅(qū)動(dòng)模塊。
(四)單元測(cè)試分析(次重點(diǎn))
- 理解:單元測(cè)試分析
- 判斷得到的結(jié)果是否正確
- 判斷是否滿足所有的邊界條件
- 分析能否使用反向關(guān)聯(lián)檢查
- 分析能否使用其他手段來(lái)交叉檢查一下結(jié)果
- 分析是否可以強(qiáng)制一些錯(cuò)誤發(fā)生(工具:EasyMock)
- 分析模塊接口
- 分析局部數(shù)據(jù)結(jié)構(gòu)
- 分析獨(dú)立路徑
- 分析出錯(cuò)處理是否正確
(五)單元測(cè)試步驟(次重點(diǎn))
- 理解:單元測(cè)試步驟
- 準(zhǔn)備階段
1)程序員培訓(xùn)
2)測(cè)試人員培訓(xùn)
3)準(zhǔn)備環(huán)境
4)確認(rèn)詳設(shè)
5)編寫(xiě)測(cè)試用例- 編制階段
1)程序單元編制,并調(diào)試檢查
2)更正錯(cuò)誤,修改源碼和測(cè)試用例- 代碼審查階段
1)靜態(tài)代碼審查
2)檢查算法邏輯
3)檢查模塊接口
4)檢查輸入?yún)?shù)
5)檢查接口調(diào)用
6)出錯(cuò)處理
7)檢查語(yǔ)句正確
8)檢查規(guī)范
9)檢查風(fēng)格統(tǒng)一
10)檢查特殊字符
11)檢查是否可優(yōu)化、算法效率是否最高
12)檢查結(jié)構(gòu)是否清晰
13)檢查注釋
14)檢查文檔- 單元測(cè)試階段
1)設(shè)計(jì)測(cè)試用例
2)執(zhí)行測(cè)試用例
3)提交執(zhí)行結(jié)果- 評(píng)審、提交階段
1)進(jìn)行同級(jí)評(píng)審
2)給出評(píng)審結(jié)果
3)提交配置庫(kù)
(六)單元測(cè)試用例設(shè)計(jì)(重點(diǎn))
- 應(yīng)用:單元測(cè)試用例設(shè)計(jì)
白盒測(cè)試覆蓋要求
- 所有獨(dú)立的執(zhí)行路徑必須覆蓋一次
- 判定真假情況至少覆蓋一次
- 循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體
- 測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性
黑盒測(cè)試覆蓋要求
- 功能是否實(shí)現(xiàn)
- 性能是否滿足要求
- 是否有可選的其他測(cè)試特性
測(cè)試用例關(guān)鍵元素
- 初始狀態(tài)聲明
- 被測(cè)單元的輸入
- 實(shí)際測(cè)試代碼
- 期望結(jié)果
三、習(xí)題
- 單元測(cè)試中用來(lái)模擬被測(cè)模塊調(diào)用者的模塊是()。A.父模塊
B.子模塊
C.驅(qū)動(dòng)模塊
D.樁模塊 - 不屬于單元測(cè)試內(nèi)容的是()。
A. 模塊接口測(cè)試
B. 局部數(shù)據(jù)結(jié)構(gòu)測(cè)試
C. 路徑測(cè)試
D. 用戶界面測(cè)試 - 在進(jìn)行單元測(cè)試時(shí),常用的方法是______。
A. 采用白盒測(cè)試,輔之以黑盒測(cè)試
B. 采用黑盒測(cè)試,輔之以白盒測(cè)試
C. 只使用白盒測(cè)試
D. 只使用黑盒測(cè)試 - 單元測(cè)試有哪些步驟?各個(gè)步驟有哪些實(shí)施內(nèi)容?
單元測(cè)試的步驟
- 通常單元測(cè)試在編碼階段進(jìn)行。
- 在源程序代碼編制完成,經(jīng)過(guò)評(píng)審和驗(yàn)證,確認(rèn)沒(méi)有語(yǔ)法錯(cuò)誤之后,就開(kāi)始進(jìn)行單元測(cè)試的測(cè)試用例設(shè)計(jì)。
- 利用設(shè)計(jì)文檔,設(shè)計(jì)可以驗(yàn)證程序功能、找出程序錯(cuò)誤的多個(gè)測(cè)試用例。
- 對(duì)于每一組輸入,應(yīng)有預(yù)期的正確結(jié)果。
- 模塊并不是一個(gè)獨(dú)立的程序,在考慮測(cè)試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測(cè)模塊相聯(lián)系的其它模塊。這些輔助模塊分為兩種:
a. 驅(qū)動(dòng)模塊:相當(dāng)于被測(cè)模塊的主程序。它接收測(cè)試數(shù)據(jù),把這些數(shù)據(jù)傳送給被測(cè)模塊,最后輸出實(shí)測(cè)結(jié)果。
b. 樁模塊:用以代替被測(cè)模塊調(diào)用的子模塊。樁模塊可以做少量的數(shù)據(jù)操作,不需要把子模塊所有功能都帶進(jìn)來(lái),但不允許什么事情也不做。- 被測(cè)模塊、與它相關(guān)的驅(qū)動(dòng)模塊及樁模塊共同構(gòu)成了一個(gè)“測(cè)試環(huán)境”。
單元測(cè)試內(nèi)容
- 模塊接口測(cè)試:對(duì)通過(guò)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。為此,對(duì)模塊接口,包括參數(shù)表、調(diào)用子模塊的參數(shù)、全程數(shù)據(jù)、文件輸入/輸出操作都必須檢查。局部數(shù)據(jù)結(jié)構(gòu)測(cè)試:設(shè)計(jì)測(cè)試用例檢查數(shù)據(jù)類型說(shuō)明、初始化、缺省值等方面的問(wèn)題,還要查清全程數(shù)據(jù)對(duì)模塊的影響。
- 路徑測(cè)試:選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量路徑錯(cuò)誤。
- 錯(cuò)誤處理測(cè)試:檢查模塊的錯(cuò)誤處理功能是否包含有錯(cuò)誤或缺陷。例如,是否拒絕不合理的輸入;出錯(cuò)的描述是否難以理解、是否對(duì)錯(cuò)誤定位有誤、是否出錯(cuò)原因報(bào)告有誤、是否對(duì)錯(cuò)誤條件的處理不正確;在對(duì)錯(cuò)誤處理之前錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等。
- 邊界測(cè)試:要特別注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試。
此外,如果對(duì)模塊運(yùn)行時(shí)間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。這類信息對(duì)進(jìn)行性能評(píng)價(jià)是十分有用的。單元測(cè)試的優(yōu)點(diǎn):
- 它是一種驗(yàn)證行為。
程序中的每一項(xiàng)功能都是測(cè)試來(lái)驗(yàn)證它的正確性。它為以后的開(kāi)發(fā)提供支援。就算是開(kāi)發(fā)后期,我們也可以輕松的增加功能或更改程序結(jié)構(gòu),而不用擔(dān)心這個(gè)過(guò)程中會(huì)破壞重要的東西。而且它為代碼的重構(gòu)提供了保障。這樣,我們就可以更自由的對(duì)程序進(jìn)行改進(jìn)。- 它是一種設(shè)計(jì)行為。
編寫(xiě)單元測(cè)試將使我們從調(diào)用者觀察、思考。特別是先寫(xiě)測(cè)試(test-first),迫使我們把程序設(shè)計(jì)成易于調(diào)用和可測(cè)試的,即迫使我們解除軟件中的耦合。- 它是一種編寫(xiě)文檔的行為。
單元測(cè)試是一種無(wú)價(jià)的文檔,它是展示函數(shù)或類如何使用的最佳文檔。這份文檔是可編譯、可運(yùn)行的,并且它保持最新,永遠(yuǎn)與代碼同步。- 它具有回歸性。
自動(dòng)化的單元測(cè)試避免了代碼出現(xiàn)回歸,編寫(xiě)完成之后,可以隨時(shí)隨地的快速運(yùn)行測(cè)試。
- 簡(jiǎn)述單元測(cè)試的目的和意義。
目的:是暴漏出失敗和錯(cuò)誤。失敗的可能性是可預(yù)期的,并且可以使用斷言來(lái)進(jìn)行檢查。
而錯(cuò)誤則是不可預(yù)期的問(wèn)題意義:
- 提前發(fā)現(xiàn)問(wèn)題并解決可以節(jié)約時(shí)間
- 是測(cè)試階段的基礎(chǔ),為后期的集成測(cè)試和系統(tǒng)測(cè)試做好準(zhǔn)備;
- 對(duì)單元獨(dú)立測(cè)試,容易發(fā)現(xiàn)問(wèn)題,減少成本。
- 單元測(cè)試策略主要有哪些?并試描述這些策略?
單元測(cè)試策略主要有三種方式:
- 自頂向下的單元測(cè)試策略:從頂層調(diào)用的單元做成樁模塊;對(duì)第二層測(cè)試,使用上面已測(cè)試的單元做驅(qū)動(dòng)模塊;依次類推,直到全部單元測(cè)試結(jié)束。
- 自底向上的單元測(cè)試策略:先對(duì)模塊調(diào)用的最底層模塊進(jìn)行測(cè)試,模擬調(diào)用該模塊的模塊為驅(qū)動(dòng)模塊;其次,對(duì)上一層模塊進(jìn)行單元測(cè)試,用已經(jīng)被測(cè)試過(guò)的模塊做樁模塊,依次類推,直到全部單元測(cè)試結(jié)束。
- 孤立測(cè)試的單元測(cè)試策略:無(wú)需考慮每個(gè)模塊與其他模塊之間的關(guān)系,分別為每個(gè)模塊單獨(dú)設(shè)計(jì)樁模塊和驅(qū)動(dòng)模塊,逐一完成所有單元模塊的測(cè)試。
- 什么是驅(qū)動(dòng)模塊?什么是樁模塊
單元本身無(wú)法構(gòu)成一個(gè)切實(shí)可運(yùn)行的程序系統(tǒng),所以我們需要為單元測(cè)試來(lái)開(kāi)發(fā)樁模塊和驅(qū)動(dòng)模塊,從而完成我們的單元測(cè)試目的,這是樁模塊和驅(qū)動(dòng)模塊的作用。
- 驅(qū)動(dòng)模塊是用來(lái)模擬被測(cè)試模塊的上一級(jí)模塊,相當(dāng)于被測(cè)模塊的主程序。它接收數(shù)據(jù),將相關(guān)數(shù)據(jù)傳送給被測(cè)模塊,啟用被測(cè)模塊,并打印出相應(yīng)的結(jié)果。
- 樁模塊(Stub) 是指模擬被測(cè)試的模塊所調(diào)用的模塊,而不是軟件產(chǎn)品的組成的部分。
- 單元測(cè)試是根據(jù)在詳細(xì)設(shè)計(jì)階段中產(chǎn)生的規(guī)格說(shuō)明進(jìn)行的。
- 在單元測(cè)試中, 樁模塊用來(lái)代替被測(cè)模塊的子模塊。
- 單元測(cè)試中用來(lái)模擬被測(cè)模塊調(diào)用者的模塊是
A父模塊
B子模塊
C驅(qū)動(dòng)模塊
D樁模塊 - 在軟件底層進(jìn)行的測(cè)試稱為()
A系統(tǒng)測(cè)試
B集成測(cè)試
C單元測(cè)試
D功能測(cè)試 - 典型的軟件測(cè)試過(guò)程模型是()
A. V模型、W模型、H模型、迭代模型
B. V模型、W模型、H模型、螺旋模型
C. X模型、W模型、H模型、V模型
D. X模型、W模型、H模型、增量模型 - 用戶在真實(shí)的工作環(huán)境中使用軟件,用于測(cè)試系統(tǒng)的用戶友好性等。這種測(cè)試是()
A. 集成測(cè)試
B. 系統(tǒng)測(cè)試
C. Alpha測(cè)試
D. Beta測(cè)試 - 幾乎沒(méi)有產(chǎn)品計(jì)劃、進(jìn)度安排和正規(guī)的開(kāi)發(fā)過(guò)程的軟件開(kāi)發(fā)模式是()
A大棒模式
B邊寫(xiě)邊改模式
C瀑布模式
D快速原型開(kāi)發(fā)模式 - 軟件測(cè)試不需要了解軟件設(shè)計(jì)的()
A功能
B內(nèi)部結(jié)構(gòu)
C處理過(guò)程
D條件 - 實(shí)際的邏輯覆蓋測(cè)試中,一般以( )為主設(shè)計(jì)測(cè)試用例。
A. 條件覆蓋
B. 判定覆蓋
C. 條件組合覆蓋
D. 路徑覆蓋 - 以下不屬于單元測(cè)試優(yōu)點(diǎn)的一項(xiàng)是()
A它是一種驗(yàn)證行為
B它是一種設(shè)計(jì)行為
C它是一種編寫(xiě)文檔的行為
D它是一種評(píng)估行為 - 為特定的目的而設(shè)計(jì)的一組測(cè)試輸入、執(zhí)行條件和預(yù)期的結(jié)果叫做測(cè)試用例
- 用于觸發(fā)被測(cè)模塊的軟件模塊叫做驅(qū)動(dòng)模塊_。