發佈時間:March 18,2021
在生產環境中進行測試時,真正成功的秘訣是什麼?
生產環境測試通常被認為是一種會造成許多混亂的測試方法。然而,我們已經了解… 不會 生產環境中的測試也是個問題。請繼續閱讀以了解更多資訊。
「關上防爆門!」衝鋒隊員們一邊喊著,一邊追著漢和丘巴卡穿過死星的走廊。門開始關閉——但漢和丘巴卡在門完全關閉前溜了出去。 「打開防爆門!打開防爆門!」衝鋒隊員們意識到自己被困住了,大聲喊道。
這就是過去生產環境測試的模樣。開發人員會帶著他們的版本衝進即將關閉的防爆門,而QA團隊則緊跟在後。當然,這只是個比喻,不過我很想看看現實中會不會發生這樣的場景。對QA來說,最糟糕的情況是,漢·索羅和丘巴卡的逃脫導致了死星的毀滅。同樣,在持續測試的世界裡,為了保持行動應用的更新,開發人員往往忽略QA,結果造成更大的混亂。在這種情況下,最終受苦的是用戶——你猜這會波及到哪裡?沒錯——企業本身。
正因如此,多年來大多數企業都禁止在生產環境中進行測試。但另一方面: 不會 生產環境中的測試也存在問題。
由於生產環境的規模遠大於測試環境,且往往未能及時更新,因此您將無法獲得理想的真實環境規模測試。其結果是整體測試效率降低。
測試的死星
當我們談到生產環境測試時,指的是實際運行環境中進行的測試;其價值在於該環境能夠多大程度上模擬真實世界。非生產環境測試過於可控,缺乏真實的流量和數據。我並不是說生產環境測試不好;當然不是——它在測試應用程式的特定條件和功能方面非常寶貴。問題在於,這種測試環境有其限制。
我明白你們的感受,沒錯,如果能在非生產環境中完美復刻生產環境,確實能解決一些難題。然而,這方面的要求簡直是天文數字。你必須使用相同的資料庫、依賴項,還要模擬相同的使用者流量。要是能找到一種無需花費巨資就能在這種環境下進行測試的方法就好了…
有!
生產環境中的測試——這也是我們今天要討論的內容。
風險確實存在。
當然,在生產環境中進行測試是有風險的。如果沒有風險,就不會有人勸阻你這麼做了。他們試圖避免資料損壞、系統過載以及測試對其他生產系統造成意外影響等問題。
以下列舉了一些在生產環境中測試可能出錯的常見方式:
生產中斷 — 執行測試時,結果要麼通過,要麼失敗。我知道,這聽起來很簡單。但問題在於,生產環境中的測試失敗可能會導致整個生產環境崩潰,造成應用程式停機。
安全性 — 有時,為了在生產環境中執行測試,需要停用安全措施。我相信您能理解這會帶來哪些問題。
模擬數據 — 雖然在專用測試環境中使用模擬資料完全可以接受,但在生產環境中使用模擬資料可能會損害資料完整性,從而導致測試失敗。這使得在生產環境中進行測試成為潛在的業務風險。此外,清除垃圾資料也是一個充滿潛在風險的過程,因為在此過程中可能會遺失資料。
系統性能 — 如果在生產環境中執行負載測試,可能會對效能產生負面影響。由此造成的損害會影響整個組織。
窄測試窗口 — 例如,如果您執行飽和測試,在生產環境中進行測試可能會幹擾該測試,導致測試不穩定和誤報失敗。
更少的工具 — 出於安全性和性能原因,在生產環境中進行測試時無法使用自己喜歡的工具,則更難獲得測試結果。
所以,沒錯,這確實有風險,但我並不是說在生產環境中測試不好。它有助於將你的行動應用程式暴露在真實場景中。在這種系統中,發現 bug 比在常規測試環境中更容易。即使你在實驗室環境中執行效能測試,也不代表你會在生產環境中看到相同的結果。
我們該怎麼辦?當然是繼續閱讀!
正確地在生產環境中進行測試
推進此方法的最簡單方法是開發能夠確保以下方面的流程和方法: safe 在盡量減少對使用者影響的情況下進行測試。我們來看一些例子。
分層方法
我們先來看一道選擇題。如何在生產環境中進行測試?
- 在生產資料中心內部署測試伺服器。
- 在生產平台上獨立運行應用程式。
- 針對已部署到生產環境的完整程式碼進行即時測試。
- 上述所有的
顯然,答案應該是 D。分層部署生產測試可以讓你以不同的方式測試生產環境。此外,你還可以透過配對測試案例來最大限度地減少測試對生產環境的影響。最終,這將降低測試環境的維護成本,並將對使用者的影響降至最低。
交通流量小
執行效能測試時,所有使用者都可能受到影響。效能測試往往會降低伺服器運行速度,而這在生產環境中是任何人都無法接受的。為了做好效能測試的準備,請先分析使用者數量,找出使用者最少的時間段。如果想更深入了解情況,還可以查看環境中資源消耗最大的進程運行的時間段。
收集數據
在生產環境進行測試時,請使用您可以收集到的真實流量數據,例如使用者流程、行為和資源。然後利用這些數據來設計您的測試案例。有了這些數據,您就可以自信地在生產環境中執行測試,確保模擬的行為是真實的。
監測至關重要
始終關注各項指標。這是我們一直強調的。在執行生產環境測試時,請密切注意各項數據,您就能了解測試是否以及如何影響最終使用者體驗。如果確實產生了影響,則需要立即停止測試。
選擇加入
最後一種在生產環境中以真實使用者測試應用程式的方法是使用「選擇加入」功能來預覽新版本。這種方法可以讓真實用戶參與,從而監控並收集數據。最棒的是,如果出現任何問題,您不必過於擔心最終用戶體驗,因為他們已經提前同意測試應用程式。一旦獲得數據,您就可以據此調整測試策略。
生產環境中的測試雖然風險高,但也很有價值。
壓力巨大。在2021年,企業能否快速將程式碼部署到生產環境並提供零錯誤的使用者體驗比以往任何時候都更加重要。也就是說,你需要測試這些功能,才能交付最佳的應用程式。
當然,在非生產環境中進行測試可能會發現很多錯誤,但總是會有一些錯誤漏網。
生產環境測試最大的好處在於,它能讓你最清楚地了解你的應用程式在最終用戶互動下的運作情況。
關鍵在於,風險固然存在,但這並不代表我們應該妖魔化生產環境測試的概念。了解風險並建立相應的系統來降低風險至關重要。最終目標是在最短的時間內發布盡可能最好的應用程式。
進一步了解 Digital.ai Continuous Testing 本次網絡研討會視頻 探討為什麼雲端測試比以往任何時候都更重要。