love fish大鵬一曰同風(fēng)起,扶搖直上九萬里

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          friends

          link

          最新評(píng)論

          讀 TDD 的總結(jié)

          TDD 的總結(jié)

          				
          						讀完TDD(測(cè)試驅(qū)動(dòng)開發(fā)),發(fā)現(xiàn)其中主要就是在反復(fù)說了這么兩件事情(也就是兩個(gè)簡單的規(guī)則):一、在寫任何代碼之前,寫一個(gè)會(huì)失敗的自動(dòng)測(cè)試程序,即單元測(cè)試;二、消除重復(fù)設(shè)計(jì),優(yōu)化設(shè)計(jì)結(jié)構(gòu),即重構(gòu)。整本書都圍繞著這兩個(gè)規(guī)則來進(jìn)行說明,告訴讀者到底要如何這樣做?又如何分階段應(yīng)用這些規(guī)則?這兩條簡單的規(guī)則可以運(yùn)用多深?
          				
          		
          				
          						第一部分通過一個(gè)簡單的實(shí)例來告訴讀者如何使用TDD,如何反復(fù)通過不可運(yùn)行/可運(yùn)行/重構(gòu)/不可運(yùn)行/可運(yùn)行/重構(gòu)來進(jìn)行開發(fā);第二部分告訴讀者如何使用單元測(cè)試,怎樣組織單元測(cè)試;第三部分則是將TDD分解成較小的步驟來進(jìn)行詳細(xì)說明,根據(jù)我對(duì)本書的理解,我認(rèn)為需要完全將TDD運(yùn)用到日常的開發(fā)行為中,則要按照以下非常細(xì)小的步驟進(jìn)行:
          				
          		

          1.?????? 獲得任務(wù)。即項(xiàng)目經(jīng)理安排的任務(wù)。任務(wù)往往不止一項(xiàng)。將它們寫入周工作計(jì)劃表或者月工作計(jì)劃表。

          2.?????? 選擇任務(wù)。每天開始工作之前,將今天將要解決的問題寫入工作計(jì)劃列表。并選擇自己最有把握完成的任務(wù)作為當(dāng)前任務(wù)。

          3.?????? 分析并分解任務(wù)。將當(dāng)前任務(wù)分解成一個(gè)個(gè)相對(duì)簡單的問題,分解的問題最好是能在十多分鐘之內(nèi)能完成,并將它們寫入工作列表。如:若要實(shí)現(xiàn)多幣種相加,則可以分解為:實(shí)現(xiàn)相同幣種之間的相加,不同幣種之間的互換,最后才能實(shí)現(xiàn)不同幣種之間的相加。

          4.?????? 寫測(cè)試列表。將分解后的問題所對(duì)應(yīng)的測(cè)試寫入測(cè)試列表。

          5.?????? 選擇測(cè)試。從測(cè)試列表中選擇自己認(rèn)為最有把握實(shí)現(xiàn)的一項(xiàng)。如:“同幣種相加”對(duì)我來說是最有把握實(shí)現(xiàn)的一項(xiàng),因此我最先來實(shí)現(xiàn)它,即先從它的測(cè)試程序開始編寫。

          6.?????? 編寫測(cè)試數(shù)據(jù)。寫一個(gè)容易讓人理解的必須實(shí)現(xiàn)的測(cè)試數(shù)據(jù)列表,盡量使用顯然數(shù)據(jù)。如:用 String 表示 IP 地址 "255.255.255.255" 轉(zhuǎn)換為 int ,在我們寫測(cè)試數(shù)據(jù)時(shí)應(yīng)這樣寫: (255 << 24) + (255 << 16) + (255 << 8) + 255 ,而不是寫“ -1 ”。

          7.?????? 編寫測(cè)試。選擇一項(xiàng)最容易讓測(cè)試通過的測(cè)試數(shù)據(jù)加入測(cè)試方法。斷言優(yōu)先,然后加入為了讓斷言通過編譯的一切準(zhǔn)備條件。

          8.?????? 運(yùn)行測(cè)試,不可運(yùn)行狀態(tài)。

          9.?????? 編寫方法注釋,把所有想到的該方法要實(shí)現(xiàn)的功能寫上。

          10.?? 編寫功能代碼,使之達(dá)到可運(yùn)行狀態(tài)。

          11.?? 重構(gòu),消除重復(fù)設(shè)計(jì)。

          12.?? 往測(cè)試方法中增加一個(gè)新的小測(cè)試。

          13.?? 運(yùn)行測(cè)試,不可運(yùn)行狀態(tài)。

          14.?? 修改功能代碼,使之達(dá)到可運(yùn)行狀態(tài)。

          15.?? 重構(gòu)。消除重復(fù)設(shè)計(jì)。

          16.?? 重復(fù) 12-15 。

          17.?? 當(dāng)無論如何也不能讓該測(cè)試通過的時(shí)候,認(rèn)真想一想是不是哪里出大問題了,如果實(shí)在想不出來的話,就將現(xiàn)有代碼扔掉,重新開始。

          18.?? 所有測(cè)試都運(yùn)行通過之后,仔細(xì)檢查所有代碼,看是否還有值得重構(gòu)的地方,并重構(gòu)。

          19.?? 提交 (check in)

          20.?? 再選擇測(cè)試列表中的下一個(gè)測(cè)試。重復(fù)以上步驟。

          21.?? 當(dāng)一天的工作結(jié)束時(shí),若有某個(gè)任務(wù)未完成,則留下一個(gè)不完整測(cè)試,以便于次日能迅速回憶起當(dāng)時(shí)寫該代碼時(shí)的想法,并接著寫下去。

          posted on 2007-01-18 15:54 liaojiyong 閱讀(343) 評(píng)論(0)  編輯  收藏 所屬分類: Testing

          主站蜘蛛池模板: 洮南市| 广宁县| 孟津县| 固镇县| 吉林省| 罗山县| 涿鹿县| 无为县| 南川市| 汽车| 张家口市| 乐至县| 福海县| 赞皇县| 伊春市| 醴陵市| 上蔡县| 龙岩市| 芜湖市| 朝阳区| 涿州市| 仪陇县| 库车县| 茂名市| 武冈市| 多伦县| 绿春县| 全椒县| 长白| 远安县| 丰台区| 新干县| 白河县| 海伦市| 博罗县| 梁河县| 马边| 普兰店市| 昌乐县| 新余市| 宝丰县|