Question

Salut dans mon projet, nous avons des centaines de cas de test de cases.These d'essai font partie du processus de construction qui se déclenche à chaque checkin et envoie un message à nos group.This développeurs projet est assez grand et est depuis plus de cinq ans.
Maintenant, nous avons tant de cas de test qui construisent prend plus d'une heure .Certaines des cas de test ne sont pas bien structurés et après les refactorisation i a pu réduire le considérablement le temps en cours d'exécution, mais nous avons des centaines de cas de test et les refactorisation un par on semble peu trop.
Maintenant, je lance quelques-uns des cas de test (qui prend vraiment longtemps pour exécuter) que dans le cadre de la construction de nuit et non dans le cadre de chaque checkin.
Je suis curieux de savoir comment les autres gars gérer cela.

Était-ce utile?

La solution

Je crois qu'il était « Travailler efficacement avec Legacy Code » qu'il a dit que si votre suite de test dure plus longtemps que quelques minutes il va ralentir les développeurs trop bas et les essais vont commencer négligé. On dirait que vous êtes en train de tomber dans ce piège.

Vos cas de test en cours d'exécution contre une base de données? Alors qui est le plus probable que votre plus grande source de problèmes de performance. En règle générale, les cas de test ne devrait jamais être fait d'E / S, si possible. L'injection de dépendance peut vous permettre de remplacer un objet de base de données avec des objets fantaisie qui simulent la partie base de données de votre code. Cela vous permet de tester le code sans se soucier si la base de données est correctement configuré.

Je recommande fortement Travailler efficacement avec Legacy Code par Michael Feathers. Il explique comment gérer beaucoup de maux de tête que vous paraissez courir en sans avoir à factoriser le code à la fois.

Mise à jour:

Une autre aide possible serait quelque chose comme NDbUnit. Je ne l'ai pas utilisé abondamment encore, mais il semble prometteur: http://code.google.com / p / ndbunit /

Autres conseils

Peut-être que vous pourriez envisager de garder votre base de données Oracle, mais l'exécuter à partir d'un lecteur de RAM? Il ne serait pas besoin d'être grand car il ne contiendrait que des données de test.

Nous avons environ 1000 tests, un grand pourcentage de ceux qui communiquent via REST et base de données frapper. La durée totale de fonctionnement est d'environ 8 minutes. Une heure semble excessive, mais je ne sais pas ce que vous faites et comment vos tests sont complexes.

Mais je pense qu'il ya un moyen de vous aider. Nous utilisons TeamCity et il a une belle capacité d'avoir plusieurs agents de construction. Ce que vous pouvez faire est diviser votre projet de test en sous-projets avec chaque sous-projet contenant seulement un certain nombre de tests. Vous pouvez utiliser JNunit / NUnit Catégories pour les séparer. Ensuite, vous configurez TeamCity afin que chaque agent construirait un seul type de sous-projet. De cette façon, vous obtiendrez l'exécution parallèle des tests. Avec quelques agents (vous obtenez 3 gratuitement), vous devriez être en mesure d'obtenir à 20 minutes, ce qui pourrait même être acceptable. Si vous mettez chaque agent dans VM, vous pourriez même pas besoin de machines supplémentaires, vous avez juste besoin de beaucoup de RAM.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top