健全性テスト

健全性テスト（けんぜんせいテスト）は、計算結果が正しいかどうかを素早く評価するための基本的なテストのこと。サニティテスト（）、サニティチェック（）、健全性チェック（けんぜんせいチェック）とも呼ばれる（健全性検査/健全性審査"という単語が銀行/国家など経済の文脈でストレステストにも使われることがある）。
サニティテストは作成されたものが合理的かを確認する簡単なチェックである（作成者が合理的に考え、正気だったこと）。サニティテストのポイントは、考えられるすべてのエラーをキャッチするのではなく、明らかに誤った結果の特定のクラスを除外することである。テストを実行には、経験則や大ざっぱな計算を活用できる。初期に健全性テストを実行する利点は、基本機能を迅速に評価できることである。
たとえば、算数では、9を掛けるときに、掛けた数が9で割り切れることを確認するのは、サニティテストである。"すべての"乗算エラーをキャッチできるわけではないが、"多くの"考えられるエラーをすばやく簡単に発見"する"方法である。
計算機科学では、サニティテストは、システムがほぼ期待どおりに機能することを確認するため、コンピュータプログラム、システム、計算、または分析機能を簡単に実行させることである。サニティテストは多くの場合、より徹底的なテストの前に行われる。
数学.
サニティテストは、数値計算のクロスチェックに使うさまざまな規模感の概算や経験則である。例えば以下の通り：
ソフトウェア開発.
ソフトウェア開発では、サニティテスト（「迅速、広範の浅いテスト」を提供するソフトウェアテストの形式）は、アプリケーション機能のサブセットの結果を評価して、アプリケーション全体のさらなるテストを続行することが合理的かを判断する。サニティテストは、スモークテストと同じ意味で使用される場合がある。厳密に言うと、スモークテストは、プログラムの最も重要な機能が機能するかどうかを確認して、さらにテストを進める非網羅的なテストであるのに対し、サニティテストは特定のバグ修正がソフトウェアの幅広い機能をテストしなくても期待どおりに動作するかどうかを指す場合もある。 言い換えると、サニティテストでは、コード変更の結果が正しく機能するかどうかを判断し、スモークテストでは、プロセスで他に重要なものが壊れていないことを確認する。サニティテストとスモークテストは、アプリケーションが本格的なQAテストに値するかどうかをすばやく判断することで時間と労力の浪費を避けることができる。
多くの場合、サニティテストは、開発コードをテストまたはトランクバージョン管理ブランチに統合する前の、関数、ライブラリ、アプリケーションの自動単体テスト、 自動構築、 または継続的インテグレーションと継続的デプロイに対して行われる。 
サニティテストのもう1つの一般的な使用法は、プログラムコード内で実行され、関数の引数や戻り値が正しいかどうかを検証する方法である。関数が複雑になるほど、その戻り値のチェックが重要になる。些細な例は、関数の戻り値が成功または失敗しているかを確認し、失敗ならそれ以上の処理を停止することである。この戻り値は、サニティチェックに利用できる。たとえば、関数がファイルを開いたり、書き込んだり、閉じたりした場合、戻り値のサニティチェックで、これらのアクションのいずれでも失敗していないことを確認できるが、しばしば見落とされる。 
これらの種類のサニティチェックは、開発中のデバッグや、ソフトウェアランタイムエラーのトラブルシューティングで使用できる。たとえば、銀行口座管理アプリケーションでは、引き出しの要求が口座の合計残高よりも多いと、残高がマイナスにならずにサニティチェックが失敗する。別のサニティテストとして、預金や引き落としが履歴データのパターンにマッチしていることを確認する方法がある。たとえば、カード所有者がこれまで訪れたことのない海外で大規模な購入取引やATMの引き出しをすると、要確認のフラグが立てられる。
安定した本番ソフトウェアコードを新しいコンピュータ環境にインストールすると、サニティチェックも実行され、互換性のあるオペレーティングシステムやリンクライブラリなど、すべての依存関係が満たされていることを確認する。コンピュータ環境がすべてのサニティチェックに合格すると、インストールプログラムは環境に問題がないと判断する。
Hello Worldプログラムは、同様の方法で開発環境のサニティテストとしてよく使用される。一連の単体テストを実行する複雑なスクリプトではなく、この単純なプログラムがコンパイルまたは実行に失敗した場合、サポート環境に構成上の問題があり、コードのコンパイルまたは実行が妨げられた可能性がある。「Hello world」が実行できた場合は、他のプログラムで発生した問題は、環境ではなく、そのアプリケーションのコードのエラーに起因する可能性が高い。