qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          重構(gòu)——構(gòu)筑測試體系

           構(gòu)筑測試體系

            如果你想進(jìn)行重構(gòu),首要前提就是要擁有一個(gè)可靠的測試環(huán)境。

            “編寫優(yōu)良的測試程序,可以極大的提高我的編程速度,即使不進(jìn)行重構(gòu)也是如此。”

            1、自我測試代碼(Self-testing Code )的價(jià)值

            “Class 應(yīng)該包含他們自己的測試代碼。”

            “每個(gè)Class 都有一個(gè)測試函數(shù),并用它測試自己這個(gè) Class 。”

            確保所有的測試都完全自動(dòng)化,讓它們檢查自己的測試結(jié)果。

            只要寫好一點(diǎn)功能,就立即添加測試。

            一整組(a suite of )測試就是一個(gè)強(qiáng)大的“臭蟲”偵測器,能夠大大縮減查找“臭蟲”所需要的時(shí)間。

            “實(shí)際上,編寫測試代碼的最有用時(shí)機(jī)是在開始編程之前。當(dāng)你需要添加特性的時(shí)候,先寫相應(yīng)的測試代碼。聽起來離經(jīng)叛道,其實(shí)不然。填寫測試代碼其實(shí)就是問自己:添加這個(gè)功能需要做什么。編寫測試代碼還能使你把注意力集中于接口而非實(shí)現(xiàn)上頭(永遠(yuǎn)是件好事)。預(yù)先寫好的測試代碼也為你的工作按上一個(gè)明確的結(jié)束標(biāo)志:一旦測試代碼運(yùn)行正常,工作就可以結(jié)束了。”

            構(gòu)建自我測試的代碼。

            2、JUnit測試框架( Testing Framew )

            頻繁的運(yùn)行測試,每次編譯請(qǐng)把測試也考慮進(jìn)去,每天至少執(zhí)行每個(gè)測試一次。

            單元測試功能測試

            “每當(dāng)你接獲臭蟲提報(bào),請(qǐng)先撰寫一個(gè)單元測試來揭發(fā)這只臭蟲。”——如何揭發(fā)?這里需要根據(jù)報(bào)告準(zhǔn)確定位。單元測試會(huì)對(duì)此有幫助嗎?

            3、添加更多的測試

            “觀察Class 該做的所有事情,然后針對(duì)任何一項(xiàng)功能的任何一種可能失敗的情況,進(jìn)行測試。”

            “測試應(yīng)該是一種風(fēng)險(xiǎn)驅(qū)動(dòng)(risk driven )行為,測試的目的是希望找出現(xiàn)在或未來的可能出現(xiàn)的錯(cuò)誤。”

            “測試的訣竅是:測試你最擔(dān)心的部分。”

            這點(diǎn)和我目前的想法不大相同。我目前的想法是,測試要對(duì)程序做100% 的保證,所以,要測試程序可能行為的每一種情況,保證其正確性。按照我的想法,值域的設(shè)置和訪問函數(shù)也是要測試的。作者的意思是,測試代碼要用最低的成本,獲取最大的收益。這一點(diǎn),要我在實(shí)際的環(huán)境中進(jìn)行抉擇。

            “編寫不是十分完美的測試并實(shí)際運(yùn)行,好過對(duì)完美測試的無盡等待。”——我持懷疑態(tài)度。

            運(yùn)用測試用例前后執(zhí)行的函數(shù):tearDown 和 setUp,保證測試用例之間相互隔離,而非相互影響。

            做一個(gè)懶惰的程序員。

            考慮可能出錯(cuò)的邊界條件,把測試火力集中在那兒。

            “測試(優(yōu)先)可以調(diào)高編程速度”,這一點(diǎn)我要在實(shí)踐中驗(yàn)證一下,如果真是這樣,那我就要嘗試在我們部門推行這種方法。

            “當(dāng)測試達(dá)到一定的程度后,測試效益會(huì)呈現(xiàn)遞減態(tài)勢。”所以,你不要期望通過測試找出所有的bug ,而是要通過測試,找出絕大多數(shù)的 bug 。

            這個(gè)地方其實(shí)也符合“二八定律”:即20% 的測試可以找出 80% 的 bug,其余的 80% 的測試可以找出剩下的 20% 的 bug 。我們要做的,就是寫這 20% 的測試,而非 100% 的測試。

          posted on 2011-12-05 14:24 順其自然EVO 閱讀(179) 評(píng)論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2011年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 平乡县| 玛曲县| 南漳县| 渝北区| 方城县| 鸡东县| 墨脱县| 孟连| 天台县| 象州县| 河东区| 邢台市| 集安市| 昌邑市| 昆山市| 襄垣县| 沙河市| 达孜县| 桑植县| 平罗县| 蓝田县| 台江县| 咸丰县| 彭州市| 濉溪县| 尼勒克县| 怀来县| 江津市| 绥滨县| 洪湖市| 河间市| 连平县| 辛集市| 美姑县| 肇源县| 阳西县| 田阳县| 麦盖提县| 图木舒克市| 忻城县| 丹江口市|