Webシステムのテスト

最近、受注案件や自社のWebシステムをテストする機会が増えてきたのですが、今回はテストの基本的な部分について簡単にまとめたいと思います。

※テストの重要性についてPHPプロ!で連載されている「TOM先生のテスト講座」も併せてご覧ください。

まず、テストを大きく以下の3つに分類し、それぞれについてまとめていきたいと思います。

○ 機能テスト
○ 非機能テスト
○ セキュリティテスト

■ 機能テスト
機能テストは、機能要求が満たされていて仕様通りに実装されているかを検証するためのテストです。

機能テストを行っていく上で様々なテスト方法がありますが、今回は以下のテスト方法が取り上げたいと思います。

・同値分割法:
 正当な値と不当な値の両方の代表値を入力してテストを行う方法。(例. 20以下までの入力欄で15と25を入力)
・境界値分析:
 正当な値と不当な値に分け、その境界となる値を入力してテストを行う方法。(例. 20以下までの入力欄で20と21を入力)
・デシジョンテーブルテスト:
 入力と出力の関係をマトリクス形式で表して行うテスト方法。
・状態遷移テスト:
 仕様通りに状態間の遷移が網羅されているかを確認するためのテスト。
・ユースケーステスト:
 成功のシナリオ(ユースケース)を作成して、それに沿ってテストを行っていく方法。

■ 非機能テスト
信頼性や安全性のためのテストです。
主に以下のように区分されます。

・性能テスト:
 データの増加により性能の劣化やレスポンスの低下などがないかをテスト。
・負荷テスト:
 システムに対して大量アクセスを発生させ、そのアクセスに耐えられるかをテスト。
・ストレステスト:
 高い負荷や想定を超えたアクセスを限界状態まで与え、データの破壊やシステムがダウンしないかをテスト。
・信頼性テスト:
 常に稼働するようなシステムにおいて、一定の時間、システムの機能を使用しダウンしないかをテスト。
・保守性テスト:
 機能の追加・修正やシステムの移行などで変更が加わる場合に、動作に問題がないかをテスト。
・ユーザビリティテスト:
 ユーザインターフェースに問題(使いやすさやリンク切れ、ブラウザに依存する問題など)がないかをテスト。

■ セキュリティテスト
情報漏洩や不正アクセスなどを防ぐため、脆弱性がないかを検証するためのテストです。
※セキュリティをチェックするためのツールについては、「フリーで使えるセキュリティスキャナ・ツールまとめ」もご覧ください。

今回はすごく簡単にまとめましたが、次回機会があればもう少し詳しく書いていきたいと思います。