0

開發時,我的團隊顯然使用development作爲我們的環境。Rails應用程序,持續集成/部署環境

當我們運行自動測試時,我們使用testing

我們還有stagingproduction環境,分別用於我們的測試人員檢查功能和最終「現場」產品。

我們正在嘗試設置內部CI服務器來運行我們的自動化測試,並最終幫助自動部署。

由於CI服務器確實在運行自動化測試,有人認爲它應該在testing環境中運行。但是,爲了使CI服務器真正有用,我的想法是,它需要在production模式下運行,儘可能接近實際的production環境的鏡像(顯然不涉及生產數據庫)。

是否有一個可以接受的環境,應該在CI服務器下執行? production環境(不同的DB)似乎是唯一符合邏輯的答案給我,但我可能失去了一些東西......

回答

1

PROD環境中運行任何測試,如你所說

似乎是唯一符合邏輯的答案

但並不完全正確。您的測試可能會嚴重損害實際環境/應用程序,並面臨恢復選項的風險。在所有測試的陰暗面都顯示/發現你的軟件不僅有小錯誤,而且它的工作並不像預期的那樣。 我能想到的,至少這些「爲什麼不試生產」方面的考慮:

  • 時,產品一經推出,客戶依賴它。期待您的軟件正在運行()已經過測試)。你的生活環境應該完成它的工作,而不是被加載測試。如果產品出現故障(或未執行),必須派遣技術團隊來彌補損壞,修復缺陷並使其無障礙運行。現在這不僅影響了產品成本,而且主要延遲了項目期限。這將對供應商的利潤和接下來的幾個項目產生遞歸效應。

  • 生產或開發團隊在完成產品開發時,必須在爲其測試環境加載新開發的產品之前爲測試團隊生成此測試環境。

對我來說,不管你

也有臨時和生產環境

有必要相應地使用測試之一。進一步更多測試環境應該(配置)儘可能接近生產。另一個人可能試圖測試,而另一個人打破他一直在測試的東西。除了兩者分開之外,他們無法做適當的測試。

只是作爲完整答案,您的STAGE環境可以根據公司的不同而發揮不同的作用。 一個是它可以是QA/STAGE環境,它具有用於QA和系統測試(在大量更新/更改或升級即將投入生產時測試系統)的生產副本。

UPDATE:

這是我的觀點了。 QA環境應該是PROD的鏡像。關於將文件緩存/預加載到分段/生產的問題的可能解決方案是創建預/後步驟 .bat(讓我們假設)文件。

在我們當前的測試項目中,我們使用這種方法。在的前置步驟我們設置了測試執行所需的文件(例如從先前的運行中刪除文件並下載最新的副本/工件)。在後續步驟我們設置了需要的報告文件。好處是您的文件將在每次執行之前收集並同步。

關於

不是在我的情況相同的物理硬件

我們支持專用的遠程測試服務器。優點很明顯,只有你需要考慮的是它需要維護(管理)。

+0

我不打算讓CI在與生產相同的物理硬件上運行,而只是在相同的環境下(相同的DB版本,操作系統版本等)。我衷心地同意將所有內容扔到prod服務器上是一個壞主意。我遇到了Rails代碼在開發/測試中效果很好的問題,但是在分段/生產中完全相同的代碼失敗,因爲Rails在這些環境中以緩存/預加載文件的方式做了不同的事情。我認爲最好的解決方案是儘可能模仿生產環境,而不是在同一個物理硬件上。 – 2014-10-09 17:26:11