テスト - DevOps用語集 2023年版
はじめに
本記事では日本仮想化技術がDevOpsに関連する用語解説をわかりやすくお伝えいたします。今回は「テスト」について解説していきたいと思います。
本論1
ソフトウェア開発におけるテストは、ソフトウェアの品質を担保する上で欠かすことのできない作業です。テストは開発中に何度も繰り返し実施されることにより、品質を向上させることが可能ですが、テストにかかる工数は決して少なくないため、すべてのテストを頻繁に繰り返すことがコストの増大につながってしまいます。
そこでDevOpsではテストを自動化し、頻繁に何度もテストを繰り返すことで、工数を抑えつつ高い品質を実現します。
ただし、一言でテストの自動化と言ってもソフトウェア開発におけるテストにはいくつかの種類があり、それぞれ自動化するにあたって考慮すべき点は異なります。ここから主なソフトウェアテストについて、その意味合いとDevOpsにおける扱いを紹介していきます。
単体テスト
単体テストはユニットテストとも呼ばれ、テスト可能な最小範囲のコードに対してその挙動が仕様通りに動作するかということを検証するテストです。そのため、テストケースの数が多く、テストの作成と実施には大きなコストがかかります。
DevOpsではCI(継続的インテグレーション)の一環として、この単体テストを自動化し、繰り返し実行することで、テスト実施のコストを削減することができます。テストコードの作成コスト自体は削減できませんが、一旦作成してしまえば、そのテストコードを使用してテストを何度も頻繁に実行することができます。
結合テスト
結合テストは単体テストでテストされたユニットを連携した状態で正しく動作するかどうかを検証するテストです。ユニット単位では期待通りに動作しても、それぞれのユニットを連携させるとうまく動作しないことがよく発生します。結合テストではこのような不具合を発見するために、ユニットテストと同様にコードを意識したホワイトボックステストを実施します。
DevOpsにおいては自動化の対象とすることもありますが、同じく結合した状態で行うE2Eテストで代替する場合も多くなっています。
E2Eテスト
E2Eテストは開発されたアプリケーションをすべて結合し、ブラックボックス的に動作を検証するテストです。開発の途中でも、動作する機能のUIを操作しながら期待通りの動作をするかを確認します。
E2EテストはUIを操作するため、手動で行うことが一般的です。しかし、最近ではUIテストを自動実行するツールも出てきており、CI(継続的インテグレーション)の一環として自動で実行されることも増えてきています。
受け入れテスト
受け入れテストは完成したソフトウェアが発注者の期待にそっているかを検証するテストです。アプリケーションをブラックボックス的に動作検証するテストですが、実施の主体がアプリケーションの発注者側になります。E2Eテストとの違いは、発注者側が発注者の視点でテストケースを作成し、テストを実行する点です。
また、継続的デプロイメントのように、本番環境に自動でリリースしてしまう場合には、E2Eテストを自動実行することで受け入れテストの代替とする場合もあります。
負荷テスト
負荷テストは、アプリケーションが高負荷となった場合の挙動を検証するテストです。一般的にはサーバー上で動作するアプリケーションに対して多数のユーザーが同時にアクセスした場合を想定して行います。
負荷テストはテスト実行にあたってのインフラの負荷や実行時間などの観点から、頻繁に実施するようなテストではないため、CI/CDの自動化プロセスの中に組み込まれることは稀です。
セキュリティテスト
セキュリティテストはセキュリティ検査とも呼ばれ、アプリケーションおよびプラットフォームにおけるセキュリティホールとなるような脆弱性がないかを検証するテストです。ソースコードレベルでリスクの有無を検査する静的アプリケーションテスト(SAST)や、アプリケーションの構成要素に脆弱性がないかを検査するソフトウェアコンポジション解析(SCA)、アプリケーションをテスト環境で稼働させて実際に攻撃を仕掛ける動的アプリケーションセキュリティテスト(DAST)などがあります。
DevOpsにおいては、これらのセキュリティテストはCI(継続的インテグレーション)の一部として組み込む流れが強くなってきています。これをDevSecOpと呼びます。
関連リンク(任意)
かんたんDevOps | 日本仮想化技術株式会社
https://virtualtech.jp/devops/
とことんDevOps | DevOpsに取り組みたい皆さんのための技術情報メディア
https://devops-blog.virtualtech.jp/
この記事の著者:日本仮想化技術株式会社
日本仮想化技術はベンダーニュートラルな独立系仮想化技術のエキスパート集団です。日本仮想化技術ではこれからDevOpsを始めたいと考えるプロジェクトに対して、DevOpsの導入、実践を支援する「DevOpsサポートサービス」というサービスを提供しています。
- 関連キーワード:
- 用語集
DevOps Hubのアカウントをフォローして
更新情報を受け取る
-
Like on Facebook
-
Like on Feedly