ソフトウェア開発において、機能テストは、システムが機能要件を満たしているかどうかを検証するソフトウェアテストの一種です。[ 1 ] [ 2 ]
一般的に、機能テストはブラックボックステストであり、内部プログラム構造は無視されます(ホワイトボックステストとは異なります)。[ 3 ]
機能テストは、品質保証(QA)プロセスである場合もある。[ 4 ]
システムテストの一形態として、機能テストはシステム全体の機能の一部をテストします。名称は似ていますが、機能テストは単一の関数のコードをテストするものではありません。
テストをデリバリーサイクルの早い段階で組み込むという概念は、機能テストに限定されるものではありません。[ 5 ]
機能テストには以下が含まれますが、これらに限定されません: [ 3 ]
コンピュータ プログラミングおよびソフトウェア テストでは、スモーク テスト(コンフィデンス テスト、サニティ テスト[ 6 ]、ビルド検証テスト (BVT) [ 7 ] [ 8 ] [ 9 ] 、ビルド受け入れテストとも呼ばれる) は、たとえば将来のソフトウェア リリースを拒否するのに十分なほど深刻な単純な障害を明らかにするための予備テストまたはサニティ テストです。スモーク テストは、コンポーネントまたはシステムの最も重要な機能を網羅するテスト ケースのサブセットであり、ソフトウェアの主要機能が正しく動作しているように見えるかどうかの評価を支援するために使用されます。 [ 6 ] [ 7 ]コンピュータ プログラムをさらに詳細なテストにかける必要があるかどうかを判断するために使用される場合、スモーク テストは、プレテスト[ 10 ]またはインテーク テスト[ 6 ]と呼ばれることがあります。あるいは、ビルドがテスト チームにリリースされる前に、ビルドがテスト可能であることを検証するために、製品の各新しいビルドに対して実行される一連のテストです。 [ 11 ] DevOpsパラダイムでは、ビルド検証テスト手順の使用は、継続的インテグレーションの成熟段階の特徴の 1 つです。[ 12 ]
回帰テスト(まれに非回帰テスト[ 13 ])は、以前に開発およびテストされたソフトウェアが変更後も期待どおりに動作することを確認するために、機能テストと非機能テストを再実行することです。 [ 14 ]そうでない場合は、回帰と呼ばれます。
ユーザビリティ テストは、ユーザー中心のインタラクション デザインで使用される手法で、ユーザーによるテストによって製品を評価するものです。実際のユーザーがシステムをどのように使用するかについて直接的なフィードバックが得られるため、これは代替不可能なユーザビリティプラクティスと見なすことができます。 [ 15 ]これは製品のデザインの直感性に重点を置き、その製品に事前に触れたことのないユーザーでテストされます。このようなテストは最終製品の成功に極めて重要であり、完全に機能するアプリケーションであっても、ユーザーの間で混乱を引き起こす場合は長くは続きません。[ 16 ]これは、ユーザーを関与させずに専門家がさまざまな方法を使用してユーザー インターフェイスを評価するユーザビリティ検査方法とは対照的です。
機能テストは通常、6つのステップで構成されます。
ウェブ、モバイル、APIアプリケーション全体にわたる機能テストをサポートするオープンソースツールがいくつかあります。これらには以下が含まれます。
回帰問題に焦点を当てたテスト活動は、(非)回帰テストと呼ばれます。通常、「非」は省略されます。