如何做好容災測試

2021-10-10 03:41:25 字數 2568 閱讀 8941

概述:容災,也是災難恢復,是乙個綜合很多技術使用的乙個系統性工程,對於容災測試除了具備紮實的測試技能,同時也要有系統性的分析思維來拆解,將難度降低到乙個個小小的場景和用例中去,以下做一些簡單的介紹,只做拋磚引玉,最終還是要看具體的實踐。

1、災難恢復概念(disaster recovery,也稱災備)是指在相隔較遠的異地,建立兩套或多套功能相同的it系統,互相之間可以進行健康狀態監視和功能切換,當一處系統因意外(如火災、**等)停止工作時,整個應用系統可以切換到另一處,使得該系統功能可以繼續正常工作。容災技術是系統的高可用性技術的乙個組成部分,容災系統更加強調處理外界環境對系統的影響,特別是災難性事件對整個it節點的影響,提供節點級別的系統恢復功能。

2、容災系統的型別從對系統的保護程度來分,可以將容災系統分為:資料容災和應用容災。

資料容災就是指建立乙個異地的資料系統,該系統是本地關鍵應用資料的乙個實時複製。採用的主要技術是資料備份和資料複製技術,可以分為同步傳輸方式、半同步傳輸和非同步傳輸方式。

應用容災是在資料容災的基礎上,在異地建立一套完整的與本地生產系統相當的備份應用系統(可以是互為備份),在災難情況下,遠端系統迅速接管業務執行。資料容災是抗禦災難的保障,而應用容災則是容災系統建設的目標。主要的技術包括負載均衡、集群技術及對應的故障切換機制。

3、容災系統的等級:參照國際災難備份行業的通行災難備份等級劃分原則,根據異地資料的多寡,異地資料與生產資料的差異程度,以及災難恢復環境的完備程度,將災難備份系統從低到高劃分為如下四個等級:

rpo(recovery point objective):即資料恢復點目標,主要指的是業務系統所能容忍的資料丟失量。

rto(recovery time objective):即恢復時間目標,主要指的是所能容忍的業務停止服務的最長時間,也就是從災難發生到業務系統恢復服務功能所需要的最短時間週期。

rpo針對的是資料丟失,而rto針對的是服務丟失,二者沒有必然的關聯性。rto和rpo的確定必須在進行風險分析和業務影響分析後根據不同的業務需求確定。對於不同企業的同一種業務,rto和rpo的需求也會有所不同。

1、確認整體跨城架構,逐層分析交易資料流;

2、了解和分析跨城容災觸發的條件和步驟,分析跨城容災步驟的合理性,從流程上分析是否存在哪些不足。

3、掌握跨城容災的實現原理,逐層逐系統分析,哪些是做了容災,哪些是沒有做的(系統不同階段,滿足容災的等級要求是不一樣的,有些系統可能還是屬於單點,但是一般要設計合理的應急措施),梳理測試風險點和關注點。

4、編寫測試方案,方案包括:系統架構圖、跨城切換步驟、測試計畫(什麼人、什麼時間、負責什麼內容,達到什麼效果)、測試環境準備部署圖、測試準備(對應工具及指令碼開發、資料準備、資料依賴等)、測試策略(哪些要驗證、哪些不驗證、驗證到什麼程度)、測試關注點、風險點列表及應對措施等。

容災效果驗證:容災後,需要對容災後的效果做驗證,需要結合業務場景來驗證,比如:

切換中:切換過程會有個延時,多個系統切換不是瞬間完成的,這個瞬間的切換,測試時把過程拉長時間,以便驗證每個切換步驟和系統的相容性;

切換後:需要驗證切換後的業務連續性是否能保證,實時交易、批量交易、事務是否能正常處理;

回切:系統恢復後,需要做回切處理,這個回切後業務連續性驗證,回切前業務是否能正常處理,回切後業務資料流是否正常。

資料回補驗證:資料回補和校驗邏輯驗證,切換前業務交易,資料回補後是否能繼續處理等,資料回補是有損還是無損,對應補償機制及應對措施驗證。

容災演練配合:容災系統建設之後,容災演習就要變成常態化動作,需要在生產環境模擬觸發容災切換的場景,來模擬真實容災切換,需要做的內容主要有以下幾種:

災難場景模擬:需要對場景做細分,比如交易成功率下降,這個可以通過對某台機器的網路埠進行網路限制或者協議層阻塞來模擬;網路丟包,也可以通過iptable來模擬。

觸發場景後的業務驗證:觸發切換後,發起對應自動化業務用例,用例中需要對資料進行核對和檢查,確保業務驗證是否符合需求。

sudo iptables -a output -o eth0 -d 《依賴系統的ip>  -j drop

sudo iptables -a output -o eth0 -p tcp  --dport 《埠號》 -j drop

sudo tc qdisc add dev eth0 root handle 1: prio

sudo tc qdisc add dev eth0 parent 1:3 handle 30: tbf rate 20kbit buffer 1600 limit  3000

sudo tc qdisc add dev eth0 parent 30:1 handle 31: netem delay 1000ms 10ms distribution normal

sudo tc filter add dev eth0 protocol ip parent 1:0 prio 3 u32 match ip dst **.**.**.**/32 flowid 1:3

sudo tc filter del dev eth0 protocol ip parent 1:0 prio 3 u32 match ip dst **.**.**.**/32 flowid 1:3

如何做好測試

測試與開發 在我們日常的生活中,存在這一種現象,因為這種現象導致了測試一系列的發展。大家普遍認為,測試的含金量不高,導致了測試工作就是一些不願意做開發或者沒有能力做開發的人來做,其二,他們對測試設計的測試案例沒做認真的審查,認為就那麼回事情。出現這種問題的願意是由於開發還沒有清楚的認識到測試是乙個服...

如何做好公升級測試

什麼是公升級測試 比如說你們公司開發的產品現已經發布的是v1.0,由於被發現存在缺陷,這時就需開發patch或hot fix,並進行公升級測試,然後發布v1.1。公升級測試聽起來似乎挺平常的,但它其實也是軟體測試 中比較重要的一部分,它通常包括以下內容 安裝測試 資料庫 測試 應用測試 文件測試 安...

如何做好軟體測試

打好基礎,不斷學習!唯有學習才能永遠不敗!測試工程師基本素質 首先,最最重要的是要對測試工作有興趣 測試工作很多時候是很枯燥的,只有熱愛測試工作才能更好地做好測試,才能堅持下去。這是結合自己實習經歷切身的體會。與開發人員相比,不但需要一技之長,還需要如作業系統 資料庫 網路等方面的知識。乙個有競爭力...