検索
キーワード

ソフトウェアテスト(そふとうぇあてすと)情報システム用語事典

software testing / テスト

Share
Tweet
LINE
Hatena

 コンピュータのソフトウェアプログラムを実行し、それが意図したとおりに動くかを観測・評価・検証する作業のこと。通常は検証対象のソフトウェアを実際に試行する動的テスト(注1)を指すが、レビュー(注2)などを静的テスト(注3)と呼んで広義のテストに含める見方もある。

 ソフトウェアテストを行う目的としては、「欠陥やバグ(注4)を検出する」「要件を満たすことを保証する」「リリース後の品質リスクを見積もる」「開発プロセス改善の指標となる」などが挙げられる。どの目的を重視するかは、開発するソフトウェアプロダクトの目的やニーズ、開発組織の成熟度などによって変わってくる。

 ソフトウェア開発におけるテストは一般に、ユーザーの使用状況を反映した入力データを用いてソフトウェアを実行し、事前に想定した結果と実際の実行結果をつき合わせて合否の判定を行う。このテスト用の“入力データ”とそれを実行したら得られるであろう“事前に想定した結果”の対をテストケースという。

 すなわち、テストケースを使って対象を実行してみる“行為”がテスト(testing)である。ただし、このときに使用するテストケース(テストデータ、テストスイート)などの“道具”をテスト(test)ということもある。「テスト設計」「テストを書く」という場合のテストは、道具(※)としてのテストである。

※ 一般にテストは能力や実力、学力などを測る道具である。この場合、テスト問題といってもよい

 さらにソフトウェアプロセスの中でテストチームや品質保証部門が担当する作業の全体である“テストフェイズ”、あるいはテスト目的を達成するようにテスト(行為)を一連の流れに編成した“テストプロセス”をテストと呼ぶこともある。「テスト計画」「テストコントロール」という場合のテストは、テストプロセスやテストフェイズを指す。

 テストされていないプログラムは正しい動作を保証されず、実際に高い確率で正しく動作しない。したがってソフトウェア開発において、でき得る限り網羅的にテストを行うべきであり、テスト自体は必須の工程と位置付けられてきた。しかしながら、ソフトウェア開発の黎明期から「完全なテスト」の困難性が指摘されている。

 実用レベルの複雑さ(規模)を持つソフトウェアの場合、“入力データ”と“実行結果”の組み合わせは事実上無限となる。また、環境に依存する機能では、環境との組み合わせも発生する。このため、ほとんどのテストは無限の組み合わせに対して有限個のテストケースをあてがう作業であって、完全なテストにはならないのである。

 ソフトウェアテストにはさまざまなテスト技法が存在するが、これらは「いかにテストケースを少なく、効率的にテスト目的を達成するか」「どれだけテストをすれば、品質を確保したといえるか」といったテーマに対する工夫である。適切なテストプロセスを計画するには各テスト技法の特徴をよく知り、対象ソフトウェアの開発目的に応じて、どのテスト技法をどの段階で行うのか、正しく取捨選択する必要がある。

 ソフトウェアテストの技法や手法には、以下のようなものがある。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

ソフトウェアテストの世界には、長年の経験をまとめた7つの一般原則がある。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

(注1)動的テスト

(注2)レビュー

(注3)静的テスト

(注4)バグ

参考文献

▼『ソフトウェア・テストの技法〈第2版〉』 グレンフォード・J・マイヤーズ、トム・バジェット、テッド・M・トーマス、コーリー・サンドラー=著/長尾真=監訳/松尾正信=訳/近代科学社/2006年7月(『The Art of Software Testing: 2nd ed』の邦訳)

▼『ソフトウェアテスト技法??自動化、品質保証、そしてバグの未然防止のために』 ボーリス・バイザー=著/小野間彰、山浦恒央=訳/日経BP出版センター/1994年2月(『Software Testing Techniques, 2nd Edition』の邦訳)

▼『ソフトウェア品質知識体系ガイド??SQuBOK Guide』 SQuBOK策定部会=編/オーム社/2007年11月


関連用語

▼デバッグ

▼品質保証

▼検証

▼妥当性確認

▼V&V(verification and validation)

▼IV&V(independent verification and validation)

▼ソフトウェアプロセス

▼ソフトウェアテストプロセス

▼Vモデル

▼Wモデル

▼テストカバレッジ

▼単体テスト

▼結合テスト

▼システムテスト

▼受け入れテスト

▼回帰テスト

▼スモークテスト

▼ブラックボックステスト

▼同値分割

▼境界値分析

▼原因結果グラフ技法

▼ホワイトボックステスト

▼制御パステスト

▼カバレッジ基準

▼コードカバレッジ

▼ステートメントカバレッジ

▼ディシジョンカバレッジ

▼ブランチカバレッジ

▼コンディションカバレッジ

▼ディシジョン/コンディションカバレッジ

▼マルチコンディションカバレッジ

▼パスカバレッジ

▼データフローテスト

▼データフローパステスト

▼エラー推測

▼探索的テスト

▼アドホックテスト

▼ランダムテスト

▼機能テスト

▼非機能テスト

▼デベロッパテスト

▼カスタマテスト

▼QAテスト

▼テスティングフレームワーク

▼テストハーネス

▼テストスタブ

▼テストドライバ

▼BTS(bug tracking system)

▼テストケース

▼テストスイート

▼テストオラクル

▼テストベース

▼成果物

▼モジュール

▼バグ

▼インシデント

▼ソフトウェア故障

▼ソフトウェアフォールト

▼ソフトウェアエラー

▼デグレード

▼リグレッション

▼テスト駆動開発

▼動的テスト

▼静的テスト

▼ソフトウェアレビュー

▼SQuBOK(software quality body of knowledge)

▼TMMi(testing maturity model integration)


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る