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