【正文】
DD) TestDriven Design是一種開(kāi)發(fā)風(fēng)格 ,它要求程序員做到: ? 在寫(xiě)產(chǎn)品代碼之前,先寫(xiě)它的單元測(cè)試 ( Unit Tests ) ? 沒(méi)有單元測(cè)試的 Class不允許作為產(chǎn)品代碼 ? 單元測(cè)試?yán)記Q定了如何寫(xiě)產(chǎn)品代碼 ? 不斷地成功運(yùn)行所有的單元測(cè)試?yán)? ? 不斷的完善單元測(cè)試?yán)? TestDriven Design是把需求分析,設(shè)計(jì),質(zhì)量控制量化 的過(guò)程! 11 為什么會(huì)出現(xiàn) TDD 現(xiàn)實(shí)中的 設(shè)計(jì)( Design) 和 測(cè)試( Testing) : ? 面對(duì)一個(gè)新的開(kāi)發(fā)任務(wù),往往第一個(gè)念頭就是如何去實(shí)現(xiàn)它呢? ? “好像是這樣做的” 感覺(jué)上差不多了。 TestFirst Programming不是通常意義上的測(cè)試技術(shù),它的目的也不是僅僅用來(lái)測(cè)試你的代碼。我們總希望自己的代碼可以漂亮,運(yùn)行的效率高,所以我們會(huì)不斷地去改進(jìn)。如何控制質(zhì)量呢?如何知道我的程序是否運(yùn)行呢?我會(huì)不會(huì)漏了什么?運(yùn)行一下 Unit Test。啊,你在做 OO設(shè)計(jì)了。而這時(shí)程序員是不知道(也不需要知道)里面的具體邏輯是如何實(shí)現(xiàn)的。 Unit Test測(cè)試的事程序,而不是一個(gè)想法。這就好像在程序員的任務(wù)和程序員之間簽訂了一個(gè)清晰的正式合同。它迫使程序員仔細(xì)思考要做什么和不要做什么(而不是如何具體的實(shí)現(xiàn) )。 : ; :; : 9 測(cè)試優(yōu)先的編程 在 寫(xiě)任何代碼之前,先寫(xiě)它的 Unit Test。 Functional Test 應(yīng)該按計(jì)劃的通過(guò)。測(cè)試的結(jié)果 應(yīng)該自動(dòng)分發(fā)給開(kāi)發(fā)人員和管理層。 : ; :; : 8 Nightly Test Nightly Test是軟件開(kāi)發(fā)中一個(gè)保證開(kāi)發(fā)之質(zhì)量的最有效的方法,也 是衡量軟件之質(zhì)量和開(kāi)發(fā)效率的最好的指標(biāo)。 Nightly Test是 XP中的 Continuous Test的一個(gè)練習(xí) (Practice)。 Regression Test的基礎(chǔ)是完整的自動(dòng)單元測(cè)試和功能測(cè)試。 6 什么是 Regression Test “Regression testing is the process of validating modified parts of the software and ensuring that no new errors are introduced into previously tested code.” 一句話(huà), Regresstion Test就是要重新測(cè)試所有的代碼和功能。 每個(gè)單元測(cè)試至少應(yīng)該有兩個(gè)測(cè)試?yán)?( Test Case ): ? Negative ? Positive 單元測(cè)試是軟件工程的一個(gè)關(guān)鍵部分。單元測(cè)試測(cè)試一小段代碼或一個(gè)足夠小的功能。 1 測(cè)試驅(qū)動(dòng)的設(shè)計(jì)和開(kāi)發(fā) ( Test Driven Design and Development ) 基礎(chǔ)篇 : ; :; : 2 你的代碼工作嗎? ? “這段代碼很簡(jiǎn)單,不可能出錯(cuò)” ? “我試過(guò)了,它是正常工作的呀” ? “ 我用 Debugger測(cè)試過(guò)了,我遍歷了所有程序分支,內(nèi)存中的值都是對(duì)的” 最好的方法是寫(xiě)一段另外的代碼來(lái)證明它 ,讓電腦來(lái)告訴 我們它是工作的。 : ; :; : 3 XP中的測(cè)試 ? Unit Test ? Acceptance Test( Functional Test ) ? Regression Test ? Nightly Test ? Stress Test 所有的測(cè)試都應(yīng)該獨(dú)立地自動(dòng)的運(yùn)行 4 什么是單元測(cè)試 (Unit Test) 單元測(cè)試是一段能夠放在批處理中自動(dòng)運(yùn)行的,用來(lái)測(cè)試 Classes的 程序。單元測(cè) 試程序調(diào)用這小段代碼或功能,并驗(yàn)證返回的結(jié)果是否符合預(yù)先設(shè) 定的結(jié)果。 5 什么是 Acceptance Test Acceptance Test are programs or scripts configured to test that packages (groups of clusters of classes) meet external requirements and achieve goals, such as performance. They include screendriving programs that test GUIs from without. Acceptance Test是對(duì)軟件做 EndToEnd的測(cè)試 ,衡量軟件是否符合 用戶(hù)需求的指標(biāo),也就是驗(yàn)收測(cè)試。 Regression Test和 Development Test的不同在于 Regression Test 需要重用已經(jīng)建立的所有的測(cè)試單元 (Unit Test )和功能測(cè)試套件(Functional Test)。 7 什么是 Nightly Test Nightly Test就是每晚自動(dòng)運(yùn)行所有的 Unit Test和 Acceptance Test。 Nightly Test可以準(zhǔn)確的