2009-03-06 12 views
2

ほとんどのギグ私は最終的にユニットテストをほとんどまたは全くしていない。通常、単体テストとして記述されているのは実際には統合テストであり、開発者マシンからはほとんど実行されません。私は通常、両者の違いを説くことで伝道を始め、人々に焦点を当てた単体テストを書いて、後で、つまり十分な人が単体テストを書いているときに統合を書くことに移ることができるようにしますテスト。受け入れレベルまたはシステムレベルのテストは、通常、開発者によって手動で、次にQA部門によって手動で処理されます。ユニット、統合、受入テストにもっと集中していますか?

私の質問は、アジャイル環境の外で作業する場合、ユニット、統合、受入テストにどのくらいの労力を払うのですか。

答えて

1

非常に頻繁にこの質問への答えは極端に行きます。あなたがカバレッジをほぼ100%持っているかのように、またはユニットテストがばかだ.......

私はあなたがバランスを見つけなければならないと信じています。

ユニットテストは、クラスのロジックが失敗する可能性が疑わしい場合に使用します。単体テストは独立したクラスで行う必要があるので、クラスが使用するサービスをモックする必要があるかもしれません。これにより、単体テストでクラスが期待どおりに動作することが保証されるため、リファクタリングを安全に実行できるようになります。

アプリケーションが確実に動作するためには、統合テストが必要です。単体テストの数は可能ですが、アプリケーションが正しく動作することを意味するものではありません。

私は受け入れテストに関して完全に同意します。それらはスプリントの最後で行い、部分的には手動で行う必要があります。

0

私はそれを混ぜることはできないと思います。あなたが説明したそれぞれのテストは、それぞれ異なる目標を持っています。

ユニットテストは開発者を対象としています。モジュールの実装前または実装と並行して単体テストを作成して動作させるか、すべてのインタフェースと要件が満たされているかを確認します。

統合テストは、開発後にテストセンターから実行されます。開発中に単体テストのように単一のモジュールをテストすることはありません。統合テストは、複数のモジュール間の相互作用をカバーしています。

受け入れテストでは、多くの場合、すべての要件が満たされ、機能が指定どおりに実装されているかどうかを確認する必要があります。

+0

なぜテストセンターからの開発後に統合テストが行​​われるのですか?統合テストは、単体テストをカバーしていない、開発者テストのままでも構いません。 – tddmonkey

+0

はい、そうです。ほとんどの場合、開発者もテスターに​​なります。しかし、ベストプラクティスは、開発とテストが異なる人によって行われることです。開発者は、彼が中立的な人のように書いたアプリケーションとはまったく異なる見方をしています。 – Alexander

+0

統合テストは、チームリードの存在下(またはチームリーダーとのコミュニケーション中)に行われる必要があります。理由を示すために私の答えを改訂しました。 –

2

私は最初からユニットテストをしています。私は世界最大のTDDファンではありませんが、私は単体テストで本当にハープしています。私は、ユニットテストのすべてがうまくいくので、魔法の妖精が統合テストを通過することを確実にするつもりはないと思っていますが、それはかなり近づきます。

受験テストでは、単体テストが合格(または失敗したと思われる場合は失敗)するまで何か見るつもりはありません。私は単体テストの完全な欠如を受け入れることが多くのケースを考えることができません。アプリケーションのいくつかのコアlibが更新されるとどうなりますか?

多くの人は、単体テストは開発者中心であり、正しいと主張します。しかし、単体テストの欠如は、すべてそれ自身の指標です。受け入れテストをやって1が開発者:)であることを起こる場合は特に

編集:

統合テストも私にとって重要です。我々は、通常、非常に厳しい仕様に物事を構築します。統合テストが失敗した場合(以前に通過した後)、スコープクリープの強いインジケータです。それが起こると、誰かがそれを修正する前に雑音を出す必要があります。

+0

+1魔法の妖精の文のために。 – Epaga

1

ユニットテストは壁の個々のレンガをテストするようなもので、機能/統合テストは安定性のために壁全体をテストするようなものだと聞きました。

ユニットテストは、開発者がクラスが想定していることを確実に実行するために必要です。

機能/統合テストは、実際に特定の機能を提供するという「大きな目標」の目標を見逃さないようにするために必要です。

だからIMHO、の両方が絶対に必要であり、ROIの観点からはどちらかを残すことは悪い考えです。

関連する問題