私は自分のチームのモッキング フレームワークの評価を始めたばかりで、パフォーマンス テストを行う際のモッキングのコストに関して共有できる参照ドキュメントまたは経験へのポインタがあるかどうか疑問に思っています。
リンク?個人的体験?詳細は大歓迎です。
私は自分のチームのモッキング フレームワークの評価を始めたばかりで、パフォーマンス テストを行う際のモッキングのコストに関して共有できる参照ドキュメントまたは経験へのポインタがあるかどうか疑問に思っています。
リンク?個人的体験?詳細は大歓迎です。
Aaron Jensen は、テスト プロジェクトを作成し、いくつかのパフォーマンス テストを行いました。http://codebetter.com/blogs/aaron.jensen/archive/2008/05/08/mock-framework-benchmarks.aspx
API と機能に基づいて選択したいと思いますが、パフォーマンスは TDD と何度もテストを実行すると問題になる可能性があります。
私たちは数年間 TypeMock を使用してきましたが、私の経験では、パフォーマンスに大きなオーバーヘッドはありません (オーバーヘッドがあると確信していますが、それは大きな問題ではありません)。
ただし、TypeMock の動作の性質上、考慮すべき点がいくつかあります。TypeMock は基本的にオンザフライでコードを挿入することによって機能するため、エラーは非常に風変わりなものになる場合があります。したがって、エラーを報告することは、少し骨の折れる作業になる可能性があります。ILを掘り下げる準備をしてください。
私の経験では、TypeMock がどのように機能するかを「平均的な開発者」に説明するのは難しい場合があります。すぐに複雑になり、Trace ツールでトラブルシューティングが可能になったとしても、まだサポート タスクが少し残っています。
また、TypeMock では何でも (mscorlib を除いて) モックできるため、必要なレベルの間接化をコードに追加する必要はありません。これは機能であり、TypeMock に問題はありません。それでも、多くの開発者がコードを分離するのではなく、いたるところをモックすることで問題を解決しようとしているのを見てきました。それは全体的なコード品質 IMO を改善しません。
私はモッキング フレームワーク (具体的には Moq と TypeMock) をテストしてきました。TypeMock ははるかに強力で柔軟ですが、プロファイラーとしてフレームワークにプラグインされるため、パフォーマンスに大きな影響を与えます。
私の結論は、TypeMock は非負荷テスト シナリオ向けの優れたツールであるということです。Moq は柔軟性に欠けますが、軽量であり、一般的なパフォーマンスに大きな影響を与えることはありません。Moq を使用すると、外部依存関係をモックアウトできるようにアプリケーションを特別にセットアップする必要があります (いずれにせよ、優れた設計の演習です) が、私の負荷関連のシナリオにより適していることが証明されています。
残念ながら、Moq と TypeMock に関するテストで実際の数値を記録しませんでしたが、私の経験では Moq のパフォーマンス上の利点は重要です。