博客

7種方法構建健壯的生產測試(TiP)實踐

作者

Tricentis員工

各種各樣的貢獻者

日期2021年7月20日

這裏有一個簡短的軼事:一個QA團隊維護了一個獨立於他們的生產環境的測試環境,但他們已經付出了很大的努力來確保它在每個方麵都與生產環境相匹配。它充滿了相同的硬件,所有的軟件都是相同的,直到補丁級別。他們有一個強大的過程,以確保對一個環境所做的任何更改都能反映到另一個環境中。

也許你能看出這個故事的走向。果不其然,兩種環境並不完全相同。事實上,服務器上的一些BIOS設置有所不同,這導致生產機器比測試機器運行得慢。結果,整個生產係統無法處理測試係統能夠處理的通信量,有一天,整個活動站點意外地由於它應該能夠管理的負載水平而崩潰。

這個故事的重點是什麼?無論多小,測試環境和生產環境之間的任何差異都可能產生嚴重的影響。

讓我們麵對它——測試環境幾乎從來沒有像我們的軼事中那樣保持一致。然而,總的來說,生產係統在很大程度上是按照我們期望的方式運行的。為什麼?

一個原因是生產中測試(TiP)的實踐越來越多。從本質上講,一旦代碼發布到生產環境中,就會對其進行一係列測試,以確保其正常工作。這些測試作為正在進行的操作的一部分繼續進行,當出現問題時,我們會收到警報。TiP正穩步成為任何現代web開發組織的標準和關鍵部分。

提示:在生產環境中測試

QA專業人員的工作正在發生變化尤其是涉及到雲或基於web的應用程序時。測試人員的工作不是在一個特定的軟件版本中尋找bug,而是成為整個開發過程的監護人和管家,確保缺陷在進入生產環境之前被識別和刪除。

這就是為什麼TiP如此重要。這並不是說它取代了傳統的測試,而是用一組在生產環境中有意義的測試過程增強了傳統的測試。正如上麵的故事所說明的那樣,創建和維護一個真正與生產環境完全相同的測試環境是非常困難的——以至於有一類測試在生產環境以外的任何環境中執行都沒有意義。

TiP提供了一種使用實時站點和真實用戶進行測試的結構化方式——因為對於這些測試來說,這是獲得有意義結果的唯一方法。

有許多不同類型的技巧,任何軟件測試人員都應該知道。這裏是一些最重要的總結。

金絲雀測試

在善待動物組織成立之前,煤礦工人會帶著一隻關在籠子裏的金絲雀進礦井。如果突然冒出甲烷等有毒氣體,脆弱的金絲雀就會在人類麵前屈服,為礦工提供早期預警係統。簡單地說,死鳥=危險。

在TiP中,金絲雀測試指的是在廣泛發布新代碼之前,將新代碼部署到生產機器的一個小子集的過程。這有點像SaaS的煙霧測試。如果這些機器繼續按照預期的方式對實時流量進行操作,就會讓您相信沒有潛伏的有毒氣體,並且可以批準全麵部署。

受控試飛

在金絲雀測試中,您測試的是硬件,而在受控試飛中,您測試的是用戶。在這種技巧中,您將選擇的一組真實用戶暴露給軟件更改,以查看它們的行為是否符合預期。例如,假設你的發布涉及到應用程序導航結構的更改。你已經完成了可用性測試,但希望在所有人看到更改之前做得更好一些。

這就是受控試飛的意義所在。您可以進行更改,但隻將其暴露給特定的用戶。看看他們的行為。如果一切順利,您可以將更改擴展到更廣泛的用戶。

A/B分割測試

有時候你不確定用戶會喜歡什麼,唯一的方法就是觀察他們的行為。A/B分割測試在基於web的應用中非常常見,因為這是一種使用行為數據來做出決策的好方法。在這種情況下,您正在開發兩種(或更多)體驗——“A”體驗和“B”體驗——並向每一種體驗暴露相同的用戶集。然後測量結果。

如果使用得當,A/B測試是一個非常強大的工具,因為它真正允許開發組織跟隨用戶。這確實需要更多的工作和協調,但如果處理得當,好處是巨大的。

綜合用戶測試

合成用戶測試包括創建和監控與真實站點交互的虛假用戶。這些用戶根據預定義的腳本在web應用程序中執行各種功能和事務。例如,他們可以訪問網站,導航到電子商務商店,選擇一些商品放入購物車,然後結賬。在執行此腳本時,您可以跟蹤合成用戶的相關性能指標,從而了解真正用戶的最終用戶體驗。

綜合監控是任何網站應用程序性能監控策略的關鍵組成部分。

故障注入

這裏有一個有趣的,也許令人不安的想法:在您的生產環境中創建一個問題,隻是為了看看它是如何優雅地處理的。這就是錯誤注入背後的思想。您已經構建了所有這些基礎結構,以確保免受特定錯誤的影響。您應該實際測試這些流程。

Netflix在測試圈中以Chaos Monkey程序而聞名。該服務將隨機關閉虛擬機或終止進程。它創建了服務應該能夠處理的錯誤,並在此過程中極大地提高了應用程序的可靠性。此外,它還能讓運營人員保持警惕。

恢複測試

與錯誤注入類似,你想知道你的應用程序和組織在被調用時能夠從一個壞問題中恢複。有些過程很少在生產環境中測試,比如故障轉移到輔助站點或從以前的備份中恢複。恢複測試練習這些過程。

為你的應用程序運行應急演習。選擇一個使用率較低的時間,讓你的環境按照它的設計處理速度運行。確保你的技術和人員能夠以可控的方式處理實際問題,這樣你就有信心在真正出現意外時能夠妥善處理。

數據驅動的質量

最後——這可能是不言而喻的——設置係統,幫助QA團隊接收和審查運營數據,以衡量質量。確保測試人員能夠訪問來自生產環境的日誌、性能度量、警報和其他信息,這樣他們就可以積極主動地識別和修複問題。

結論

如果使用得當,在生產環境中進行測試將是QA兵工廠中非常有價值的工具。當然,使用實時用戶進行測試總是有風險的,但讓我們麵對現實吧——這是有風險的同時也對實時用戶進行測試。然而,如果你構建了正確的過程,TiP可以極大地提高應用程序的整體質量。

本博客最初發布於2015年,並於2021年7月更新。

作者:

Tricentis員工

各種各樣的貢獻者

日期2021年7月20日
Baidu
map