2010-05-26 87 views
5

我正在努力重建我公司的開發/測試/ QA環境。我們有10-15個程序員參與了一些項目。他們目前都在PC上進行本地開發,並使用開發環境進行測試。我們目前沒有質量保證環境,因此部署通常是一件痛苦的事情,因爲錯誤通常是在某些事情發生後才發現的。下面是我設想:開發的理想開發/測試/ QA環境

  1. 破除大家的本地管理員權限,使一個開發服務器
  2. 創建一個QA環境,等同於我們的生產系統上的每個人的發展。這將允許他們測試部署。
  3. 創建一個比開發服務器更鎖定的新測試環境,以便進行正確的測試。

您的想法是什麼?建立這樣的環境的最佳方式是什麼?我們使用MS Visual Studio 2008開發ASP .NET應用程序(如果有幫助的話)。

回答

4

作爲一名開發人員,如果您將我鎖定在本地管理員權限之外,我真的很討厭。

爲什麼每個人都在開發服務器上開發?你的員工不是都在辦公室嗎?

我真正喜歡你的建議的唯一事情就是與生產環境相同的QA服務器。抱歉。

你應該:

  • 通過源代碼控制
  • 管理代碼有推動建立到QA一個新建的經理。經過QA批准/業務簽署/插入您的業務流程,然後構建經理推動生產。
  • 希望你的數據庫也有一個測試環境。 DBA應該管理將數據庫更改推向生產。開發人員在測試環境中創建,這是一個SQL Server /任何人使用的另一臺服務器上的任何環境。
  • 如果您使用MS產品 - 考慮製作您的項目WDP(Web部署項目)。 MSBuild與此集成在一起,例如,您可以從TFS構建任務中激發構建權。增量構建,每日構建,僅限手動 - 一旦設置正確,它真的很棒。
+0

感謝您的洞察力。我真的只想要程序員和IT部門的最佳選擇。我現在正在考慮給每個程序員開發他/她自己的虛擬機以進行開發,同時在他們的機器上刪除本地管理員權限將是最好的方式。是否有什麼我們可以用來自動化每晚從SVN構建.NET代碼到測試服務器? – zewsk 2010-05-26 18:22:48

+0

曾聽說過CruiseControl.Net?我認爲它可以爲你自動構建。 – 2010-05-26 22:37:03

0
  1. 不要。這將成爲一個PITA,並會通過影響其快速部署,調試代碼和並行運行多個版本代碼的能力來影響開發人員的生產力。
    當然,你應該強制他們在本地發展爲非管理員,但這是另一回事。
  2. 是的。實際上,我會走得更遠,並強制將所有正在簽入主代碼庫的代碼通過乾淨的服務器進行自動化部署。您還應該有一個這樣的環境,其中也會部署將要推向生產的代碼。
  3. 是的。它是項目2的一部分。

您想要處理的第一項任務是確保您公司所有的產品都有一個**部署包,您可以以自動方式部署在一個吱吱作響的清潔機**。如果你沒有這樣的軟件包,你將會在嘗試強制執行上述過程時遇到很多麻煩,因爲每個部署都需要手動干預,這將使貴公司花費太多時間和資源,以至於沒有人會關心它。

第二個任務是爲您的部署服務器提供確定的配置並準備映像,任何人都可以在本地或虛擬機上部署映像。這將成爲您的任何測試的基準,並應儘可能接近實際的生產配置。

0

我不是把開發人員集中到開發人員服務器上的大熱心。人們應該能夠隨時隨地進行編輯和合並,無論他們碰到什麼系統。你想用這個解決什麼問題?這個問題可能有另一個解決方案。

質量保證服務器是必須的。您的質量檢查團隊需要一個可以打破不會影響開發的事情。

我假設通過「TEST」服務器,這實際上是一個可以放置每晚構建的位置,以便開發人員在發佈到QA之前可以進行測試?這是一個非常好的主意,正如Cen提到的那樣,每晚構建一個到該服務器的構建任務都可以用來幫助這個過程。

3

在我看來,這似乎是Continuous Integration尖叫。這是開發環境的第二部分,它不是某人的本地機器,但可用於顯示當前正在進行的工作,並確保代碼合併不會破壞事物。這與QA將使用的測試環境分開,並且應該有另一個環境作爲另一個級別的準生產環境,以便如果有修補程序要發佈,則可以與可能需要更多時間的較大版本分開進行讓QA執行足夠的迴歸以確保新功能不會破壞很多東西。

0

我不會通過刪除本地管理員權限來處理這個問題,這樣做會造成更多傷害,但我建議您設置一個構建服務器來驗證受控環境中的構建。我所採用的工具包,其中我發現都非常好,我和十幾個志願者的隊伍,是:

  • JetBrains的TeamCity的 - 持續集成和構建,以及單元測試運行
  • Atlassian Jira - 問題跟蹤和項目管理
  • Atlassian魚眼/坩堝 - 代碼審查和通用代碼度量。 VisualSVN服務器 - 源代碼控制
  • VisualSVN客戶端(與Visual Studio集成,非常值得)。
  • JetBrains ReSharper - 程序員生產力和一些整潔的單元測試工具。

我不能推薦那些足夠高的工具。 TeamCity通過將您的構建從一個乾淨的,受控的環境中移出開發者機器和建築物來處理您的「我們發貨後發現的錯誤」。它還會運行單元測試,並確保您始終有一個工作構建(通過命名和羞辱構建斷路器)。

坩堝是一種有價值的產品,可讓您輕鬆地進行同儕代碼審查,並進行全面審覈,因此您可以驗證它們是否正確完成。

我認爲的其他項目是不言自明的,它們都有助於實現「最佳實踐」,這將使您的商店在「Joel測試」上有很長的路要走。 Atlassian的產品有10個許可證,價格爲10美元,這是很難打敗的。

儘管如此,解決您的發展問題將至少部分是文化。您可以放置​​這些(或其他)工具,但需要團隊和管理層的支持,並且需要解決您的實踐問題,以確保開發人員使用它們。一些再教育可能會受到限制,因爲怠惰的開發人員通常不喜歡被迫升職。我將從構建服務器開始,並堅持認爲除非它來自自動構建,否則不會發布任何代碼。許多良好的做法將會失去它。您可以考慮採用單元測試和代碼審查,以及何時適合您的組織 - 但計劃從一開始就這樣做。

+0

坦率地說,他們都是草率的開發者。他們真的沒有任何結構。我是DBA,我正在盡我所能讓他們的環境發揮作用。 我在想爲每個程序員開發他/她自己的虛擬機來進行開發將是一個不錯的選擇,可以取消他們的本地管理員權限。然後我們可以使用一些東西來將他們的構建從SVN自動化到測試環境中。 – zewsk 2010-05-26 18:21:02

0

如果您真的想簡化事情,請查看持續部署概念,該概念正變得非常流行。這是一個good introductory post;總體目標是從開發到生產部署直接使用嚴格的自動檢查以消除錯誤。

一個完整的連續部署設置最初可能有點讓人費解,但是您可以先嚐試從開發到QA的這個過程。

0

請記住 - 沒有這樣的事情可以應用於所有情況下的「理想」通用開發環境。通常,技術限制阻止了這些想法的全面採用。作爲多年的知名承包商,我發現與我共事的最糟糕的系統沒有本地管理員權限,每一次安裝都需要致電技術支持,他們總是詛咒我們開發人員要求太多。

我擁有的最佳場景是:如果您要刪除本地管理員權限,請爲他們提供強大的本地託管虛擬機。他們應該在網絡上有一個DMZ,這樣他們就可以在虛擬機上做。如果他們搞砸了,你可以簡單地從文件中恢復虛擬機。在這種情況下,重要的是使用一個好的源代碼倉庫,比如GIT,Team Foundation Server,SVN等。這是開發應該完成的方式 - 除了實際輸入代碼之外,不需要依賴開發人員工作站。

這一方面和其它提示的列表:

允許開發人員人數及其虛擬機(互聯網接入,應用程序安裝等)

使用一個很好的源代碼控制庫,每個開發人員可以隨意分支內的自由從。強制執行常規簽入(例如每小時一次)並擁有構建服務器(持續集成或「CI」),以檢查構建是否損壞。當構建中斷時,CI服務器應該向團隊中的每個人發送電子郵件。

爲每臺本地計算機提供可支付的最佳資源。我聽到這樣的說法,即4GB足夠用於Visual Studio。沒有什麼比真相更深。你可能決定堅持這一點,但請相信我 - 當你的開發者機器一遍又一遍地分頁到磁盤時,因爲每個版本都佔用大量內存,你每個小時每小時會損失幾分鐘 - 生產力的損失,慢機器。

儘量不要讓你的開發人員看不起你 - 他們會聞到它一英里遠,並對你感到憤恨(想要對不滿的開發人員負責刪除源代碼或引入錯誤?)。有可能他們之所以是「草率的開發者」,是因爲公司中沒有人能夠管理人員。最好的團隊由聰明,開放,受過教育的項目經理領導。他們在需要時得到他們所需要的東西。與開發人員的工資成本相比,軟件的成本是沒有的 - 但我仍然聽說這個或那個經理拒絕某個產品,因爲它的成本很高。上次它是XML Spy--因爲「記事本就足夠了」。當然會 - 只要腿足夠,而不是汽車,但我不想走到哪裏都該死!

爲了不利於穀物 - 我實際上認爲從所有開發人員中刪除管理員能力是一件好事,如果您可以創建具有最高能力的高級用戶。我從團隊中發現的最大問題是人們應用補丁程序或安裝未通過管理清理的其他軟件。上次有人安裝ReSharper,然後抱怨機器運行緩慢。他們有一臺2GB的機器,而ReSharper 5需要4GB的最低配置才能在Visual Studio 2010上運行。

Addtionally - 學會不使用鼠標進行開發。這是我知道的一個激進的概念,但鼠標比鍵盤快捷鍵慢。除非圖標位於頁面的角落,否則平均需要一兩秒才能找到圖標並單擊。記住一條捷徑更快。