こんにちは私のプロジェクトでは、何百ものテストケースがあります。これらのテストケースは、すべてのチェックイン時にトリガされるビルドプロセスの一部です。このプロジェクトはかなり大きく、 5年以上続いています。
テストケースが非常に多く、1時間以上かかる場合があります。テストケースの一部が正しく構成されていないため、リファクタリングした後に実行時間を大幅に短縮できましたが、何百ものテストケースがあり、ひとつひとつがあまりにも多すぎるようです。
私はテストケースのいくつかを実行します(実際には実行に時間がかかります)。これは夜間のビルドの一部としてのみで、すべてのチェックインの一部としては実行されません。
他の人がこれをどのように管理しているか、私は不思議です。管理方法TDDでのビルド時間
答えて
「レガシーコードを有効に使う」と言っていたのは、テストスイートが2分以上かかると、開発者をあまりにも遅くして、テストが無視され始めると彼は言ったと思います。あなたがその罠に落ちているように聞こえる。
データベースに対してテストケースを実行していますか?それがパフォーマンス問題の最大の原因です。原則として、可能であれば、テストケースはI/Oを行うべきではありません。 Dependency Injectionでは、データベースオブジェクトをコードのデータベース部分をシミュレートするモックオブジェクトで置き換えることができます。これにより、コードをデータベースが正しくセットアップされているかどうかにかかわらずテストすることができます。
Michael FeathersのWorking Effectively with Legacy Codeを強くお勧めします。彼は、一度にすべてのコードをリファクタリングすることなく、あなたが走っているように見える頭痛の多くを処理する方法について議論します。
UPDATE:
A別の可能なヘルプがNDbUnitようなものになるだろう。私はまだ広範囲に使用していませんが、それは有望に見えます:http://code.google.com/p/ndbunit/
おそらく、あなたのoracleデータベースを維持することを検討することができますが、それはテストデータだけを含んでいるので、大きくする必要はありません。
私たちは約1000件のテストを行っており、RESTとヒットしているデータベースの大部分がテストしています。合計実行時間は約8分です。時間は過度だと思われますが、私はあなたが何をしているのか、あなたのテストがどれほど複雑であるのか分かりません。
しかし、私はあなたを助ける方法があると思います。私たちはTeamCityを使用しており、複数のビルドエージェントを持つことができます。あなたができることは、テストプロジェクトをサブプロジェクトに分割することです。サブプロジェクトごとにいくつかのテストだけが含まれています。 JNunit/NUnitカテゴリを使用してそれらを区切ることができます。次に、各エージェントが1つのタイプのサブプロジェクトを構築するようにTeamCityを構成します。こうすることで、テストの並列実行が可能になります。少数のエージェント(あなたは3人が無料です)では、20分に達することができます。各エージェントをVMに入れると、追加のマシンを必要としないかもしれません。たくさんのRAMが必要です。
- 1. サービス時間管理
- 2. siddhiで時間管理
- 3. NodeJSでの時間のかかるAPIコールの管理方法
- 4. 時間の保管方法
- 5. 管理方法ビルド構成とプロビジョニングプロファイル/スキーム
- 6. 開始時間と終了時間の間の現在の時間の管理方法
- 7. プロジェクト管理の観点からTDDのメリットは何ですか?
- 8. Google Cloud Datastoreの時間データ管理
- 9. ビルド後のBambooデプロイメントバージョン管理
- 10. クライアントサイドの時間管理は、サーバサイドの時間管理と一貫性がありますか?
- 11. JenkinsでMavenの同時ビルドを処理する方法は?
- 12. Pythonでの同時LMDB書き込みの管理方法は?
- 13. スレッド間でのメモリ管理
- 14. レールでの保管時間
- 15. リモートデータベース管理方法?
- 16. SVNでバイナリファイルのバージョン管理を管理する良い方法
- 17. ソース管理のコンフィグレーション変換を使用しないビルドでのコンフィグレーション管理
- 18. 時間差を処理する方法
- 19. ビルド時間を短縮する方法/ XCodeでコンパイル時間を短縮する方法はありますか?
- 20. 実行時にアンドロイドでメモリを管理する方法
- 21. Python 3.5で一時変数を管理する方法は?
- 22. GraphicsPath.AddStringで文字間隔を管理する方法は?
- 23. 遅いビルド時間
- 24. OWBのセキュリティ管理方法
- 25. リリースブランチの管理方法
- 26. InvalidCastExceptionの管理方法
- 27. オープンソースプロジェクトの管理方法
- 28. djangoの管理方法
- 29. マルチテーブルデータベースの管理方法は?
- 30. freenomドメインの管理方法
dbバインドテストの別の解決策は、メモリ内のデータベースを使用することです。これには明らかに新しい一連の問題がありますが、解決策であり、成功は1つのRDBMS実装にどれくらいのコードが依存しているかによって左右されます。 –
Oracleから離れる計画はないので、単なるRDBMSの実装については心配していません。
すべてのdb制約をmeyour Dbに設定し、Syncを実際のdbに設定することだけが心配です。
注:私のtest envと実際のprod envが同期するように、Oracleに近いmemeroy Dbの任意のものを指すことができます。 – Khangharoth