テスト自動化は、予測可能で再現可能なテストデータの作成と維持の必要性と密接に関連しています。手動テストでは任意のデータを使用できる一方で、自動化されたシナリオではデータベースや環境の状態を正確に制御することが求められます。アプリケーションの規模、マイクロサービスとの関係、プライバシー要件により、テストデータ管理の課題はさらに複雑になっています。
管理されていないテストデータでは、テストが不安定になり、結果が代表的でなくなります。よくある状況は以下の通りです:
さらに、実際のデータを使用することで、セキュリティやプライバシーポリシーに違反する可能性があります。
現代のアプローチには以下が含まれます:
本番環境の実データを自動化テストに使用できますか?
いいえ。データ漏洩、規制違反、及びプロダクションシステムの継続的な変更によるテストの不安定性を引き起こす可能性があります。
テスト間にすべてのデータをクリアすれば、テストの安定性は保証されますか?
いいえ。データを単にクリアするだけでなく、正しい状態に準備することが重要です。また、大規模なクリアは、同時に実行されるテストやサービスに影響を与える可能性があります。
すべてのチームに対して1つのテスト環境があれば十分ですか?
いいえ、これは異なるチームのテスト間での衝突や競合を招く道です。理想的には、隔離された環境やコンテナ化(Dockerテストスイート、エフェメラル環境)が望ましいです。
テストチームは、手動テストと自動化テストの両方が作業する1つのテストデータベースを使用しました。手動でデータを削除または変更することにより、自動化テストがしばしば失敗し、長いデバッグと時間の損失を引き起こしました。
長所:
短所:
会社はエフェメラル環境のインフラを導入しました:各テストは、Dockerを介して展開されるデータベースの個別のコピーで実行されました。フィクスチャはマイグレーションスクリプトによって自動的にロードされました。
長所:
短所: