質問

きかん TDD, いかに伝えるのに十分な試験のためにこのクラス/特集"?

I.。きもしないといけないと考えている修了試験端のケースはどうでしょうか。

役に立ちましたか?

解決

テスト駆動開発では、テストするコードを記述する前にテストを記述します。コードを記述し、テストに合格したら、別のテストを作成します。 TDDに正しく従えば、コードが必要なことをすべて実行したら、十分なテストを記述できます。

エッジケースについては、メソッドのパラメーターの検証などの例を見てみましょう。コードにパラメーターを追加する前に、コードが各ケースを正しく処理することを確認するテストを作成します。次に、パラメーターと関連ロジックを追加して、テストに合格するようにします。より多くのエッジケースを考える場合、さらにテストを追加できます。

一度に1ステップずつ実行することで、コードの作成が終了したときにエッジケースを心配する必要がなくなります。すべてのテストを既に作成しているためです。もちろん、人的エラーは常にあり、何かを見逃す可能性があります...そのような状況が発生したら、別のテストを追加してコードを修正します。

他のヒント

Kent Beckのアドバイスは、恐怖が退屈になるまでテストを書くことです。つまり、適切なレベルの恐怖から始めることを前提として、何かが壊れることを恐れなくなるまでです。

あるレベルでは、それは直感です

  

"テストで考えられるすべての問題が検出されると確信していますか   今?"

別のレベルでは、満たす必要がある一連のユーザーまたはシステム要件が既にあるため、そこで停止できます。

コードカバレッジを使用してTDDプロセスに従わなかったかどうかを確認し、削除できるコードを見つけますが、停止するタイミングを知るための便利な方法としてコードカバレッジをカウントしません。コードカバレッジは100%になる可能性がありますが、要件を含めるのを忘れた場合は、実際には完了していません。

おそらく、TDDについての誤解は、テストする前にすべてを知っている必要があるということです。 TDDプロセスから生じるテストはパンくずリストのようなものであるため、これは見当違いです。あなたは過去に何がテストされたかを知っており、ある程度まであなたを導くことができますが、次に何をすべきかを教えてくれません。

TDDは進化プロセスと考えることができると思います。つまり、最初の設計から開始し、一連のテストを行います。コードが実稼働環境でボロボロになると、さらにテストを追加し、それらのテストに合格するコードを追加します。ここにテストを追加し、そこにテストを追加するたびに、TDDも実行することになり、それほど費用はかかりません。テストの最初のセットを書いたときには、これらのケースが存在することを知りませんでしたが、今は知識を得て、ボタンを押すだけでそれらの問題をチェックできます。これがTDDの大きな力であり、私がTDDを強く支持する理由の1つです。

まあ、意図したとおりに動作しない障害ケースがこれ以上考えられないとき。

TDDの一部は、実装したいもののリストと現在の実装の問題を保持することです...そのリストがなくなったら、本質的に完了です。

また、実装に関するバグや新しい問題を発見したら、いつでも戻ってテストを追加できることを忘れないでください。

その常識、完璧な答えはありません。 TDDの目標は、恐怖を取り除くことです。十分にテストしたことに自信が持てたら、...

後でバグを見つけた場合は、最初にバグを再現するテストを作成し、修正することを忘れないでください。そうすれば、将来の変更が再び壊れるのを防ぐことができます!

カバレッジのXパーセントがないと文句を言う人もいます....一部のテストは役に立たず、100%のカバレッジはコードを破壊する可能性のあるすべてをテストすることを意味するものではなく、使用方法!

試験は正確に記述するものです。追加の試験を拡大します 範囲 何をしたい、または追加し 詳細 のと考えている。

きの種類を考えないといけないものである、ということをしたい、改善をしたいとして、地下鉄からも近くて便利。でき、いつも帰ってきてしまう。

TDDのテストは、仕様を対象としています。実際には、仕様の代替になります。 TDDでは、テストはコードをカバーすることではありません。コードが仕様をカバーしていない場合、コードはテストに失敗するため、コードが仕様をカバーしていることを確認します。余分なコードは関係ありません。

だから、テストがあなたや利害関係者が持っているすべての期待を記述しているように見えるとき、あなたは十分なテストを持っています。

Agile / XPの世界のどこかで見逃したかもしれませんが、プロセスについての私の理解は、開発者と顧客が機能の一部としてテストを指定することです 。これにより、テストケースをより正式な要件のドキュメントに置き換えることができ、機能のユースケースを識別するのに役立ちます。これらのテストがすべて合格したら、テストとコーディングが完了します。途中での

Alberto Savoia says " すべてのテストに合格した場合、テストが成功する可能性があります十分ではありません"。テストについて考えるのに良い方法だと思います:エッジケースを行っているかどうかを尋ねたり、予期しないパラメーターを渡したりします。テストの品質を向上させる良い方法は、ペア(特にテスター)と連携して、より多くのテストケースについてのヘルプを得ることです。テスターとのペアリングは、視点が異なるため優れています。

もちろん、いくつかのツールを使用して突然変異テストを実行し、あなたのテスト。 Jester を使用しました。これにより、テストと作成方法の両方が改善されます。そのようなものを使用することを検討してください。

よろしく

理論的には、可能なすべての入力の組み合わせをカバーし、出力が正しいことをテストする必要がありますが、それだけの価値がない場合もあります。

他のコメントの多くは、頭に釘を打ちました。テストカバレッジを考慮して作成したコードに自信を持っていますか?コードが進化しても、テストはそれを適切にカバーしていますか?テストは、テスト対象のコンポーネントの意図された動作と機能をキャプチャしますか?

幸せな媒体が必要です。テストケースを追加すると、エッジケースと見なされるものが絶えず変化するため、テストが脆弱になる可能性があります。以前の多くの提案に従って、考えられるすべてのものを事前に取得し、ソフトウェアの成長に合わせて新しいテストを追加すると非常に役立ちます。この種のオーガニックグローは、事前の労力をかけずにテストを成長させるのに役立ちます。

うそをつくつもりはありませんが、追加のテストを書くために戻るとしばしば怠け者になります。 0コードを含むプロパティや、気にしないデフォルトコンストラクターを見逃す可能性があります。プロセスについて完全に理解していなければ、重要度が低い(100%コードカバレッジの神話)n個の領域の時間を節約できます。

最終目標は、一流の製品を世に出し、テストをやめないことです。何かを見逃しているような感覚を持っている場合は、チャンスがある可能性があり、さらにテストを追加する必要があります。

幸運と幸せなコーディング。

EMMA( http://emma.sourceforge.net/)またはそのEclipseプラグインEclEmma( http://www.eclemma.org/ )など。一部の開発者は、100%のテストカバレッジが価値ある目標であると考えています。他の人は同意しません。

何かを失敗させる可能性がある理由の範囲内で、あらゆる方法を考え出してください。 NULL値、範囲外の値など。簡単に何も思いつかない場合は、他の何かに進みます。

今後、新しいバグを見つけたり、方法を見つけたりする場合は、テストを追加してください。

コードカバレッジに関するものではありません。コードは「カバー」されているため、これは危険なメトリックです。 「よくテストされる」ずっと前に。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top