自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳細(xì)講解單元測(cè)試的內(nèi)容

開發(fā) 測(cè)試
本文主要介紹的是單元測(cè)試的內(nèi)容,單元測(cè)試是軟件開發(fā)過(guò)程中重要的質(zhì)量保證活動(dòng),單元測(cè)試的質(zhì)量將很大程度上影響軟件產(chǎn)品的最終質(zhì)量。希望對(duì)你有幫助。

單元測(cè)試由一組獨(dú)立的測(cè)試構(gòu)成,每個(gè)測(cè)試針對(duì)軟件中的一個(gè)單獨(dú)的程序單元。單元測(cè)試并非檢查程序單元之間是否能夠合作良好,而是檢查單個(gè)程序單元行為是否正確。

在單元測(cè)試時(shí),測(cè)試人員根據(jù)詳細(xì)設(shè)計(jì)說(shuō)明書和源程序清單,了解到該模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試的測(cè)試用例,輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理和不合理的輸入都要能鑒別和響應(yīng)。這就要求對(duì)程序所有的局部和全局的數(shù)據(jù)結(jié)構(gòu)、外部接口和程序代碼的關(guān)鍵部分進(jìn)行桌面檢查和代碼審查。

在單元測(cè)試中進(jìn)行的測(cè)試工作主要在5個(gè)方面對(duì)被測(cè)模塊進(jìn)行檢查:

1. 模塊接口測(cè)試

在單元測(cè)試開始時(shí),應(yīng)該對(duì)通過(guò)所有被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試。如果數(shù)據(jù)不能正常地輸入及輸出,那么其他的全部測(cè)試都說(shuō)明不了問(wèn)題。Myers在關(guān)于軟件測(cè)試的書中為接口測(cè)試提出了一個(gè)檢查表:

  • 模塊輸入?yún)?shù)的數(shù)目是否與模塊形式參數(shù)數(shù)目相同。
  • 模塊各輸入的參數(shù)屬性與對(duì)應(yīng)的形參屬性是否一致。
  • 模塊各輸入的參數(shù)類型與對(duì)應(yīng)的形參類型是否一致。
  • 傳到被調(diào)用模塊的實(shí)參的數(shù)目是否與被調(diào)用模塊形參的數(shù)目相同。
  • 傳到被調(diào)用模塊的實(shí)參的屬性是否與被調(diào)用模塊形參的屬性相同。
  • 傳到被調(diào)用模塊的實(shí)參的類型是否與被調(diào)用模塊形參的類型相同。
  • 引用內(nèi)部函數(shù)時(shí),實(shí)參的次序和數(shù)目是否正確。
  • 是否引用了與當(dāng)前入口無(wú)關(guān)的參數(shù)。
  • 用于輸入的變量有沒(méi)有改變。
  • 在經(jīng)過(guò)不同模塊時(shí),全局變量的定義是否一致。
  • 限制條件是否以形參的形式傳遞。
  • 使用外部資源時(shí),是否檢查可用性并及時(shí)釋放資源,如內(nèi)存、文件、硬盤、端口等。

當(dāng)模塊通過(guò)外部設(shè)備進(jìn)行輸入/輸出操作時(shí),必須擴(kuò)展接口測(cè)試,附加如下的測(cè)試項(xiàng)目:

  • 文件的屬性是否正確。
  • Open與Close語(yǔ)句是否正確。
  • 規(guī)定的格式是否與I/O語(yǔ)句相符。
  • 緩沖區(qū)的大小與記錄的大小是否相配合。
  • 在使用文件前,文件是否打開。
  • 文件結(jié)束的條件是否安排好了。
  • I/O錯(cuò)誤是否檢查并做了處理。
  • 在輸出信息中是否有文字錯(cuò)誤。

2. 局部數(shù)據(jù)結(jié)構(gòu)測(cè)試

模塊的局部數(shù)據(jù)結(jié)構(gòu)是最常見的錯(cuò)誤來(lái)源,應(yīng)設(shè)計(jì)測(cè)試用例以檢查以下各種錯(cuò)誤:

  • 不正確或不一致的數(shù)據(jù)類型說(shuō)明。
  • 使用尚未賦值或尚未初始化的變量。
  • 錯(cuò)誤的初始值或錯(cuò)誤的默認(rèn)值。
  • 變量名拼寫錯(cuò)或書寫錯(cuò)—— 使用了外部變量或函數(shù)。
  • 不一致的數(shù)據(jù)類型。
  • 全局?jǐn)?shù)據(jù)對(duì)模塊的影響。
  • 數(shù)組越界。
  • 非法指針。

3. 路徑測(cè)試

檢查由于計(jì)算錯(cuò)誤、判定錯(cuò)誤、控制流錯(cuò)誤導(dǎo)致的程序錯(cuò)誤。由于在測(cè)試時(shí)不可能做到窮舉測(cè)試,所以在單元測(cè)試時(shí)要根據(jù)“白盒”測(cè)試和“黑盒”測(cè)試用例設(shè)計(jì)方法設(shè)計(jì)測(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。重要的執(zhí)行路徑指那些處在完成單元功能的算法、控制、數(shù)據(jù)處理等重要位置的執(zhí)行路徑,也指由于控制較復(fù)雜而易錯(cuò)的路徑,有選擇地對(duì)執(zhí)行路徑進(jìn)行測(cè)試是一項(xiàng)重要的任務(wù)。應(yīng)當(dāng)設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤,對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可發(fā)現(xiàn)大量的路徑錯(cuò)誤。

在路徑測(cè)試中,要檢查的錯(cuò)誤有:死代碼,錯(cuò)誤的計(jì)算優(yōu)先級(jí),算法錯(cuò)誤,混用不同類的操作,初始化不正確,精度錯(cuò)誤—— 比較運(yùn)算錯(cuò)誤、賦值錯(cuò)誤,表達(dá)式的不正確符號(hào)—— >、>=;=、==、!=,循環(huán)變量的使用錯(cuò)誤—— 錯(cuò)誤賦值以及其他錯(cuò)誤等。

比較操作和控制流向緊密相關(guān),測(cè)試用例設(shè)計(jì)需要注意發(fā)現(xiàn)比較操作的錯(cuò)誤:

  • 不同數(shù)據(jù)類型的比較。
  • 不正確的邏輯運(yùn)算符或優(yōu)先次序。
  • 因浮點(diǎn)運(yùn)算精度問(wèn)題而造成的兩值比較不等。
  • 關(guān)系表達(dá)式中不正確的變量和比較符。
  • “差 1 錯(cuò)”,即不正常的或不存在的循環(huán)中的條件。
  • 當(dāng)遇到發(fā)散的循環(huán)時(shí)無(wú)法跳出循環(huán)。
  • 當(dāng)遇到發(fā)散的迭代時(shí)不能終止循環(huán)。
  • 錯(cuò)誤的修改循環(huán)變量。

4. 錯(cuò)誤處理測(cè)試

錯(cuò)誤處理路徑是可能引發(fā)錯(cuò)誤處理的路徑及進(jìn)行錯(cuò)誤處理的路徑,錯(cuò)誤出現(xiàn)時(shí)錯(cuò)誤處理程序重新安排執(zhí)行路線,或通知用戶處理,或干脆停止執(zhí)行使程序進(jìn)入一種安全等待狀態(tài)。測(cè)試人員應(yīng)意識(shí)到,每一行程序代碼都可能執(zhí)行到,不能自己認(rèn)為錯(cuò)誤發(fā)生的概率很小而不去進(jìn)行測(cè)試。一般軟件錯(cuò)誤處理測(cè)試應(yīng)考慮下面幾種可能的錯(cuò)誤:

  • 出錯(cuò)的描述是否難以理解,是否能夠?qū)﹀e(cuò)誤定位。
  • 顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符;
  • 對(duì)錯(cuò)誤條件的處理正確與否;
  • 在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等。

在進(jìn)行錯(cuò)誤處理測(cè)試時(shí),要檢查如下內(nèi)容:

  • 在資源使用前后或其他模塊使用前后,程序是否進(jìn)行錯(cuò)誤出現(xiàn)檢查。
  • 出現(xiàn)錯(cuò)誤后,是否可以進(jìn)行錯(cuò)誤處理,如引發(fā)錯(cuò)誤、通知用戶、進(jìn)行記錄。
  • 在系統(tǒng)干預(yù)前,錯(cuò)誤處理是否有效,報(bào)告和記錄的錯(cuò)誤是否真實(shí)詳細(xì)。

5. 邊界測(cè)試

邊界測(cè)試是單元測(cè)試中最后的任務(wù)。軟件常常在邊界上出錯(cuò),例如,在一個(gè)程序段中有一個(gè)n次循環(huán),當(dāng)?shù)竭_(dá)第n次循環(huán)時(shí)就可能會(huì)出錯(cuò);或者在一個(gè)有n個(gè)元素的數(shù)組中,第n個(gè)元素時(shí)是很容易出錯(cuò)的。因此,要特別注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試。

此外,如果對(duì)模塊性能有要求的話,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響運(yùn)行時(shí)間的因素。下面是邊界測(cè)試的具體要檢查的內(nèi)容:

  • 普通合法數(shù)據(jù)是否正確處理。
  • 普通非法數(shù)據(jù)是否正確處理。
  • 邊界內(nèi)最接近邊界的(合法)數(shù)據(jù)是否正確處理。
  • 邊界外最接近邊界的(非法)數(shù)據(jù)是否正確處理等。
  • 在n次循環(huán)的第0次、第1次、第n次是否有錯(cuò)誤。
  • 運(yùn)算或判斷中取最大最小值時(shí)是否有錯(cuò)誤;
  • 數(shù)據(jù)流、控制流中剛好等于、大于、小于確定的比較值時(shí)是否出現(xiàn)錯(cuò)誤。

為了使單元測(cè)試能充分細(xì)致地展開,應(yīng)在實(shí)施單元測(cè)試中遵守下述要求:

1)語(yǔ)句覆蓋達(dá)到100%。

語(yǔ)句覆蓋指被測(cè)單元中每條可執(zhí)行語(yǔ)句都被測(cè)試用例所覆蓋。語(yǔ)句覆蓋是強(qiáng)度最低的覆蓋要求,要考慮語(yǔ)句覆蓋的意義,只要想象一下用一段從沒(méi)執(zhí)行過(guò)的程序控制龐大的飛行器升上天空,然后設(shè)法使它精確入軌,這種輕率簡(jiǎn)直就是荒唐。實(shí)際測(cè)試中,不一定能做到每條語(yǔ)句都執(zhí)行到。第一,存在“死碼”,即由于程序設(shè)計(jì)錯(cuò)誤在任何情況下都不可能執(zhí)行到的代碼。第二,不是“死碼”,但是由于要求的測(cè)試輸入及條件非常難達(dá)到或單元測(cè)試的條件所限,使得代碼沒(méi)有得到運(yùn)行。因此,在可執(zhí)行語(yǔ)句未得到執(zhí)行時(shí),要深入程序作詳細(xì)的分析。如果是屬于以上兩種情況,則可以認(rèn)為完成了覆蓋,但是對(duì)于后者,如果可能一定要盡量測(cè)試到,如果以上兩者都不是,則是因?yàn)闇y(cè)試用例設(shè)計(jì)不充分,需要再設(shè)計(jì)測(cè)試用例。

2)分支覆蓋達(dá)到100%。

分支覆蓋指分支語(yǔ)句取真值和取假值各一次,分支語(yǔ)句是程序控制流的重要處理語(yǔ)句,在不同流向上測(cè)試可以驗(yàn)證這些控制流向的正確性。分支覆蓋使這些分支產(chǎn)生的輸出都得到驗(yàn)證,提高測(cè)試的充分性。

3)覆蓋錯(cuò)誤處理路徑。

4)單元的軟件特性覆蓋。

軟件的特性包括功能、性能、屬性、設(shè)計(jì)約束、狀態(tài)數(shù)目、分支的行數(shù)等。

5)對(duì)試用額定數(shù)據(jù)值、奇異數(shù)據(jù)值和邊界值的計(jì)算進(jìn)行檢驗(yàn),用假想的數(shù)據(jù)類型和數(shù)據(jù)值運(yùn)行,測(cè)試排斥不規(guī)則輸入的能力。

單元測(cè)試通常是由編寫程序的人自己完成的,但是項(xiàng)目負(fù)責(zé)人應(yīng)當(dāng)關(guān)心測(cè)試的結(jié)果。所有的測(cè)試用例和測(cè)試結(jié)果都是模塊開發(fā)的重要資料,需妥善保存。

【編輯推薦】

  1. 軟件測(cè)試?yán)碚摚耗康?、周期、流?/span>
  2. 詳談軟件測(cè)試中的動(dòng)態(tài)測(cè)試
  3. 淺談軟件測(cè)試嵌入式單元測(cè)試技能
  4. 軟件測(cè)試中排錯(cuò)的基本方法
  5. 軟件測(cè)試接口測(cè)試的測(cè)試用例類型
責(zé)任編輯:于鐵 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-04 18:16:42

單元測(cè)試

2017-01-14 23:42:49

單元測(cè)試框架軟件測(cè)試

2023-07-26 08:58:45

Golang單元測(cè)試

2011-05-16 16:52:09

單元測(cè)試徹底測(cè)試

2017-01-14 23:26:17

單元測(cè)試JUnit測(cè)試

2017-01-16 12:12:29

單元測(cè)試JUnit

2011-06-14 15:56:42

單元測(cè)試

2020-08-18 08:10:02

單元測(cè)試Java

2022-05-12 09:37:03

測(cè)試JUnit開發(fā)

2017-03-23 16:02:10

Mock技術(shù)單元測(cè)試

2024-10-16 16:09:32

2021-05-05 11:38:40

TestNGPowerMock單元測(cè)試

2020-05-07 17:30:49

開發(fā)iOS技術(shù)

2012-05-21 09:41:54

XcodeiOS單元測(cè)試

2011-04-18 13:20:40

單元測(cè)試軟件測(cè)試

2013-06-04 09:49:04

Spring單元測(cè)試軟件測(cè)試

2017-02-23 15:59:53

測(cè)試MockSetup

2009-09-25 10:33:25

Hibernate單元

2010-01-28 15:54:19

Android單元測(cè)試

2020-09-30 08:08:15

單元測(cè)試應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)