如何使用ElasTest實現測試的可觀察性

2021-09-17 03:16:18 字數 2499 閱讀 4176

在乙個分布式的應用程式中,很難使用在開發非分布式應用程式中常用的除錯技術。在出席2023年度歐洲測試大會(european testing conference 2019)時,francisco gortázar認為,把生產可觀察性放到測試環境中有助於找到錯誤。他演示了elastest,這是開發人員利用可觀察性以測試和驗證分布式系統的工具。

francisco gortázar說,可觀察性有助於我們理解應用程式的行為方式。理解分布式應用程式行為的唯一方法就是檢視其生成的資料(其外部輸出),以決定其內部狀態。可觀察性的目的是把從被觀察的應用程式中獲得的有用資訊提供給測試人員及開發人員,他這樣說到。

francisco gortázar建議,構建接近業務的高階抽象, 以便把有意義的事件與對使用者沒有直接影響的事件區分開來。他說,在生產中,我們通常從原始指標開始,但很快我們就需要開發自己的指標,並在這些指標上設定告警了。隨時收集一切資訊需要對大量資訊進行管理,因此,他提議使用動態抽樣以避免收集沒有意義的事件,並專注於有影響的事件。當情況變得不正常時,就開始收集更多資訊,以更好地診斷問題,並有希望找到解決方案。

elastest是用於提供測試環境中可觀察性的開源工具,旨在幫助開發人員測試和驗證複雜的分布式系統。它提供與elk堆疊類似的功能,兩者的主要區別在於對測試過程的認識。elastest理解什麼是測試,並能夠在必要的時候收集相關資訊,並以一種相當直觀的方式呈現出來,以分別檢視錯誤和測試。

elastest專案由歐盟公開資助。該平台由歐洲學術機構、研究中心、大型工業公司和中小企業聯合開發,使用開源軟體社群的通用工具和服務。

infoq正在跟蹤報道2023年度歐洲測試大會,並就測試中的可觀察性採訪了francisco gortázar。

infoq:為什麼收集有關分布式系統和雲原生應用程式中正在發生的情況的資訊那麼難?

除此之外,測試環境還具有一些特性,使它們與生產環境有所不同。因此,有可能會發生這樣的情況:在生產環境中使用同樣的工具在部署和配置時需要花費大量的精力,因此,有時候,公司不希望在測試環境上投入大量精力。而運營團隊通常忙於生產環境,無法將時間花在其他環境中。

infoq:對於設定可觀察性,您有什麼建議?

gortázar:很多不同的工具都有助於給我們的生產系統設定適當的可觀察水平,但是,這需要投入很多精力把所有這些組合到一起,以便獲得必要的視覺化抽象。

理想情況下,我們應該在測試環境和生產環境中使用相同的工具。但是,通常,負責這些生產環境中可觀察性系統的團隊沒有時間去為其他環境部署和維護類似的工具集。在這種情況下,至少開發人員和測試人員仍然可以使用能夠給其測試環境帶來一定程度可觀察性的簡單工具。

infoq:在端到端的測試中,有哪些用於可觀察性的工具?我們如何使用?

gortázar:所謂的elk棧(elk是elasticsearch、logstash和kibana的首字母縮寫,它是通用工具集,用以管理來自elastic co.的原始日誌和指標)以及由該公司開發的beat **使它非常輕鬆地從系統中收集日誌和指標。一起部署我們要測試的系統和這些**,並讓它們傳送資訊給elasticsearch資料庫並不難。對那些失敗的測試,我們可以使用kibana進行進一步的問題調查。kibana能夠繪製所收集的指標,也可用於日誌查詢。這兩個功能有助於更好地定位錯誤。

但是,在用於測試環境時,這些工具有侷限性。當我們檢視持續整合的系統時,事情就變得非常不同。通常,只在測試作為該整合過程中的部分執行時,才收集資訊。此外,該資訊只在測試失敗(如,該應用程式沒有完全按預期執行)時才有用。通常只有在檢查該資訊時,才能找到失敗的根本原因。然而,該資訊的呈現方式非常難以理解系統的行為。例如,控制面板通常不了解測試的邊界(測試的起止時間),也無法過濾那些不相關測試的資訊,除非我們知道它們在某個特定的時刻開始和結束。因此,隔離出有意義的資訊是使用標準可觀察***的問題之一。

infoq:怎樣才能找到錯誤的根本原因?

gortázar:在分布式系統中,要找到問題的根源絕非易事。當我遇到該問題時,我希望能夠把成功的執行和失敗的執行進行比較。由於日誌的自然屬性(在不同的執行中產生的日誌不同),這很難。工具應該能夠識別出通用模式並去掉資訊中不相關的部分,這些資訊可能在兩個不同的執行中不一樣。

這個比較功能也應該可用於任何其他型別指標。如果我能夠比較兩個連續執行的請求的記憶體消耗或者延遲情況,也許能夠理解為什麼第二次執行會失敗。

通常,需要更特定的工具來完成這類任務。在測試環境中,我們對要儲存的那些資訊有更多的控制,但是,我們需要在工具中提高對測試過程的認識。這樣,我們能夠在執行測試時,收集必要的資訊,並提供適當的抽象以理解特定測試失敗的原因。我們正在研究如何視覺化用elastest收集的資訊,以便更快更準確地定位錯誤。我們認為持續整合環境還有很大提公升空間。

如何使用ElasTest實現測試的可觀察性

在乙個分布式的應用程式中,很難使用在開發非分布式應用程式中常用的除錯技術。在出席2019年度歐洲測試大會 european testing conference 2019 時,francisco gort zar認為,把生產可觀察性放到測試環境中有助於找到錯誤。他演示了elastest,這是開發人員...

如何使用ElasTest實現測試的可觀察性

在乙個分布式的應用程式中,很難使用在開發非分布式應用程式中常用的除錯技術。在出席2019年度歐洲測試大會 european testing conference 2019 時,francisco gort zar認為,把生產可觀察性放到測試環境中有助於找到錯誤。他演示了elastest,這是開發人員...

如何使用ElasTest實現測試的可觀察性

在乙個分布式的應用程式中,很難使用在開發非分布式應用程式中常用的除錯技術。在出席2019年度歐洲測試大會 european testing conference 2019 時,francisco gort zar認為,把生產可觀察性放到測試環境中有助於找到錯誤。他演示了elastest,這是開發人員...