自動テストの安定性は、自信のあるCI/CDと自動化への信頼の重要な側面です。
背景
最初は自動テストを手動で実行しており、不安定さはそれほど問題ではありませんでした。しかし、テストの数が増え、パイプラインに統合されるにつれて、フレークテスト(時々見えない理由で失敗するテスト)が大きな問題となりました。
問題
フレークテストは以下の結果を引き起こします:
解決策
役立つこと:
待機の使用例:
WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "result")) )
重要な特性:
大規模な再実行でフレークテストの問題が解決されますか?
いいえ、これは一時的な"穴埋め"です。原因を排除するのではなく、既存の問題を隠すだけです。
夜間のみ自動テストを実行することは、負荷による中断を防ぐのに役立ちますか?
夜に実行することは不安定さを排除せず、可能性を減少させるだけです;問題は残り、原因を解決する必要があります。
すべてのフレークテストをすぐに削除すべきですか?
いいえ。まず原因を特定し、修正を試みるべきです。安定さを確保できない場合や、古くて関連性のないテストであれば削除します。
チームは、常にフラップするテストを大量に再実行することに頼っていました。その結果、"緑の"テストのリストは増えましたが、自動テストの質は向上せず、バグが見逃されました。
長所:
短所:
チームはシステマチックなフレークの原因(未クリアデータ、UIの遅延、ネットワーク障害)を特定し記述しました。アーキテクチャを修正し、適切な待機を追加し、環境を整えた結果、安定していないテストの数が急激に減少しました。
長所:
短所: