Webアプリケーションの開発において、正しく設計通りに動くか確かめる作業は欠かせません。
アプリが正しい挙動を示すか確認する作業であるテストですが、いろいろ種類があるのでまとめます。
テストの種類
テストは正常系と異常系に分類されます。
・正常系
ユーザーが開発者の意図する動作を行った時の挙動を確認する
・異常系
ユーザーが開発者の意図しない動作を行った時の挙動を確認する
例:ある登録情報の必須項目の入力欄を空欄にしたまま送信すると、エラーメッセージが出て登録できないという挙動は異常系に分類される。
また、単体テスト、結合テスト、総合テストといった種類があります。
・単体テスト
アプリケーションの中の各機能の挙動のテストを行う
・結合テスト
ユーザーがブラウザで操作する一連の流れの挙動をテストする
例えば、会員登録において各項目を入力して登録までできるかを確認
・総合テスト
機能、非機能面も含めてシステム全体のテスト
Webアプリケーションのテストの種類
・機能テスト
アプリケーションの各機能のテスト
・性能テスト
アプリケーションのパフォーマンスを測定するテスト
ページにアクセスして画面が表示されるまでの速度など
・負荷テスト
大量のアクセスにもサーバダウンせずに耐えられるかのテスト
・ユーザビリティテスト
全体の見た目、レイアウトがなっているか、ユーザーの操作性は良好かを確認
・セキュリティテスト
外部からの不正アクセスや情報漏洩、アプリの脆弱性を確かめるテスト
・リグレッションテスト
システムに修正を加えたときに、他の個所に不具合が出ていないかを確認するためのテスト
ホワイトボックスとブラックボックステスト
・ホワイトボックステスト
テスト対象の内部の構造(ソースコードのこと)に注目してテストケースを作成
・ブラックボックステスト
内部の構造は考慮せず、外部から網羅的にチェックするテスト
ホワイトボックステストではすべてのプログラムが意図したとおりに動くかを、エンジニアが作成したロジック通りに、ソースコードやログを見ながら確認します。
ブラックボックスは中の見えない箱という意味で、アプリケーションの内部のソースコードに基づく挙動を確認しないという意味合いで使われます。
なので、内部構造や情報の処理方法は考えないので、プログラムが内部でどのように動いているのか確認は取れません。
ブラックボックステストではある情報の処理結果はインプット・アウトプットの結果のみを確認することで検証することになります。
また、ユーザーん目に見える範囲で行われるので、UI/UXといったユーザビリティや見た目のテストもこれに含まれます。
テストはアプリーケーションの品質を保つのに非常に重要な過程となります。
開発工程において機能の実装ばかり考えがちですが、テスト駆動開発(TTD)といった手法もあるぐらい、バグやエラーを出さないことが最優先となります。
いくら素晴らしい機能を実装できても、他の部分でバグが起こってしまえば台無しになってしまいますので、良いエンジニアになるべくテストに関わる技術はしっかり身につけたいものです。
■参考
https://gihyo.jp/dev/serial/01/tech_station/0006
https://hnavi.co.jp/knowledge/blog/system_test/
https://hnavi.co.jp/knowledge/blog/white-box-test/