• <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-4-10 10:04 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 76次 | 進入軟件測試論壇討論

    領測軟件測試網

     我常常聽到一些開發人員抱怨說,他們要忙于修改那么多文件,哪有精力每天簽入代碼。實際上,這正是我要說的要點 — 為了每天提交源代碼修改,需要將任務劃分得更小。實際上,需要將編程任務劃分成小塊,這樣修改也會更小。

            不要在一個大任務中實現一個業務對象上的所有特性,例如編寫 read()、write()、update() 和 delete() 方法的原型;而是應該首先編寫 read() 方法(以及對應的測試),然后簽入這個類,從而與整個代碼基集成。接下來,可以實現另一個方法,再次執行簽入,直到完成整個任務。這樣的話,就可以讓 CI 的好處最大化,而且會讓您確信自己的代碼可以與別人的代碼 相互配合。

            請記住,即使您和您的團隊正確地執行許多 CI 實踐,如果團隊成員不堅持至少每天簽入一次源代碼修改,那么 CI 的好處會大打折扣。這常常會讓人誤以為 CI 是無效的,這種想法實在大錯特錯。

    破碎的構建減慢了開發的節奏

    名稱:破碎的構建

    反模式:構建長時間破碎,導致開發人員無法簽出可運行的代碼。

    解決方案:在構建破碎時立即通知開發人員,并以最高優先級盡快修復破碎的構建。

            無論您信不信,構建破碎的時間越長,就越麻煩。這是因為文件、修改和依賴項越多,隔離缺陷就越困難。因此,當通知某人構建破碎時(通過電子郵件、RSS 或其他機制),他應該優先解決這個問題;否則,構建破碎的時間越長(尤其是對于頻繁修改代碼的團隊),就越難糾正。

            破碎的構建不總是壞事。實際上,破碎的構建會讓您迅速地意識到軟件出了問題。當構建頻繁地 破碎或長時間破碎時,破碎的構建就會成為問題。在構建破碎的情況下,絕不應該置之不理。

    用私有構建減少破碎的構建

            防止破碎構建的有效技術之一是,在將代碼提交到存儲庫之前,運行私有構建(private build)。執行私有構建的步驟如下:

            從存儲庫簽出代碼。 
            在本地修改代碼。 
            用存儲庫執行更新,從而集成其他開發人員所做的修改。 
            運行本地構建。 
            構建成功之后,將修改提交到存儲庫。
    圖 1 說明了這種做法。注意,這個工作流強調頻繁地與存儲庫執行同步,從而保證定期簽入并限制破碎的構建 — 這真是一舉兩得!

    圖 1. 運行私有構建減少破碎的集成構建

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

    22/2<12

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>