2

SDLC では、テスト手順は実装直後に行う必要があります。ただし、テスト駆動開発では、実装を行いながらテストを行うことが推奨されます。私の講義で教授は、テストケースは設計の一部であるべきだと言いました。

新機能を実装するジュニア開発者ですが、いつテスト ケースを設計して文書化する必要がありますか?

実装を終えた後にすべてのケースをテストするのはあまり現実的ではないことがわかりました。ケースが失敗すると、コードを変更してすべてのケースを再テストする必要があるためです。これを克服して回避する別の方法はありますか?自動化された睾丸が解決策の 1 つであることは知っていますが、どういうわけか、自動化された睾丸はすべてのテスト ケース、特にさまざまな関係者が関与する統合テスト ケースを刺激することはできません。

また、私のテスト ケースでは、コードのすべての部分をテストする必要がありますか? または、その機能リクエストの機能をテストするだけですか? それとも、実際にどれくらいの時間を得たかによって異なりますか?

どうもありがとう。

4

2 に答える 2

5

あなたの質問に答えるのは簡単ではありません。なぜなら、あなたが言うように、「それは実際にどれだけの時間を得たかによる」からです。ただし、いくつかの意見があります。

実装後のテスト: いいえ

プログラマーとして、あなたは高価で希少なリソースであり、複数の締め切りが重なり合っています。事実上、これは「テストしない」ことを意味します。コードの 1 つのチャンクを実装した後、次のコードのチャンクに進み、「時間があれば」テストを書きに戻ることを意味します (時間がありません)。

ご指摘の問題もあります。コードを書いた後にすべてのテストを行い、そのテストで何か根本的な問題が見つかった場合は、戻ってすべてのコードとすべてのテストを修正する必要があります。

実装中のテスト: はい

この方法は、リズムをつかむと実際に非常に役立ちます。クラスを少し書き、次に単体テストを少し書き、完了するまでテストとコードを継続的に修正します。実際、テストなしでコードを書くよりも速いと思います。

また、大規模なプロジェクトで作業する場合にも特に役立ちます。単体テストを実行して、小さなモジュールが機能しているかどうかを確認するのは瞬時です。アプリケーション全体をビルドしてロードして、小さなモジュールが機能しているかどうかを確認するには、数分かかる場合があります。また、集中力が途切れる可能性もあります (少なくとも 10 分かかります)。

何をテストするか: 可能な限り

100% のテスト カバレッジはおそらく実用的ではありません。ただし、プログラムの重要な部分、つまり数学的計算や多くのビジネス ロジックを実行するものは絶対にテストしてください。残っているものはすべて可能な限りテストします。「toString()」関数をテストする理由はありません。ただし、それがビジネス ロジックなどにとって非常に重要な場合を除きます。

また、入力と出力だけで、テストをできるだけシンプルに保ちます。テスト関数のほとんどは 2 行または 3 行です。組み合わせが多すぎて関数のテストが難しい場合は、関数を少し分割する必要がある可能性があることを示しています。エッジケースと「不可能」なシナリオを必ずテストしてください。

于 2011-08-22T17:31:55.767 に答える
2

私の経験:

  1. コードが自明ではない場合、またはテストされているケースが一見すると明らかではない「トリッキーな」コーナーケースである場合は、テストを文書化します (コードはそうかもしれません)。
  2. テスト用に個別のドキュメントを作成しないでください。Java を使用している場合は、すべてをコメントと Javadoc に入れます。つまり、この情報をコードの近くに置いてください。それが必要なところです。
  3. 設計と実装について: ただ繰り返すだけです。いくつかの実装を書き、それから少しテスト コードを書き、さらに実装コードを書きます。実装とテスト コードの両方が完成するまで続きます。すべての実装を作成してからテストし、失敗した実装コードを書き直すよりも高速です。設計時にすべてのテストを実装することを期待することはできません。それは不可能ですですから、すべてを理解できなくても心配はいりません。
  4. コードの 80% 以上をカバーしていれば、既に優れていると言えます。場合によっては、コードをテストできないことがあります。Emma for Java などのテスト カバレッジ ツールを使用することをお勧めします。

それとも、実際にどれだけの時間を得たかによって異なりますか?

テストを行わないことで節約できる時間は、プロジェクトの後半でバグを解決するために費やさなければならない時間の代償にはなりません。適切なテスト セットは、常に多くの利益をもたらします。

于 2011-08-22T17:25:32.510 に答える