指南

什麼是 Staging 環境?上線前先測試

Staging 環境係你應用程式嘅私人副本,盡量設定得同正式版一樣,等你喺真正用戶見到改動之前先喺度測試。佢用自己嘅資料庫、測試資料同測試 API 金鑰,所以喺嗰度出現嘅壞功能或者壞資料改動,都唔會影響團隊以外嘅任何人。當改動喺 staging 睇落冇問題,你先會將佢發佈去 production——即係客戶用緊嘅正式版應用程式。

用 AI 建造嘢時點解 staging 重要

用 AI 建造令改動變得好快。你幾分鐘內就可以加一個功能、重寫一個頁面,或者改你嘅資料結構。咁快當然好,但如果一個睇落冇問題嘅改動,悄悄噉搞壞咗結賬流程,或者一個「小清理」刪咗一欄客戶資料,咁快就變成問題。

喺改動正式上線之前有一個地方去檢查,可以幫你:

  • 喺客戶之前搵到問題。 每次大改動之後,都試吓註冊、付款同其他重要流程。
  • 用接近真實嘅設定測試。 Staging 應該同 production 行為一樣——同一套技術棧、相近嘅設定——咁問題會喺嗰度出現,而唔係之後先出現。
  • 保護真實資料。 資料庫改動、匯入同大量編輯,都可以先喺測試資料上排練。
  • 展示進行中嘅工作。 客戶或者隊友可以審閱改動,而唔需要公開。

日常比喻

諗吓劇院嘅綵排。

  • Development 係排練室:演員試台詞、停、重來、嘗試新嘢。
  • Staging 係彩排:full 戲服、真正舞台、真正燈光——即係一切都同首演夜一樣,只係冇付費觀眾。
  • Production 係首演夜。錯誤會喺所有人面前發生。

大部分你唔想喺首演夜先出現嘅問題,都會喺彩排時出現:一次換服裝太慢,或者一個燈光提示錯咗。呢個正正就係 staging 嘅工作。

三種常見環境

DevelopmentStagingProduction
用途建造同試驗發佈前最後檢查正式運行嘅應用程式
邊個用你或者你嘅開發人員團隊、測試員、客戶真正用戶
資料樣本或假資料測試資料或經過清理嘅副本真實客戶資料
API 金鑰測試金鑰測試金鑰(例如付款服務商嘅測試模式)正式金鑰
穩定性經常會壞,無問題應該穩定必須穩定
網址本機或私人預覽私人或有密碼保護嘅網址你嘅公開網域

每個環境主要分別喺於設定:連接邊個資料庫、用邊套金鑰、喺邊個網址運行。所以好嘅應用程式會由環境變數同 secrets讀取呢啲設定,而唔係將數值硬寫入代碼。咁同一份代碼就可以喺每個環境用唔同設定運行。

實例:更改預約應用程式嘅取消規則

你經營一個有付費客戶嘅髮型屋預約應用程式。你想將規則改成客戶可以喺開始前 24 小時取消,而唔係 48 小時,而且退款要自動處理。

1. 喺 development 建造。 你向 AI 建造工具提出改動要求。佢更新取消邏輯,同埋對付款服務商嘅退款呼叫。

2. 發佈去 staging。 Staging 運行同一份代碼,連接到一個 staging 資料庫(有測試預約),並用付款服務商嘅測試模式金鑰。

3. 測試真實流程。 你同同事:

  • 預約一個明天嘅測試時段,喺 30 小時前取消——應該退款;
  • 試吓喺 10 小時前取消——應該被拒絕,並顯示清楚嘅訊息;
  • 喺付款服務商嘅測試 dashboard 確認退款有出現;
  • 確認確認電郵寫嘅係 24 小時,而唔係 48 小時。

4. 搵出問題。 喺 staging 你發現規則用嘅係伺服器嘅時區,而唔係髮型屋嘅時區,所以截止時間差咗一個小時。你修好佢,再測試一次。

5. 發佈去 production。 到呢一刻,改動先至會到達真實客戶——而時區問題已經被捉到。

如果冇 staging,第 4 步就會喺真實客戶嘅退款上發生。

重要術語

術語意思
Environment(環境)你應用程式一個運行中嘅副本,有自己嘅設定、資料同地址。
Production(正式環境,prod)真實用戶依賴嘅正式運行環境。
Staging(測試環境)接近正式版嘅副本,用嚟做最後測試。
Development(開發環境,dev)改動首先被建造同試用嘅地方。
Preview environment(預覽環境)為一個改動而短暫存在嘅應用程式副本,通常係自動建立。
Deploy / release(部署/發佈)將某個版本嘅代碼放入一個環境。
Rollback(還原)發佈有問題之後,返回之前運作正常嘅版本。
Environment parity(環境一致性)Staging 同 production 幾接近。越接近,就越有用。
Seed data(種子資料)載入到非正式資料庫,用嚟測試嘅樣本資料。

常見誤解

  • 「Staging 可以同 production 共用資料庫。」 呢個係最危險嘅捷徑。一個刪除或者改動紀錄嘅測試,會直接影響真實客戶。要畀 staging 自己嘅資料庫。
  • 「喺 staging work 咗,就唔可能喺 production 壞。」 Staging 只係減低風險,並唔係消除風險。真實流量、真實資料同外部服務仍然可以令你意外。要保留可以還原嘅方法。
  • 「Staging 一定要好貴。」 佢可以好細。佢需要同 production 相同嘅設定,唔使同樣大小。
  • 「喺 staging 用真正嘅付款金鑰,會更貼近實際。」 要用服務商嘅測試模式。貼近實際唔等於用真錢。
  • 「Staging 只係大團隊先需要。」 「先喺一個安全嘅地方測試」呢個概念,就算一個人做都有用。儀式感嘅程度可以按風險大小調整。
  • 「Staging 應該公開,等人試用。」 要保持私人或者有保護,並且阻止搜尋引擎索引佢,免得有人誤會佢係真正嘅應用程式。

要求你嘅 AI 建造工具做咩

  • 「將每個環境專屬嘅設定——資料庫、API 金鑰、網站網址——都由環境變數讀取。」
  • 「加一個 seed script,喺非正式資料庫填入貼近實際嘅測試資料。」
  • 「喺我話正式推出之前,都用付款服務商嘅測試模式。」
  • 「呢個改動上線之前,列出我應該測試嘅流程,同每個流程應該出現咩結果。」
  • 「呢個改動會唔會影響現有資料?先俾我睇 migration。」
  • 「確保非正式版本嘅網站唔會被搜尋引擎索引。」

想睇逐步設定方法,可以睇點樣設定 staging 環境。當發佈變得頻密,將代碼→staging→production 嘅路徑自動化,就係 CI/CD 嘅用途。

Mythex 嘅發佈前測試

Mythex 冇一個獨立嘅「staging 對 production」開關;發佈之後你會得到一個即時公開網址,docs 亦都清楚咁講(多服務應用程式)。但佢畀你嘅係一條清晰嘅界線,分開建造同上線:

  • Preview 喺你建造嗰陣,喺一個私人雲端沙盒度運行你嘅應用程式。改動會先喺嗰度出現,而唔係即時應用程式。
  • Share 會建立預覽連結,等客戶或隊友可以審閱進行中嘅工作,唔需要 Mythex 帳戶,亦唔使你發佈。連結會顯示沙盒當下嘅狀態,包括建造中途嘅改動,而且你隨時可以刪除。
  • Publish 會為項目拍一個快照並部署。喺你再次發佈之前,即時應用程式都會維持原樣。
  • Checkpoints 會喺每次 agent 成功完成一輪之後儲存,所以如果改動出錯,你可以還原項目檔案。

將 Preview 當成你嘅彩排:上線前付款服務商都保持測試模式,並且每次發佈前都行一次主要流程。當有真實客戶參與,喺測試任何會寫入或者刪除資料嘅嘢之前,先問吓 agent 你嘅 Preview 用緊邊個資料庫同金鑰。如果你需要一個獨立、有自己資料庫嘅 staging 設定,可以叫 agent 為你嘅項目解釋你嘅選擇,或者——如果你用緊 Pro——將項目匯出,或者同步到 GitHub,然後喺你自己控制嘅基礎設施上運行。

常見問題

簡單嚟講,什麼是 staging 環境?

Staging 環境係你應用程式嘅私人副本,盡量設定得同正式版一樣,等你喺真正用戶見到改動之前先喺度測試。如果嗰度出咗問題,團隊以外嘅人都唔會受影響。

Staging 同 production 有咩分別?

Production 係真正用戶同真實資料所依賴嘅正式版應用程式。Staging 就好似彩排版本,設定會模仿 production,但用嘅係獨立嘅測試資料同測試金鑰,所以你可以安全噉試改動。

Staging 會唔會同 production 用同一個資料庫?

唔應該。Staging 應該有自己嘅資料庫,填滿測試資料,或者係一份經過清理嘅 production 資料副本。如果共用資料庫,一個測試可能會改動或者刪除真實客戶嘅記錄。

細型應用程式需唔需要 staging 環境?

唔一定要齊全嘅。一個獨立開發嘅項目,通常只需要一個私人預覽、一份檢查清單,以及可以還原嘅能力就夠。一旦有真實客戶、付款或者團隊參與,一個獨立嘅地方去測試改動就價值大得多。

Mythex · Pricing · 用 AI 建造任何嘢 · 網站及應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(台灣)