2009-04-16 11 views
3

興味があるだけ:Q/A、リリースはデバッグビルド対構築し、アサーション

あなたがソフトウェアがQ/Aにビルドをリリースするとき、あなたは常に「RELEASE」バージョンを使用することを好むか、またはあなたは時々使っていますDEBUGバージョン?

ここに私の思いがあります: 私たちは決して起こるべきではない条件のためにアサートを使用しています。

一方で、Q/Aがアサーションを有効にしてソフトウェアをテストすると、アサーションをトリガするシナリオを作成できる場合は、私たちに報告することができます。

一方、開発者がコードの動作を変更するような方法でアサーションをコーディングしてしまうリスクが常にあります。その場合、Q/Aはアサーションを無効にしてビルドをテストする必要があります。

これまでのRelesaeビルドでは、これまでにQ/Aが動作していました。しかし、Q/Aへの本当に早いリリースがアサーションを有効にして出て行くパターンを試してみることを考えています。その後、出荷に近づくにつれて、ビルドにアサーションが無効になっていることを通知します。

あなたはどう思いますか?

+0

サイドノート: TDDを行っている人にとって、単体テストはコード内のアサーションの必要性や利点を排除していますか? – JMarsch

+0

防衛プログラミングとは、徹底的に使うとかなりの数の基本的なテストをやや時代遅れにします。それでもなお適切なTDDでは、これらのケースでいくつかの例外が予想されるテスト(ArgumentOutOfRangeExceptionなど)を最初に書く必要があります。 – Lucero

+1

私は防衛プログラミングについて同意していますが、私たちは確かにそれを行います - ヌルチェックレンジチェックなど しかし、チェックするのに費用がかかるチェックがいくつかあります。間違い。私たちは、そのような条件に対してアサーションを使用するのが好きです。 – JMarsch

答えて

3

両方をQ/Aにリリースし、両方でテストパスを完了します。自動化されたテストで重い場合、これはちょうどテストを実行するための余分なハードウェアを持つ問題になります。

リリースバージョンは、実際の顧客が使用するものであるため、テストする必要があります。デバッグバージョンには、追加のアサート/検証/トレース/ etcが含まれています。これは、明らかではないバグを見つけるのに非常に役立ちます。

0

リリースビルドにはデバッグシンボルが含まれているため、パフォーマンスが良好です(デバッグ出力とアサーションの広範な使用により、処理速度が低下する可能性があります)が、例外が発生した場合でも有意なスタックトレースが報告されます。

例外については、処理方法がわかっている例外をキャッチするという一般的なルールしかないため、何かが考えられていない場合はQAでポップアップします。キャッチオールは一般的に当社で禁止されています。

1

初期の開発段階でQA用のデバッグビルドを使用し、後でリリースビルドに切り替えることは、まさに私たちがやっていることです。

1

QAは、顧客へのリリースだけでなく、いくつかの中間ビルド(2週間に1回または1ヶ月に1回)をレビューすることを明言しています。

これは、できるだけ開発プロセスの早い段階で製品をチェックするという原則に従います。あなたがバージョンをリリースしているときだけあなたがそれをやっているなら、あなたはそれをやりすぎている。

私はそれらの初期テストでアサーションを有効にしてデバッグビルドを行います。 コードにアサーションが失敗した場合、エラーが発生します。コードが間違っているか、またはアサートされています。いずれにせよ、あなたはQAがそのことをテストしたいと思っています。

1

Me too onデバッグ早期/リリース遅れ;私の以前の雇用主の公式ポリシー(時には違反しましたが、私の責任ではありません)は、ベータ版までのデバッグビルドをテストし、その後はリリースビルドでした。明らかに、あなたが出荷するまでデバッグビルドを実行する価値がありますが、不幸な政治的現実は、デバッグビルドに対して報告された場合、多くのプログラムマネージャがバグを修正しないということです。

関連する問題