目的.
ソフトウェアテストの目的には以下が挙げられる。
変更への信頼.
ソフトウェアテストは「変更への信頼」を生むことでソフトウェアの品質・提供速度を向上させる目的・効果を持つ。
ソフトウェアの変更（例: リファクタリング・機能追加）は既存コードの破壊によるバグ（リグレッション）を引き起こしうるため、ソフトウェアエンジニアに対し、コード変更への心理的ハードルとして作用する。このハードルは変更への躊躇いを生み、品質向上の機会を減少させてしまう。
ただし、一度書かれたソフトウェアが「決して変更されない」場合にはこの効果が発揮されない。（参考: テスト駆動開発）
動的テストと静的テスト.
プログラムを実際に動かしてみて行うテストを動的テストと呼び、プログラムを実際に動かしてみることなくソースコードやオブジェクトコードを検証する作業を静的テストと呼ぶ。静的テストには、ツールを用いた静的コード解析の他に、人手で行うコードレビュー、ウォークスルー、インスペクションなどがある。多くの場合、意識されることはないが、コンパイラまたはプリコンパイラはソースコードを静的にテストする。
性能試験と機能試験.
機能試験は、規定した機能を果たすかどうかを試す。
関数であれば、規定した引数を与えると、想定した戻り値を返すブラックボックス試験が機能試験に相当し、単体試験の一部である。
適合試験、単体試験は、機能試験を主とするが、性能試験を含むことがある。
性能試験 (Performance Test).
性能試験は、単体試験から実施する場合と統合試験から実施する場合とがある。
過負荷に対する性能試験をストレステストという。
ストレステスト.
ストレステストは、ソフトウェアシステムに対して高い負荷を与え、処理の低下・抜け、データの破壊、発熱など致命的な問題が、どういう条件で発生するかを試験する。ストレステストを行うことで、高い負荷が加わっている状況でしか発生しない不具合や、発生確率の低い欠陥、著しい性能の低下を発見することがある。性能試験の一部として実施し、対応可能な付加の仕様を確かめることがある。
検証試験と妥当性確認試験.
決めた仕様に合致しているかどうかを試す試験。プログラミング言語、OS、通信規約、データベースなどの仕様に合致しているかどうかを試す試験を適合試験ということがある。