テストはなぜ必要か
アプリケーション開発におけるテストとは、アプリケーションが問題なく動作しているかどうかを確認する作業のことです。このテストを行わないとアプリケーションに不具合を残したままユーザが利用することになり、サービス提供側からすると、以下のようなデメリットを引き起こすことが考えられます。
- システム保守コストの増大
- 信用の失墜によるユーザの離脱
- サービス停止による経済的な損失
- データ破損などの物理的な損失
このような事態に陥らないために、適切にテストを行って十分なクオリティのサービスをユーザに提供する必要があります。
テストを手作業で行うと面倒
これまででテストの重要性を理解できたと思いますが、このテストをすべて手作業で行うと人件費や時間などのコストが非常にかかります。たとえば、1年に1回程度バージョンアップするアプリケーションであれば、それなりにテストにかける時間もかけることができ、それほど問題にはならないかもしれません。
しかし、最近のWebアプリケーションでは、毎日のように変更が発生し、日々改善されています。その際、新たに追加された、もしくは変更された機能のテストだけでなく、既存の機能がそれらの変更に影響を受けず、正しく動作しているかを確認するテストも必要になります。このテストを回帰テストと呼びます。回帰テストはアプリケーションが大きくなればなるほどその量は増えていき、バージョンアップのたびに回帰テストを行っていると、テストにかかるコストは非常に大きなものになります(図1)。
図1
自動テストツールとは
その課題を解決するために利用されるのが自動テストツールです。このツールによって手作業で行っていたことを自動化することができ、適切に使いこなすことによってテストにかかるコストを劇的に引き下げることができます。ただし、自動化できるとはいっても、テストスクリプトの作成やテスト結果の確認と分析などを行う必要があり、かつきちんと使いこなさないと、別の余計なコストがかかることになるので注意が必要です。
自動テストツールの種類
自動テストツールは数多く用意されています。ここでは、テストツールの種類とその内容について簡単に紹介します。
ユニットテストツール
テストプログラムによって関数やクラス単体の動作をチェックするのがユニットテストツールです。テストの実行や値のチェック、テスト結果レポートの生成など、さまざまな機能が備わっており、効率良くテストプログラムを作成できます。
負荷テストツール
システムに対する負荷テストを支援するのが負荷テストツールです。システムの実行にかかる時間を測定したり、サーバへの大量のリクエストを擬似的に発生させたりできます。
セキュリティテストツール
システムの脆弱性検査を行うのがセキュリティテストツールです。SQLインジェクションやクロスサイトスクリプティングなど、さまざまな攻撃に対する脆弱性を検出します。
画面テストツール
作成したプログラムを組み合わせ、実際にユーザが利用するのと同じ状態にしたシステムに対して行うテストをシステムテストと呼びます。クリックやマウス操作などの画面操作を自動で行いシステムテストを自動化するのが画面テストツールです。代表的なツールとしてSeleniumがあります。このツールについては『Selenium実践入門』で詳しく解説しています。
本稿でアプリケーション開発におけるテストの重要性、またテストの自動化についておわかりいただけたかと思います。もし、テストを自動化していない開発者がいれば、自動テストツールの導入を検討してみてはいかがでしょうか。