• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    追求代碼質量: 親身體驗行為驅動開發

    發布: 2009-5-22 10:58 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 60次 | 進入軟件測試論壇討論

    領測軟件測試網   測試驅動的開發(TDD)在實踐中是一個很好的思想,但有些開發人員還不能接受 “測試” 這個詞所產生的概念上的驟變。在本文中,學習一種更自然的方法,將 TDD 元素整合到編程實踐中。開始采用行為驅動開發(BDD)(通過 JBehave),親身體驗將注意力集中在程序行為(而不是輸出)時獲得的效果。
            顯然,測試本身是件好事。而在早期進行測試 — 例如在編寫代碼時 — 則更有益處,這特別有利于提高代碼質量。在開發早期編寫測試,您將獲益良多。您能夠檢查代碼的行為,并預先對它進行調試,這種動力無疑是巨大的。

            即使了解了這種重要性,我們也沒有達到關鍵的一點:使在編寫代碼之前 編寫測試成為一種標準實踐。正如 TDD 是極限編程(Extreme Programming)的下一個演化階段(后者推出了單元測試框架),以 TDD 為基礎,新的飛躍也將到來。本月,我邀請您和我一起實現從 TDD 到更具直觀性的行為驅動測試(BDD)的演化。
    行為驅動開發

            雖然測試優先編程對于有些人比較管用,但是并不適用于每一個人。雖然有的應用程序開發人員狂熱擁護 TDD,但也有人堅決抵制它。即使現在已經有了很多測試框架,例如 TestNG、 Selenium 和 FEST,但不對 代碼進行測試的理由仍然充分。

            不采用 TDD 的兩個常見理由是 “沒有足夠的時間進行測試” 和 “代碼太復雜,難以測試”。測試優先編程的另一個障礙是測試優先概念本身。很多人把測試看作一種反應型活動,僅比抽象具體一點。經驗告訴我們,不能測試不存在的東西。對于某些開發人員來說,對于這種概念框架,測試優先 是一種矛盾的說法。

            但是,如果不考慮編寫測試和如何測試,而是考慮行為,結果會如何呢?這里所說的行為,是指一個應用程序應該 如何運行 — 實際上就是指它的規范。

            實際上,您已經想到了這種方法。我們都想到過。請看下面的對話。

    Frank: 什么是棧?

    Linda: 它是一種數據結構,按先進后出(或后進先出)的方式收集對象。它通常有一個 API,其中包括 push() 和 pop() 等方法。有時也有 peek() 方法。

    Frank: push() 有什么功能?

    Linda: push() 接受一個輸入對象,比如說 foo,并將它放入到一個內部容器(例如一個數組)中。push() 通常不返回結果。

    Frank: 如果我 push() 兩個對象,比如先是 foo,然后是 bar,結果會怎樣?

    Linda: 第二個對象 bar 應該在棧(至少包含兩個對象)的頂部,所以如果調用 pop(),那么返回的應該是 bar,而不是 foo。如果再次調用 pop(),那么應該返回 foo,然后棧為空(假設在添加這兩個對象之前棧中沒有對象)。

    Frank: 也就是說,pop 移除最近放入棧中的項目?

    Linda: 是的,pop() 應該移除最上面的項目(假設棧中還有可移除的項目)。peek() 與此類似,只是不移除棧中的對象。peek() 應該保留棧頂的項目。

    Frank: 如果之前沒有 push 任何項目,那么調用 pop() 時會怎樣?

    Linda: pop() 應該拋出一個異常,表明棧中尚未 push 任何項。

    Frank: 如果 push() null 會怎樣?

    Linda: 棧應該拋出一個異常,因為 null 不是一個有效的可 push() 的值。
    在這段對話中,有沒有注意到什么特別的地方呢(除了 Frank 不是計算機科學專業的)?這里從頭到尾沒有用到 “測試” 這個詞。但是,“應該” 這個詞卻非常自然地隨處閃現。

    怎么做才自然?

            BDD 并不是什么新生事物,更不具備什么革命性的突破。它只是 TDD 的一個分支,其中 “測試” 這個詞換成了 “應該”。除了語義,很多人還發現,與測試 概念相比,應該 這個概念是一種更自然的開發驅動因素?紤]行為(應該)會自然而然地促使您先編寫規范類,而后者可以成為一個非常有效的實現驅動因素。

            以 Frank 和 Linda 的對話為基礎,讓我們看看 BDD 如何以 TDD 希望推廣的方式驅動開發。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 代碼 驅動 體驗 行為 質量

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>