0

WCF サービスをコンパイルおよびテストするチーム ビルド (アップグレード テンプレート、tfs2010、msbuild) があります。psexec と exec タスクを使用して、統合テスト スイートを実行する前に、サービス (wix インストーラー) を Web サーバーにリモート インストールします。ただし、毎晩のビルドがコンパイル エラーで失敗することがあります。最初の 1024 バイトしか表示されず、そのほとんどが CSS スタイルです。長い JIT が原因かもしれないと考えて、睡眠でテストを遅らせようとしました。ただし、600 以上の統合テストはすべて失敗します。ビルド ログでは、期待どおりに psexec を使用した exec タスクが同期的に実行され、exit 0 が返されるようです。

4

1 に答える 1

0

これは、TFS、msbuild、または psexec に固有のものではないように思えます。サービスの暫定的なインストール、構成、またはコーディングの問題があるようです。CI および統合テストのポイントは、プロセスに関する早期のフィードバックを得ることであり、明らかに何かが間違っています。秘訣は、問題を掘り下げて、問題が存在する場所を除外することです。

Psexec は、WiX の展開はうまくいったと主張していますが、うまくいきましたか? すべてのファイルが存在しますか? 以前のバージョンのインストールは適切に削除されましたか、または正しくアップグレードされましたか?

600 のテストはすべて失敗しますが、テストには適切なスタック トレースが含まれていません。テスト以外で問題を再現できますか? たとえば、テストが失敗した場合、手動でテストをエミュレートしたり、デバッガーを接続して既存のテストの 1 つを実行したりして、同じスタック トレースを表示できますか? 戦略の 1 つは、展開を正確に検証する 1 つまたは 2 つの特定のテストを特定することです。展開後にこれらのテストのみを実行し、これらのテストが失敗した場合は、ビルドを中止し、サーバーを失敗した状態のままにして、より詳細な分析を行う必要があります。これには、ビルド テンプレートのカスタマイズが必要になる場合がありますが、努力する価値はあります。

WCF サービスにログを追加できますか? テストへのロギングを改善しますか?

最後に、前述の CI は早期フィードバックに関するものです。一般的なルールは、「何かが痛い場合は、より頻繁に行う必要があります」です。問題点に焦点を当て、それらを分離し、繰り返し改善します。痛みが軽減したら、他の痛みのポイントに集中します。あなたの場合、「毎晩」ビルドをローリング方式で実行することを検討してください。断続的な問題は、数週間ではなく数回実行した後に見つかります。

于 2012-06-15T23:41:31.790 に答える