文章列表

# Flaky Test 不穩定測試 # Flaky Test 不穩定測試是在相同 Test case 在不同執行中可能產生不同結果,時而 Pass 時而 Fail,這樣會降低測試的可靠性,所以我們應該針對不同問題方面進行強化 Flaky Test 不是測試方法,而是說明你的測試並不可靠,因此我們應該去了解是甚麼原由造成不可靠的測試,主要以三點來進行 思考原由 如何避免 哪些工具可以協助模擬適當環境 # 常見不穩定測試因素 環境變化 - 測試環境的配置與周遭設備是最容易去影響結果的要素之一 Race Condition - 資源在測試過程中被搶奪造成的占用造成結果不同 測試順序依賴 -...

# Parallel Test 平行測試 # Parallel Test 平行測試 平行測試是同時進行多平行測試案例的測試方法,目的是讓系統在短時間內進行大量測試,這麼一來我們就可以加快測試過程,提高效率 # Pytest in Parallel Test 安裝 pytest-xdist 套件 官方文件 有了 pytest-xdist 你就可以在 pytest 上設置使用的執行緒數量進行平行測試,若在平行測試中設置超過核心數量的話,pytest 會進行 context switching (目標內容的切換) 也就是在同一個 process...

# 部署 - Big Bang Deployment / Continuous Deployment # 簡介 Big Bang Deployment 一次性將完整的新系統或大規模更新部署到生產環境,通常涉及停機時間,風險較高,若有問題回滾困難。 傳統上來講就是這種部署 # 簡介 Continuous Deploymeny 自動化地將通過測試的變更持續部署到生產環境,無需人工介入,能快速提供新功能,風險較小。 # 簡單比較 Big Bang / Continuous 特性 Big Bang Deployment Continuous...

# 部署 - Blue/Green,Canary Deployment # 前言 Blue/Green Deployment (藍綠部署) 是一個相較於 Rolling Update (滾動更新) 更有部署彈性的方式之一,而 Canary Deployment (金絲雀部署) 是基於 Blue/Green Deployment 的延伸應用,其中 Blue/Green Deployment 能夠比 Rolling Update 更有彈性的理由是,是新舊版本同時並存,當新版在部署期間發生問題都可以隨時快速 Rollback 到舊版本。 # Blue/Green Deployment ,...

# 部署 - Shadow Deployment/Dark Launching # 簡介 Shadow Deployment/Dark Launching Shadow Deployment (影子部署) 在這個部署方式會在現存的版本中額外部署新版在一旁,但是使用者沒有存取新版的權限,就像被藏在陰影之中依樣,那… 新版的作用是甚麼呢,我們會在運行現存版本之中,同時複製使用者的請求到新版運行,在這之中觀察同樣的功能在新舊版本之間運行的差異。 # 優點 這個方法可以讓我們去測試新功能,但不需要等待這些功能進行完整的 QA 測試 (因為可能會持續非常的久) #...

# 部署 - Ramped Deployment/Rolling Deployment # 簡介 Ramped Deployment/Rolling Deployment Ramped Deploymeny (逐漸部署)/Rolling Deployment (滾動部署) 很多人在處理 Ramped Deployment 會很困惑,因為阿這些通常是用於部署 多叢集 / 多伺服器 / 多實例 的子集,但其實 Ramped Deployment 與 Rolling Deployment 有著微小的差異, # Ramped Deployment Ramped Deployment...

# 部署 - Recreate Deployment # 簡介 Recreate Deployment Recreate Deployment (重建部署) 在這種部屬方式,需要去關閉舊的系統,部署新的系統,然後重新啟動整個系統,這代表說會有一段停機時間 # 優點 這是個便宜的部署方式,當我們想要完全改變系統,就不在需要負載平衡器來協助切換版本,不需要流量的重新導向 # 缺點 但是最大的衝擊還是終端使用者,有一段的停機時間,必須等待應用程式可用,因此很多團隊並不會使用這種部屬方式,除非別無選擇。 # 參考資料 APWIDE GOLIVE - 8 Deployment...

# 部署 - A/B Testing Deployment # 簡介 A/B Testing Deployment A/B Testing Deployment (A/B 測試部署) 是一種讓開發團隊測試軟體新功能的部署方案,這時候會在部署當前系統版本也會額外部署新功能系統,兩個系統都能同時使用,但是新版系統只會被挑選中的使用者能夠使用 當然被挑選中的使用者通常是根據特定因素,如地理位址,裝置型態,語言或是作業系統等等,可以幫助開發 / 設計團隊了解新系統的功能成效,只要團隊收集到新版使用者的相關資料且新功能表現相當不錯,開發團隊就可以部署正式的新版 #...

# 微服務架構設計 - 隔板 Bulkhead Pattern # 前言 Bulkhead 的概念發自於建造船舶,一艘船遊隔板進行隔間 (完全隔離與水密),這樣即使船身受損也可以透過這樣的隔板來將水限制在一定容積內,避免船隻沉沒。 # 軟體工程中的 Bulkhead 同樣的,在軟體工程微服務中,我們有很多服務單元在交互作用,使用隔板模式我們可以對於不同的服務單元將來自不同的 Thread Pool ,降低異常呼叫造成的應用程式 Crash 風險 # Thread Pool? Thread Pool 可以當作不同服務單元之間的隔板,每個遠端呼叫都是被隔離的並分到一個 Thread Pool...

# 微服務架構設計 - 客戶彈性模式 Client-Side Resiliency Pattern # 前言 Client-Side Resiliency Pattern 目的在 Client Side Service 避免存取過程中,被呼叫方的異常導致一系列的崩潰, Client-Side Resiliency Pattern 可以讓 Client 自主快速失敗並且不會耗盡自身資源,其中達成的方式會組合 Client-Side Load Balancing Pattern Circuit Breaker Pattern Fallback Pattern Bulkhead...