staging-vs-production-environment-guide 文章封面

測試環境、正式環境差在哪?從開發到上線的完整流程拆解

自由揚AntonyLin

星期五下午四點,客服突然湧進一堆客訴:「你們網站結帳頁面掛了!」老闆衝去找工程師,得到的回答是:「因為我剛在正式環境改了一小段程式碼,沒想到會影響到結帳功能......」

你心裡冒出一個很合理的疑問:為什麼不能直接在正式環境上改東西?這不是最快的方式嗎?

這篇文章會用最白話的方式告訴你——開發環境、測試環境(Staging)、正式環境(Production)分別是什麼、為什麼缺一不可,以及身為老闆或 PM,你在專案驗收時該注意哪些環境管理的關鍵問題。

用「試衣間」比喻:為什麼你不會在門市直接裁剪衣服

Staging 測試環境的軟體品質測試流程
Staging 測試環境的軟體品質測試流程

想像你經營一間服飾店。設計師做了一件新洋裝,你會讓設計師直接在門市、當著客人的面剪布修改嗎?當然不會。正常的流程是:

1. 設計師的工作室(開發環境)——設計師在自己的工作室裡打版、裁剪、縫製。這裡可以盡情嘗試、犯錯、拆掉重來,不會有客人看到。

2. 試衣間(Staging 測試環境)——衣服做好後,請模特兒到試衣間試穿。確認尺寸對不對、布料有沒有問題、穿起來好不好看。這個階段還能修改,但已經非常接近最終成品。

3. 門市展示(Production 正式環境)——確認一切沒問題後,才把衣服掛上貨架讓客人購買。這裡就是客人看到的最終版本,不容許任何失誤。

💡一句話記住

開發環境是廚房,Staging 環境是試菜,正式環境是出餐給客人。你不會讓廚師在客人桌上練習擺盤。

軟體開發的邏輯完全一樣。工程師需要一個可以放心犯錯的地方(開發環境)、一個模擬真實情境做最後確認的地方(Staging 環境)、以及一個穩定服務客戶的地方(正式環境)。

三種環境完整解析:Development / Staging / Production

讓我們更詳細地拆解這三種環境各自的角色和特性:

Development(開發環境)

這是工程師日常寫程式碼的地方,通常就在工程師自己的電腦上。在這裡,工程師可以自由修改任何東西、測試新想法、甚至故意把系統弄壞來測試修復方式。這裡的資料都是假的測試資料,怎麼搞都不會影響到任何人。

Staging(測試環境 / 預備環境)

Staging 環境是正式環境的「影分身」——它的設定、架構、甚至資料結構都盡量跟正式環境一模一樣,但使用的是測試資料。工程師把新功能部署到 Staging 環境後,PM 和老闆可以在這裡實際操作、驗收功能、確認流程,確保一切符合預期後再上線。

Production(正式環境)

這就是你的客戶、使用者每天在用的真實系統。所有的真實訂單、客戶資料、金流交易都在這裡發生。正式環境是神聖不可侵犯的——任何修改都必須經過完整的測試流程才能進入。

圖表載入中…

從上面的流程圖可以看到,程式碼從工程師的電腦到客戶面前,至少要經過開發 → 審查 → Staging 測試 → 正式上線這四個階段。如果任何一個階段發現問題,就退回去修正,而不是在正式環境上冒險。

這個流程通常會搭配CI/CD 自動化部署來執行,讓環境之間的切換更快速、更不容易出錯。而程式碼審查的部分,可以參考我們的PR 與 Code Review 指南

環境

主要使用者

資料來源

部署頻率

出錯影響

Development

工程師本機

假資料 / 種子資料

隨時

只影響個人

Staging

測試 / PM / 客戶驗收

接近正式的測試資料

每日或 sprint

內部驗收延遲

Production

真實用戶

真實營運資料

嚴格控管

直接影響營收與信譽

為什麼一定要有 Staging 測試環境?

正式環境(Production)系統上線部署流程
正式環境(Production)系統上線部署流程

你可能會想:「開發環境測試完直接上線不就好了?為什麼還要多一個 Staging?」原因比你想的還多:

1. 避免影響真實用戶——在 Staging 環境發現的 Bug,只有內部團隊看到。但在正式環境爆掉的 Bug,你的客戶全都看到了。一次重大故障可能讓你流失 20% 的用戶,而這些用戶很可能再也不回來。

2. 金流測試不能用真錢——如果你的系統有線上付款功能,你不可能在正式環境用真實信用卡反覆測試。Staging 環境可以串接金流的測試模式(sandbox),讓你用假的信用卡號完整跑過結帳流程,確認金額計算、折扣碼、發票開立都正確。

3. 壓力測試要在安全的地方做——如果你要測試系統能不能承受 1000 人同時湧入(例如雙 11 促銷),你不會在正式環境測。壓力測試可能讓系統暫時變慢甚至崩潰,這些風險只能在 Staging 環境承擔。

4. 新功能需要老闆 / PM 驗收——工程師覺得做完了,不代表真的符合你的需求。Staging 環境讓你可以像真實用戶一樣操作新功能,提前發現「這不是我要的」的問題,避免上線後才大改。

5. 第三方服務整合測試——你的系統可能串接了物流 API、簡訊發送、Email 通知、第三方登入等服務。這些整合在開發環境很難完整測試,但在 Staging 環境可以用測試帳號跑完整流程。

ℹ️Staging 環境的關鍵原則

Staging 環境要盡可能跟正式環境一模一樣——相同的伺服器設定、相同的資料庫結構、相同的第三方服務串接(測試模式)。差異越小,在 Staging 測試通過的功能就越不可能在正式環境出問題。

沒有 Staging 環境的團隊,出過什麼事?

以下是我們在業界常見的真實案例(細節已匿名處理),每一個都是血淋淋的教訓:

案例一:電商折扣碼失控

一間電商公司要上線「滿千折百」的活動。工程師直接在正式環境部署新的折扣邏輯,結果折扣計算公式寫錯——變成「每件商品都折一百」。活動上線兩小時內被大量下單,等到客服發現不對勁,已經產生了超過 50 萬的錯誤折扣訂單。如果有 Staging 環境,PM 只要下一張測試訂單就能發現問題。

案例二:資料庫欄位更新導致全站崩潰

工程師要幫會員系統新增一個欄位,直接在正式環境的資料庫執行修改指令。結果指令有誤,鎖住了整張會員資料表。全站所有需要讀取會員資料的頁面全部卡住,網站等於癱瘓了 40 分鐘。這種資料庫變更在 Staging 環境跑一次,十秒鐘就能發現問題。

案例三:第三方 API 金鑰搞混

某團隊在正式環境測試簡訊發送功能,不小心用了正式環境的 API 金鑰,結果發了 3000 封測試簡訊給真實用戶,內容還是「測試測試 123」。除了簡訊費用的浪費,更嚴重的是品牌形象受損和客戶投訴。

⚠️核心教訓

沒有 Staging 環境本質上是在賭運氣,並不能算是省錢。每一次「直接在正式環境改」都是一次俄羅斯輪盤——大部分時候沒事,但只要中一次,代價就遠超過建置 Staging 環境的成本。

老闆在驗收時該問什麼問題?

當你的工程師團隊說「新功能做好了,可以上線了」,你應該先確認以下問題:

驗收問題

期望答案

如果答不出來...

這個功能在 Staging 環境測過了嗎?

是的,已經在 Staging 完整測試過

代表可能沒有經過完整測試

我可以在 Staging 環境自己操作看看嗎?

可以,這是 Staging 的網址和測試帳號

代表 Staging 環境可能沒有建置

Staging 環境跟正式環境的設定一致嗎?

一致,包含伺服器規格和第三方串接

代表 Staging 測試結果可能不可靠

金流有用測試模式跑過嗎?

有,以下是測試交易紀錄

代表金流邏輯沒有被驗證

如果上線後出問題,多快可以回復?

我們有 rollback 機制,X 分鐘內可回復

代表沒有緊急應變計畫

這些問題不需要技術背景就能問,但它們能幫你判斷團隊的環境管理是否到位。問不出滿意答案的團隊,代表他們的部署流程有風險。

延伸閱讀:如果你想更系統性地評估開發團隊,可以參考我們的如何選擇軟體開發公司指南。

環境管理對專案報價的影響

你可能注意到,有些開發公司的報價裡會單獨列出「Staging 環境建置」或「多環境部署」的費用。這不是在坑你——環境管理是有真實成本的

1. 伺服器費用——Staging 環境需要獨立的伺服器(或雲端資源),雖然規格不需要跟正式環境完全一樣,但仍然是一筆持續性的費用,每月大約是正式環境的 30-50%。

2. 維護人力——Staging 環境需要定期更新、同步資料結構、確保與正式環境一致。這些都需要工程師花時間維護。

3. 自動化部署設定——要讓程式碼能順暢地在不同環境之間流動,需要設定CI/CD 自動化流程。初期設定需要一定的人力投入,但長期能大幅減少部署出錯的機率。

那這筆錢值得花嗎?絕對值得。根據業界統計,正式環境的 Bug 修復成本是 Staging 環境的 5-10 倍。因為正式環境的問題牽涉到客戶影響、資料修復、商譽損失、加班人力等額外成本。

更多關於軟體開發費用的細節,可以參考我們的軟體開發費用拆解指南,裡面有更完整的費用結構分析。

理解前端、後端、全端的分工也能幫助你判斷報價中各環境的費用是否合理——前端和後端通常需要不同的環境設定。

QStaging 環境跟正式環境一定要分開的伺服器嗎?

強烈建議分開。雖然技術上可以用同一台伺服器的不同設定來模擬,但這樣做的風險是 Staging 的測試可能影響正式環境的效能,而且無法做壓力測試。至少使用獨立的雲端執行個體(例如獨立的 container 或 VM)。

Q小專案(例如形象網站)也需要 Staging 環境嗎?

如果是純靜態的形象網站,風險較低,可以簡化流程。但只要有後台管理、會員系統、表單提交等動態功能,就建議建立 Staging 環境。建置成本不高,但能避免很多低級錯誤直接出現在客戶面前。

Q老闆可以直接在 Staging 環境測試嗎?還是要等工程師安排?

當然可以!事實上,我們非常鼓勵老闆和 PM 主動在 Staging 環境測試。你應該要求工程師提供 Staging 的網址和測試帳號,然後像真實用戶一樣操作每個功能。你發現的問題往往是工程師不會注意到的使用者體驗問題。

Q如果在 Staging 測試沒問題,上線後還是有 Bug 怎麼辦?

這是可能的,因為 Staging 和正式環境之間可能存在微小差異(例如資料量不同、網路環境不同)。但有 Staging 環境可以攔截掉 80-90% 的問題。剩下的問題通常透過監控系統快速發現並修復,搭配 rollback 機制可以將影響降到最低。

Q聽說有些公司還有 QA 環境、UAT 環境,這些又是什麼?

這些是更細緻的環境分類。QA 環境(品質保證環境)專門給測試團隊跑自動化測試和手動測試。UAT 環境(使用者驗收測試環境)專門給客戶或 PM 做最終驗收。中小型專案通常用一個 Staging 環境同時扮演這兩個角色就夠了,大型企業專案才需要細分。

延伸閱讀

環境管理通常是專案流程設計的一環。如果你採用 敏捷開發 (Scrum),每個 sprint 都會在 staging 跟客戶 demo,沒有它整個迭代會崩潰。

想把多環境一致性做到極致?看 Docker 容器化 怎麼解決「我電腦可以跑啊」的老問題。

官方來源參考:環境管理的系統化做法可參考 Atlassian 的 Continuous Delivery Pipeline 101Microsoft 對部署環境的官方分類見 Azure DevOps Environments

下一步:讓專業團隊幫你建立完整的部署流程

現在你知道了——測試環境真正的角色是保護你的系統和客戶體驗的必要投資,遠遠不只是一筆額外成本。

一個有完善環境管理的開發團隊,代表他們重視品質、尊重你的客戶、並且有能力處理從開發到上線的完整流程。而這正是你在評估開發夥伴時不能忽略的關鍵指標。

如果你正在規劃軟體專案,歡迎免費諮詢恆遠的技術團隊。我們的每一個專案都有完整的 Staging 環境、自動化部署流程、以及清楚的驗收機制——因為我們相信,上線前多花一小時測試,勝過上線後花一整天救火。

延伸閱讀:想了解更多軟體開發的管理知識,可以參考我們的技術債指南,了解為什麼「先求有再求好」的心態會讓你的系統越來越難維護。

分享文章

AUTHOR

自由揚AntonyLin

留言(0)

尚無留言,成為第一個留言的人吧!

需要網站系統架設或軟體開發?

無論是品牌官網、客製化系統還是應用程式,我們的團隊擁有豐富經驗,歡迎聯繫我們,讓專業為您的事業加分。