2016-08-24 10 views
3

中規模から高度に複雑なアプリケーションには(YAMLまたはプロパティファイルを使用して)多くの構成が含まれているため、プロパティまたは構成を検証するユニット/統合テストを作成することは理にかなっていますか?プロパティまたは構成を確認するユニット/統合テスト

これらの構成の多くは、基礎となるライブラリまたはフレームワークで使用されていても実行時の動作を引き出します。実行時に構成が正しく使用されていることを確認することは賢明な考えですか?

コンパイラーの安全性がないので、構成が正しく動作を指示しているかどうかを何らかの形で確認する必要があります。

con引数は、基本フレームワークの実装を検証していますか?

コンフィギュレーションファイルだけをテストすると、実行時にコンフィギュレーションが正しく使用されるかどうかが保証されない場合があります(タイプミスなどのミスがある可能性があります)。

+0

私はsrc = test \ resources'のための独自のプロパティーファイルを持っています。実行時の設定が異なっていることを考えればそれほど価値がないとは思いません。 – vikingsteve

答えて

3

いいえ単位テストでは、テストハーネスで何が動作しているかがわかります。

の設定を確認したければ、頭の爪に当たってしまいます。テストと検証は全く異なる2つのことです。実稼働環境でランタイム設定を確認する方法がある場合は、ランタイムの誤動作を診断するのにも役立ちます。

ランタイム設定を確認する方法はたくさんあります。最も簡単で最善の方法はログです(例:「2016-09-24 10:13:00に接続してhttp://my-configured-server.example.comにアクセスしてユーザートークンを取得する」)。設定をログファイルにダンプするだけでなく、エンドツーエンドの検証でも、設定の詳細をログメッセージに振り分けます。

多くの場合、設定の問題はすべて、またはまったくありません。あなたが正しく構成されていない場合、何も起こらず、あなたは理由を知らない。 (これは関数型プログラミングの場合に特に当てはまります)。ロギングは、構成が何であるかだけでなく、構成が失敗する瞬間を伝えます。

構成の詳細をランタイムに振りかける巧妙な方法があります。たとえば、ランタイムの詳細をエラーメッセージ、特にログよりも余裕がある場所の電子メールに添付することができます。または、UI要素の上にマウスを置くと、その要素に関するクラスやその他の事実が示されるデバッグモードです。

統合テスト(一緒に差し込まれたときにコンポーネントが動作)とスモークテスト(一部完全な構成は何か右はない)手動testing--せずに展開した場合、私は必要だと思いますimportant--になることはできませんが、彼らは何をしていますランタイム検証の代わり。

+0

どのような構成であるのか、プロダクションに導入した直後に実行される自動化機能テストは、システムが間違いなく重要なユースケースを実行できるため、構成が正しいことを間接的に示すことができます。 –

+0

良い点、マウリ。テストは "あなたは何を恐れるべきですか?"という質問に答えるべきです。バージョンコントロールにチェックインした変更が壊れた展開を引き起こす場合は、そのことを恐れてはならないため、テストする方法を見つける必要があります。誰か(例えば、テストエンジニア)がコードが実行されないことを即座に気付く展開プロセスに手作業で足を踏み入れる場合は、スモークテストを追加することはオプションです。恐怖を感じる最悪のことは恥ずかしいからです。 –

1

これはかなり理想的なIMHOです。私は関与していた以前のプロジェクトの一つで - mSOAプラットフォーム、(当時の)簡単にウェブサイトの数百をサポートし、我々は問題のほとんどが原因正確

構成が正しくで使用されているものであったことが判明しましたランタイム

Orchardレシーバーは多くの時代にも混乱していました。だからDocker containersのポイント。製品/サービスが使用しているインフラストラクチャとその構成をテストするのはかなり簡単です。私は正常にserverspecを使用しました。

関連する問題