片狀測試的禍根:第2部分

addtoany linkedin.
白色襯衣的婦女拿著放大鏡到一隻眼睛,當她凝視在便攜式計算機上。

在我們以前的帖子中,片狀測試的禍根:第1部分,我們描述了一些我們曾經嚐試過穩定的高級技術。今天在第2部分中,我們將潛入一些關於我們如何處理較低級別的這些問題的一些實施細節。

能夠處理數據的服務器具有多種複雜的測試。在Kinaxis,我們有超過110,000個測試,在不同的條件下反複運行,超過67,000人在我管理的管道上。開發人員和管理層都依賴於這些測試的結果,以驗證從不斷增長的組織到一個大的CodeBase所做的快速變化。我們還聘請了連續交付(CD)模型,不斷為客戶提供更新。這意味著我們的產品可能不健康的可接受時間。隨著Kinaxis的增長,這已成為一個艱難的挑戰,但它是我們在創新方麵遇到的。

我們過去三年的後端測試數量幾乎翻了一番,並且隨著我們向前推進新技術,該測試計數正在繼續增長。我在這裏的一部分責任,除了以最有效的方式運行測試之外,還可以調查測試失敗。任何產生不一致結果的測試,即使沒有代碼或基礎設施發生變化,也被稱為“薄餅測試”。

片狀測試有時是環境打嗝的結果,但它通常代表代碼中的問題。在裁定環境因素後,我們需要確定問題是否在測試中或服務器本身。正如您所看到的,調查不一致的失敗是一個非常耗時的活動,因此我們嚴重依賴自動化。

自動調查診斷測試更快

我們的第一部分在片狀測試上討論了用於解決這些測試的幾種方法,但大多數人都依賴於開發人員的手工幹預,以確定不一致的原因。手動幹預不斷增長的代碼基礎不是可持續解決方案。相反,我在測試工作流程中識別開發人員時間彙,並設計和實現自動化解決方案。

通過利用大資源池,我已經實施了自動化工具的各個階段,以診斷這些問題而沒有任何人類參與。自動診斷的第一階段是任何測試失敗的第二次嚐試。當測試以特定順序運行時,測試的結果可能受到先前的測試的影響,並以某種方式更改了環境。

要隔離由測試幹擾引起的這些誤報,我們的測試訂單不是靜態的。要隔離假否定,在將環境重置為其默認狀態之後,在測試運行結束時再次運行失敗的任何測試。如果測試失敗其第二次嚐試,則將其視為普通的故障,因為重塑失敗。但是,如果測試通過其第二次嚐試,我們稱之為“可疑測試”,並觸發自動調查的下一階段。

第二階段的自動化被稱為可疑 - 測試追逐者。它對導致可疑測試的測試組合進行了漸進式搜索(在按順序運行時失敗的測試)。如果該過程確定故障是由另一個測試的幹擾引起的,則此過程將隔離該組合並報告。除了實現最終修複程序之外,此過程中不需要用戶操作。

從可疑 - 測試追逐者到Flaky-Finder

If the suspicious-test-chaser cannot determine a combination of tests to reproduce the failure, then it is likely the “suspicious test” is actually a “flaky test”, something that isn’t unstable because of other tests, but is unstable on its own. The third stage of automation is the “flaky-finder.” This automation runs one test repeatedly using over 100 virtual machines, running the test more times than it would normally run in an entire year. In the end it produces a report on the stability on the test. Any test which isn’t 100% stable is automatically marked as flaky, removing the reproduction step for developers. A developer can pick up work knowing it isn’t environmental, and have confidence in a reproducible case of the failure.

這些增強功能很長的方式來幫助開發人員效率和節省時間,諷刺地顯示要測試處理大數據的軟件,您需要良好的自動化工具。還有很多關於我們測試的主題的更多信息。在即將到來的帖子中,我將分享我們如何能夠擴展以處理我們的測試負載,同時保持完全資源利用率。

發表評論

獲取博客更新

通過電子郵件與博客帖子保持聯係:

Eloqua WebForm.