mablのブランチのスナップショット (masterまたはその他のブランチ) は、スナップショットの作成時にワークスペース内に存在していたテストバージョンのコレクションです。スナップショットを使用すると、特定の時点でのテストの状態を保持することができます。
テストブランチでは、テストに個別の変更を加えることができますが、スナップショットでは、特定の時点でのテストの変更をmabl環境に対して固定することができます。スナップショットを使用するように環境が設定されている場合、mablはその環境でのプラン実行に対してスナップショットが作成された時点で最新だったバージョンのテストを実行します。
ユースケース
スナップショットの主なユースケースは、特定の環境 (開発など) にデプロイされたコードの変更を受けたテストを、コードの変更がまだデプロイされていない他の環境 (ステージング、本番など) で実行中のテストに影響を与えることなく、更新できるようにすることです。このため、CI/CDパイプラインまたは従来のデプロイメントワークフローの複数の環境間で、コードの変更に合わせてテストの変更をプロモートすることができます。
CI/CDパイプラインにmablを統合している場合は、スナップショットの利用を試してみてください。また、デプロイメントパイプライン内の最初の環境ではスナップショットを使用せず、下流のすべての環境でスナップショットを使用することをお勧めします。この構成では、mablのmasterブランチが最初の環境で実行されるため、スナップショットのバージョンの更新や下流の環境に与える影響を気にすることなく、masterを簡単に更新することができます。その後、下流の環境にコードがデプロイされたときに、masterから派生したそれぞれのスナップショットを更新できます。
デプロイメントパイプライン内でのコードの移動に伴うテストのブランチ/スナップショット作成のシナリオ例
シナリオ例
上の図は、次のシナリオ例を表しています。開発者がコードブランチuser_registration_updateでテスト対象アプリケーションのユーザー登録フローに変更を加えました。開発者はmablで影響を受けるエンドツーエンドテストを更新し、mablのブランチへの変更を保存します。開発者はmabl CLIまたはTrainerを使用して、ローカルアプリケーション環境でmablテストのブランチバージョンの実行と検証を行うことができます。その後、コードがmasterにマージされて開発 (Dev) 環境にデプロイされると、mablのブランチもmasterにマージされ、デプロイ直後に一晩に1回のスケジュールに基づいて、更新されたmasterテストバージョンが開発環境で実行されます。このとき、下流のQA環境と本番 (Prod) 環境では、コードの変更がまだデプロイされていないため、更新されたmasterよりも古いスナップショットバージョンのテストが実行されます。コードが開発 (Dev) 環境からQA環境にデプロイされると、QA環境のスナップショットは最新のmasterバージョンのテストに更新されますが、本番 (Prod) 環境では古いスナップショットバージョンが引き続き実行されます。
スナップショットの作成
スナップショットを作成するには、mabl CLIで、--snapshot-fromオプションを指定してmabl deployments createコマンドを実行します。
ターミナル
$ mabl deployments create -k [api-key] -p [app-id] -e [env-id] --snapshot-from [branch_name or environment_id]
特定の環境のスナップショットを作成または更新する場合は、環境IDとmablブランチ名 (例: new_feature、masterなど) または環境IDを指定する必要があります。環境IDからスナップショットを作成する主なユースケースは、スナップショットを使用する環境からスナップショットを使用する別の環境にテストの変更をプロモートし、masterなどのブランチの最新のテストバージョンを使用しない場合です。
上記のCLIコマンドを実行すると、mablにそれぞれのテストプランの実行をトリガーするデプロイイベントが作成され、下の画像に示すように、スナップショットでテスト実行が行われたことを示すブランチバッジが表示されます。
環境のスナップショットを使用したデプロイ時のテストの実行。
特定の環境の最新のテストバージョンのスナップショットを作成するために、ブランチをmasterにマージする必要はありません。
[Tests] > [BRANCHES] に移動すると、スナップショットが作成されたすべてのテストとフローを参照できます。スナップショットはブランチのリストに表示され、ステータスに "snapshot" と表示されます。スナップショット名はスナップショットが作成された環境IDに基づいて自動的に生成され、スナップショット名の末尾には、下に示すようにSNAPSHOTという単語が付加されます。
mablのテストブランチおよびスナップショットのリスト
また、テストの詳細ページに移動し、[CHANGE HISTORY] タブを参照すると、どのバージョンのテストでスナップショットが作成されているかを確認できます。
テストの変更履歴 (ブランチ内のバージョンと環境のスナップショットを反映)
スナップショットでのテストの実行
特定の環境でスナップショットが作成されると、mablはそれぞれのスナップショットバージョンのテストとフローを実行するようになります。このため、スケジュールに基づいてプランを実行する場合や、手動またはAPI経由でプランを実行する場合に、デフォルトでスナップショットバージョンが使用されるようになります。このことは、次の画像に示すように、プランおよびテスト実行の結果のブランチアイコンに示されます。
環境のスナップショットを使用した手動でのプランの実行
要約すると、スナップショットを利用することで、コードの変更がまだデプロイされていない下流の環境で実行中の同じテストに影響を与えることなく、ブランチでのテストの変更をmasterにマージすることができます。環境のスナップショットが更新されるまでの間、これらの下流の環境 (本番環境など) では、スナップショットバージョンのテストが実行されます。
現時点では、プラン外で個別のテストを実行する際に、特定のスナップショットを選択することはできません。アドホックテストの実行は、テストの詳細ページで選択されたテストブランチバージョンを使用して、選ばれた環境に対して実行されます。
スナップショットの削除
スナップショットを削除するには、2段階から成る次の手順を実行します。
- スナップショットと環境の関連付けを解除: mabl CLIで環境のデプロイイベントを作成します。ただし、--snapshot-fromオプションは指定しません。例を示します。
$ mabl deployments create -k [api-key] -a [app-id] -e [env-id]
- mabl UIからスナップショットを削除: mablアプリケーションで [Tests] > [BRANCHES] に移動し、mabl UIからスナップショットを削除します。これでスナップショットがリストに表示されなくなります。
その後、別のブランチを指定しない限り、mablはプラン実行でテストのmasterブランチバージョンを使用するようになります。
スナップショットと環境の関連付けを誤って解除した場合は、次のコマンドを実行して環境とスナップショットを再度関連付けることができます。
mabl environments update [env-id] --mabl-branch [snapshot-name]
環境のスナップショットステータスの確認
環境にスナップショットの使用が設定されているかどうかを確認するには、mabl CLIで次のコマンドを実行します。
mabl environments describe [env-id]
mabl CLIは、環境にスナップショットの使用が設定されているかどうかを含め、環境に関するメタデータを返します。
- メタデータに
use_source_control_tag: true
と表示される場合は、環境にスナップショットの使用が設定されています。 - メタデータに
use_source_control_tag: false
と表示されるか、use_source_control_tag
プロパティがない場合は、環境にスナップショットの使用が設定されていません。