2008-09-03 16 views
6

私が保守しているアプリの自動回帰テストスイートに取り組んでいます。自動回帰テストを開発している間、私はいくつかの動作を実行しました。これはほぼ確実にバグです。だから、今のところ、私は自動回帰テストを修正して失敗を登録しないようにしました。それは意図的にこの悪い振る舞いを許しています。失敗を登録し続けるべきですか?

私はこのサイトの他の人の意見に興味があります。明らかに、このエラー動作が修正されるように、私は欠陥追跡にバグを追加します。しかし、回帰テストを変更して常に失敗を示すか、回帰テストを破ったままにして、欠陥のある行動を修正するまで失敗しないような説得力のある理由はありますか?私はこれを他のタイプの質問のうち6つのうちの6つと考えていますが、私は他の人がそれを違う方法で見るかもしれないと思ったのでここで尋ねます。


@Paul Tomblin、

ただ、明確にするために - I'veテストを削除するとは見なされません。私は、テストを実行するたびに顔に投げ込まれることなく、失敗を許すために合格/不合格の条件を変更することを検討していました。

私はC++で警告のように扱われる既知の原因からの繰り返しの失敗について少し気になります。私はC++コードで警告を見て、単に無用なノイズだと思うので無視するだけの開発者を知っています。私は、回帰スイートに既知の失敗を残すことは、人々が他の、おそらくより重要な失敗を無視し始める恐れがあることを恐れている。

私は誤解されることがありますので、私はC++の警告を強力なコードを作成する上で重要な助けになると考えていますが、私が会った他のC++開発者から判断すると少数派です。

答えて

1

私は "hell yeah!"と言うでしょう。単純な事実は、それは失敗ですか?はい!その後、ログに記録する必要があります。あなたは、失敗したテストを合格させることによって、あなたのテストをかなり損なうことになります。

私が個人的に気になることは、私がこれを行い、バスの下に行った場合、「パッチ」が削除されない可能性があるということです。

、プロジェクトのメモを更新し、それをままに(可能ならば)おそらく重症度を下に移動し、確かに壊れたものをチェックしている事を破るいけない;)

5

テストを中止すると、どのように修正されたのかを知ることができます。さらに重要なことは、どのようにして再度壊れているかを知ることですか?私はあなたが再びそれを再び追加することを忘れる可能性があるので、テストを取ることに反対です。

1

をそれがでなければ、それは失敗ままにしてください期待されたことをやっている。

それ以外の場合は無視しすぎます。物事を簡単に保つ - それはうまくいくか、そうではない。失敗や成功:)

- 失敗テストを持つケビンフェアチャイルド

0

は、格子の一種です。壊れたコードと未完成のコードには違いがあり、テストがすぐに対処されるかどうかは、この失敗するテストがどのような状況で発生するかによって決まります。

壊れている場合は、後でなく早く修正する必要があります。未完成の場合は、時間があるときに対処してください。

いずれにしても、それはひどく(今のところ)動作していることが明らかです。問題がログされている限り、問題を修正するまであなたの気持ちを変えないかもしれません。

1

私はポールが言ったことのほとんどに同意しますが、議論の反対側は厳密に言えば、古いバグではなくプログラムの動作の変化をテストすることになっているということです。彼らは具体的にあなたが働いていたものを壊したときにあなたに伝えることになっています。

私はこれがこのアプリケーションで実行されている他の種類のテストに沸っていると思います。あなたが何らかの単位テストシステムを持っているなら、回帰テスト(少なくともバグが修正されるまで)ではなく、このテストのためのより適切な場所になるかもしれません。しかし、回帰テストがあなたの唯一のテストであるならば、おそらくテストをそのままにしておきます。

4

ユニットテストに「スヌーズ」機能を追加しました。これにより、基本的に 'この日付からX週間間の失敗を無視する'と言われる属性でテストに注釈を付けることができました。開発者は、これでしばらくの間固定されないことが分かっていたテストに注釈を付けることができましたが、手動で再度有効にするために将来介入する必要はなく、テストは指定された時間にテストスイートにポップバックされます。

1

バグがあるときにテストに失敗するのが最良ですが、これはしばしば実用的ではありません。最初にエリアにテストを追加すると、発見したバグでうんざりしてしまい、そのために主な目的を終了しないことが特に簡単です。また、長時間失敗したテストは、ノイズが多く、無視しやすくなります。

失敗したテストを書くことはバグを修正することの一部であり、これらのバグを修正することは重要です。これは、現在の製品と品質の優先順位によって決まります。他の努力の副作用としてテストを作成した場合、それはいいですが、あなたの実際の優先順位からあなたをそらすことを許されるべきではありません。

テストを改善して警告を表示し、バグを報告する際には、バグを発見することをお勧めします。これは幅広い優先アプローチであり、現状のタスクを実践しながら、実際に学習したものを使用します。バグの修正が予定されている場合は、テストを実際の失敗に簡単にすることができます。

他の回答者とは違って、失敗は警告と同様に無視しやすく、失敗を無視するようにチームを訓練するコストは高すぎると考えています。この努力の一環として失敗したテストを作成した場合、タスクがそれを改善していたときに、あなたは回帰テストスイートのユーティリティを破壊してしまいます。

関連する問題