AWS CDK のスナップショットテストってなに?
- POSTS
1. はじめに 読者の皆様、AWS基盤の構築には、どういったツールをお使いでしょうか。
AWS で利用できる構築ツールには、AWS CloudFormation 、Terraform、AWS CDK がありますが、ここでは、AWS CDK についてフォーカスします。
AWS CDK とは 、普段開発者が利用しているプログラミング言語で AWS 構築ができるツールです。
AWS CDK は、普段利用しているプログラミング言語で開発できるメリットがある一方で、意図しないリソースが作成や更新される可能性を孕んでいます。
こういった意図しないリソースの作成や更新をデプロイ前に発見することは、安心して本番環境に変更を反映するには必要不可欠な要素です。
本記事では、こういった意図しない変更をデプロイ前に発見する方法の一つでであるスナップショットテストについて説明していきます。
2. スナップショットテストとは? AWS CDK は、TypeScript等のプログラミング言語で記載しますが、最終的には、ビルドすることで、AWS CloudFormation テンプレートを生成されます。
スナップショットテストは、前回ビルドされた AWS CloudFormation テンプレートと新しく生成された AWS CloudFormation テンプレートを比較し、差分を検出するテストです。
新旧の AWS CloudFormation テンプレートに差分があれば、テスト失敗となります。
2.1. ユースケース 2.1.1. リファクタリング コードリファクタリングとは?
コードリファクタリングは、機能を変更せずに読みやすさと理解を向上させるためにコード構造を改善するプロセスです。アプリケーションプログラミングでは、開発者は、アプリケーションが適切に機能>するように、相互に、および外部システムとやり取りするコードブロックを記述する必要があります。コードリファクタリングにより、これらのコードブロックは簡潔かつ正確になり、開発者の意図が明確に伝わります。これにより、コードベースの保守が容易になり、ソフトウェアのパフォーマンスが向上します。
参考: コードリファクタリングとは
リファクタリングとは、AWS のドキュメントにある通り、機能を変更せずにコードの構造を変更することをいいます。
AWS CDK でリファクタリング時に AWS リソースの構成が変更されていないか確認する用途でスナップショットテストが役立ちます。
2.1.2. レビュー時の差分確認 スナップショットテストは、開発者が自身のコードの修正によって意図しない AWS リソースが作成されていことの確認にも役立ちますが、コードレビューにも役立ちます。
スナップショットテストを実行すると、プロジェクトフォルダの test/__snapshots__/{プロジェクト名}.test/ts/snap が作成されます。
ここには、前回スナップショットテストで生成した AWS CloudFormation テンプレートが書き込まれています。
このファイルを GitHub等で差分比較すると、前回のスナップショットの比較することができるので、レビュワーも生成されるリソースに問題がないのか確認することができます。
3. スナップショットテストの実施 3.1. テストコードの作成 test/プロジェクト名.test.ts にテストコードを記述します。