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

解讀C++單元測(cè)試種種錯(cuò)誤方法說(shuō)明

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

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

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

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

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

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

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

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

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

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

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

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

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

責(zé)任編輯:chenqingxiang 來(lái)源: CSDN
相關(guān)推薦

2010-01-13 09:38:17

C++單元測(cè)試

2010-01-15 14:10:42

C++單元測(cè)試

2010-01-28 15:54:19

Android單元測(cè)試

2022-08-05 09:30:57

單元測(cè)試C++

2012-06-18 10:03:46

Visual Stud

2011-05-16 16:52:09

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

2017-01-14 23:42:49

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

2014-04-24 13:43:37

CC++單元測(cè)試框架

2009-12-23 15:03:52

WPF單元測(cè)試

2009-09-01 10:20:06

protected方法單元測(cè)試

2023-07-26 08:58:45

Golang單元測(cè)試

2010-01-11 13:37:31

C++語(yǔ)言

2011-08-22 13:57:55

gtest

2014-02-25 10:25:52

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

2011-06-20 17:25:02

單元測(cè)試

2024-10-16 16:09:32

2010-01-11 13:31:03

C++語(yǔ)言

2009-09-01 16:35:16

C#單元測(cè)試

2009-06-02 14:24:32

Hibernate單元測(cè)試HSQLDB

2017-01-14 23:26:17

單元測(cè)試JUnit測(cè)試
點(diǎn)贊
收藏

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