質問

こんにちは私のプロジェクトでは、我々はテストcases.Theseテストケースの数百を持っているすべてのチェックインでトリガとかなり大きく、5年以上されてされ、当社の開発者のgroup.Thisプロジェクトにメールを送信しますビルドプロセスの一部です。
今、私たちは適切に構造化されていない複数のテストケースの時間.Some以上かかる構築するので、多くのテストケースを持ち、それらをリファクタリングした後、私は、実質的に実行している時間を短縮することができましたが、我々はテストケースの数百を持っているとしてそれら1をリファクタリング1は少しあまりにも思える。
今、私は唯一のナイトリービルドの一部としてではなく、すべてのチェックインの一環として、(実行に本当に長いかかります)テストケースのいくつかを実行します。
私は他の人がこれを管理する方法として、好奇心旺盛です。

役に立ちましたか?

解決

私はそれは、彼があなたのテストスイートは、長い数分以上かかる場合、それはあまりにも多くの開発者が遅くなりますと、テストは無視取得を開始すると発表したことを「レガシーコードと効果的に作業」にあったと考えています。あなたがその罠に落ちているように聞こえます。

は、データベースに対して実行しているテストケースはありますか?そして、それは最も可能性の高いパフォーマンスの問題のあなたの最大の源です。可能な場合は原則として、テストケースはこれまでに、I / Oを行うべきではありません。依存性の注入は、あなたのコードのデータベース部分をシミュレートするモックオブジェクトとデータベースオブジェクトを交換できるようにすることができます。つまり、データベースが正しくセットアップされているかどうかを気にせずに、のコードをテストすることができます。

私は非常にマイケル羽でレガシーコードすると効果的に仕事をお勧めします。彼はすべてを一度にコードをリファクタリングすることなく、あなたに実行されているように見える頭痛の多くを処理する方法について説明します。

UPDATE:

A別の可能なヘルプがNDbUnitようなものになるだろう。私はまだ広範囲にそれを使用していないが、それは有望に見える: http://code.google.com / P / ndbunit /

他のヒント

おそらくあなたは、Oracleデータベースを維持するが、RAMドライブからそれを実行することを検討するだろうか?それが唯一のテスト・データが含まれますので、それは大である必要はありません。

私たちは、約1000のテスト、RESTと打つデータベースを介して通信し、それらの大部分を持っています。全実行時間は約8分です。時間は、過度のようだが、私はあなたがやって、どのように複雑なあなたのテストがされているかわからない。

しかし、私はあなたを助ける方法があると思います。私たちはチームシティーを使用していて、それが複数のビルドエージェントを持っている素敵な能力を持っています。何あなたができることはあなたのテストプロジェクトは、テストの数のみを含む各サブプロジェクトとサブプロジェクトに分割されます。あなたはそれらを分離するためにJNunit / NUnitのカテゴリーを使用することができます。各エージェントは、サブプロジェクトのひとつのタイプを建設するように、そして、あなたはチームシティーを構成します。このように、あなたは、テストの並列実行を取得したいです。いくつかのエージェント(あなたが自由のための3を得る)で、あなたも許容できるかもしれない20分に得ることができる必要があります。あなたがVMに各エージェントを置く場合、あなたも、追加のマシンを必要としないかもしれません、あなただけのRAMの多くを必要とする。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top