ソフトウェアテストとは、作ったソフトウェアが正しく動作するか、求められている仕様を満たしているか、意図しない動作をしないか、を確認する作業のことです。
また、それを証明するために、仕様にない動作やバグをできる限り多く見つけることを目標とする場合があります。
ここでは、ソフトウェアテストの概要を解説します。
ソフトウェア開発における「テスト」とは
現在、私たちの身の回りは、ソフトウェアであふれています。普段から使うスマホやパソコンをはじめ、テレビや冷蔵庫や洗濯機など…。
それほどまでに身近なソフトウェアの安全はどこで管理されているのでしょうか。
そこで、製品の安全を担保するのが、開発の工程でおこなわれるさまざまな「テスト」です。
テストは、そのときの工程や、目的に合わせてさまざまなものがあります
一般的に「ソフトウェアテスト」と聞くと、作ったソフトウェアを実際に動かして、動作を確認するテストを想像しがちですが、それだけではありません。
上記のようなテストを「動的テスト」というのに対し、要件定義書、機能仕様書、構成仕様書、ソースコードのレビューなど、プログラムを実行しないでおこなうテストを「静的テスト」とよびます。
ソフトウェアテストにはさまざまな種類がある
前述したとおり、ソフトウェアテストにはさまざまな種類があります。
それらは「工程」「品質の観点」「実行方法」「技法」の4つに分けることができます。
①工程
- ■単体テスト:
- ソースコード内の個々のプログラムがきちんと動作するかを検証する。ソフトウェアテストの中でもっとも小さい単位で、ユニットテストとも呼ばれる。
- ■結合テスト:
- 複数のモジュールを組み合わせておこなう検証。単体テストの後におこなう。
- ■システムテスト:
- 開発の最終段階でおこなわれるテストで、仕様通り動いているか、性能は十分かなどを検証する。
→システムテスト(総合テスト)について
②品質
品質の“観点”では下記のような種類がある。
- ■機能テスト:
- テスト対象が持つ目的を果たしているかどうかを検証する。
→機能テストについて - ■性能テスト:
- 性能による問題を起こさないためにおこなう、システムの性能を計るためものである。主に目標とする性能を達成するかどうか、限界の性能はどれくらいかを検証する。
- ■負荷テスト:
- システムが目標とする負荷に耐えられるかを検証する。性能テストと同じように、耐えられる負荷の限界値も検証する場合が多い。これによって、実際の運用でどれくらいの環境まで耐えられるかの目安になる。
- ■ユーザビリティテスト:
- 実際にそのシステムを使うユーザーの視点でおこなう検証のこと。
- ■セキュリティテスト:
- 近年、セキュリティの脆弱性は多くの損害を与えるようになってきたため、もはやバグと等しい扱いになっている。そのため、考えられるリスクを想定して、予想外の事態が起こらないように検証をおこなう。
→webアプリケーション/webサイトの脆弱性診断(セキュリティ診断)について
③実行方法
- ■動的テスト:
- 実際にシステムやプログラムを動かして、その動作に問題がないかを検証する。
- ■静的テスト:
- システムやプログラムは動かさず、問題がないかを検証する。
④技法
テストの技法という観点では下記のような種類がある。
- ■ブラックボックステスト:
- プログラムの中身を考慮せず、入力したデータに対し、出力されたデータが正しいかのみを検証するテスト技法。開発の終盤に行われるシステムテストなどでよく使われる。
→ブラックボックステスト~概要、技法、テスト観点について~ - ■ホワイトボックステスト:
- ブラックボックステストとは反対に、プログラムの中身を考慮し、入力したデータに対し、各プログラムがどう処理しているかまで検証するテスト技法。結合テストや、機能テストなどでよく使われる。
→ホワイトボックステスト~概要、技法、テスト観点について~
テストではどのような作業をおこなうのか
では、次に実際のテストでどのような作業をおこなうのか解説します。
- 【テスト実行前】
- まず、いきなりプログラムを動かしてテストをおこなう前に、計画を立てる必要があります。
その中にはリソースの配分や、スケジュールの設定、テスト終了基準の決定などがあります。
他には、テスト対象の何をテストするのかを決めたり、テスト条件を網羅できるようにテストケースを設計したりします。
→テストプロセス vol.1 ~テストの準備~ - 【テスト実行時】
- テスト実行時も、ただテストを実行するだけではありません。まずは、テスト実行結果の確認です。
何度も実行するテストなど、自動化できる部分は積極的に自動化して、テストの効率を上げていきましょう。
→テストプロセス vol.2 ~テストの実行~ - 【テスト実行後】
- テストが完了したら、そのテストの結果を報告し、今回おこなったテストをドキュメントなどでまとめておき、次回また同じようなテストをおこなう際に引き継ぎなどがしやすいように努めましょう。
→テストプロセス vol.3 ~テストの終了~
まとめ
- ソフトウェアテストの概要
- ソフトウェアテストは「工程」「品質の観点」「実行方法」「技法」の4つに分けることができる
- 実際のテストでおこなわれる手順
ここまで、ソフトウェアテストの概要から、実際の手順までを簡単に解説してきました。
これだけでも、ソフトウェアテストが多くの人と時間を割いておこなわれているかご理解いただけたかと思います。
【参考文献】
『ソフトウェアテスト教科書 JSTQB Foundation 第3版』
【参考URL】
http://gihyo.jp/dev/serial/01/tech_station/0001,(参照 2016年7月30日)