偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

解讀C++單元測試種種錯誤方法說明

開發(fā) 后端
為什么每一個 C/C++開發(fā)人員 不馬上對每一個類進行單元測試?設(shè)計和建立合適的測試用例。為了徹底地進行C++單元測試的結(jié)構(gòu)和功能性,你應(yīng)該設(shè)計兩種類型。

C++單元測試本身是一個標準,各種實現(xiàn)之間有區(qū)別,對標準的理解、執(zhí)行程度也不同。而C#、Java語言是由商業(yè)公司掌握的,在這方面很少有問題,但是看完了本篇文章你會有許多意想不到的東西啊。

 一、 單元測試能幫助客戶更準更全面地找到錯誤,顯著提高軟件質(zhì)量
上圖顯示了一個包含許多對象的應(yīng)用程序的測試模型,大橢圓表示應(yīng)用程序,小橢圓表示對象,箭
頭表示用戶輸入,紅星表示潛在的錯誤。

在集成測試中為了發(fā)現(xiàn)錯誤,我們希望通過不斷修改輸入,引發(fā)對象間的相互作用使得某對象引發(fā) 潛在的錯誤,但這無疑是有難度的。由于其難度,開發(fā)人員只能依賴應(yīng)用軟件的運行失敗來發(fā)現(xiàn)錯誤, 這樣不僅很難找到錯誤發(fā)生的準確位置,而且實際上還有大量的類沒有得到測試。

C++單元測試提供了一種更有效的發(fā)現(xiàn)錯誤的方法,它將應(yīng)用程序中的最小單元分離開,使得測試更接近錯誤,只要簡單地對每個最小單元進行獨立測試,就很容易地使全面準確地找到所有的程序錯誤成 為可能。

單元測試能夠在改善軟件質(zhì)量的同時大量削減開發(fā)時間和成本
由于在較高的層次上修改一個類可能會改變多個程序部件的設(shè)計和功能性,因此越遲發(fā)現(xiàn)問題,通
◆常就要修改越多的代碼。當修改的代碼量增加時,其他兩個因素也會隨之增加:
◆修改每一個錯誤所需的時間和費用  在代碼中引入新的錯誤的機會

 一次又一次的研究證明,隨著問題被檢測出來的時間的推遲,發(fā)現(xiàn)軟件錯誤所需的時間和成本會驚 人地增加。C++單元測試由于能夠更容易地找到錯誤,就會減少發(fā)現(xiàn)它們的時間和資源。 其次,由于你每完一個類,就能發(fā)現(xiàn)和改正其中的錯誤,你就不需要在以后花費大量時間重新了解和摸索。

最后,最重要的理由是由于類的相互作用和關(guān)聯(lián)性,在單元級修改一個類只會影響到原始的類,避 免了各個單元間的相互作用引發(fā)新的錯誤。因此單元測試能保證大大削減開發(fā)的時間和成本。#t#

基于上述信息,單元測試看上去就象一劑萬能藥 如果是這樣的話,為什么每一個 C/C++開發(fā)人員 不馬上對每一個類進行單元測試?就目前可以使用的技術(shù)來說,對 C/C++的單元測試是一件困難、煩瑣 和耗時的事情,沒有很好的工具來自動化這一過程,使得許多 C/C++開發(fā)人員望而生畏。

 執(zhí)行C++單元測試的第一步是是目標類變得可測。這需要兩個工作:
◆設(shè)計一個運行目標類的測試驅(qū)動程序
◆設(shè)計樁函數(shù),它們?yōu)楸粶y類所引用的任何外部資源返回值 建立一個測試驅(qū)動,需要建立一個新的類,除了C++單元測試原始類以外它不能用于任何其它目的。測試驅(qū) 動應(yīng)該具有下列特性:
◆一個指定設(shè)置和清除的標準方式
◆一個選擇個別測試和所有有效測試的方法
◆一個分析輸出的預期(或非預期)結(jié)果的機制
◆一個標準的錯誤報告形式

為了充分而正確地測試類,你需要設(shè)計一個能夠完全檢查被測類的測試驅(qū)動;若干次修改和重寫這 樣一個測試驅(qū)動是免不了的。一旦建立了測試驅(qū)動,你必須仔細檢查它不能包含任何錯誤。C++單元測試驅(qū)動中 的一個錯誤會破壞這個測試,但是你無法單獨測試一個類,你也不能測試測試驅(qū)動本身。

如果你的類引用任何還沒有準備好或不可訪問的外部資源(如外部文件、數(shù)據(jù)庫和 CORBA 對象等),你必須建立相應(yīng)的樁函數(shù),它們的返回值類似于這些實際的外部資源應(yīng)該返回的。

當建立這些樁函數(shù)時,你需要選擇樁函數(shù)的返回值,它們將影響程序的執(zhí)行路徑:
◆為了測試類的功能性必須執(zhí)行任何的路徑
◆足夠的路徑能夠提供徹底的測試覆蓋性

責任編輯:chenqingxiang 來源: CSDN
相關(guān)推薦

2010-01-13 09:38:17

C++單元測試

2010-01-15 14:10:42

C++單元測試

2010-01-28 15:54:19

Android單元測試

2012-06-18 10:03:46

Visual Stud

2022-08-05 09:30:57

單元測試C++

2011-05-16 16:52:09

單元測試徹底測試

2010-01-11 13:37:31

C++語言

2014-04-24 13:43:37

CC++單元測試框架

2023-07-26 08:58:45

Golang單元測試

2017-01-14 23:42:49

單元測試框架軟件測試

2009-12-23 15:03:52

WPF單元測試

2009-09-01 10:20:06

protected方法單元測試

2010-01-11 13:31:03

C++語言

2014-02-25 10:25:52

單元測試測試

2011-08-22 13:57:55

gtest

2024-10-16 16:09:32

2011-06-20 17:25:02

單元測試

2009-09-01 16:35:16

C#單元測試

2009-06-02 14:24:32

Hibernate單元測試HSQLDB

2017-01-14 23:26:17

單元測試JUnit測試
點贊
收藏

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