2010-11-16 12 views
2

Nous avons configuré teamCity sur lequel nous exécutons nos builds pour les tester. Le problème est, il y a quelques testcases (parler d'une classe particulière ayant 5-15 méthodes de test) qui prend près de 45 minutes lorsque nous courons sur TeamCity.Comment examiner la raison d'une suite de tests s'exécutant beaucoup plus lentement dans un environnement

J'ai essayé de tester les mêmes cas sur la machine locale et ils ne prennent pas plus de 6-7 min. Pourriez-vous me suggérer les meilleures pratiques qui peuvent m'aider à comprendre ce qui pourrait être la raison de ces cas de test? En ce moment, je mets des déclarations de journal partout avec des horodatages. Y a-t-il autre chose que je puisse faire?

Répondre

0

J'ai utilisé YJP (yourkit java profiler) pour profiler des applications auparavant. Je pense que c'est gratuit pendant les 15 premiers jours avant de vous faire acheter une licence.

1

Je vois si et quelle est la différence sont entre les deux environnements:

  • Est-ce le même système d'exploitation et système de fichiers?
  • Quelle est la charge du processeur de la machine?
  • Quelle est la charge d'E/S de la machine?
  • Est-ce que quelque chose apparaît dans le syslog, par ex. Un timeout (réseau ou authentification) peut conduire à des performances extrêmement réduites
  • Les scénarios de test utilisent-ils des ressources externes (bases de données, réseau, par exemple) qui peuvent avoir des chemins d'accès différents à partir de l'emplacement de la machine lente?
  • Est-ce que TeamCity produit des rapports détaillés après chaque test, ce qui peut être lent? Ce n'est peut-être pas l'exécution réelle du test, mais une autre opération qui est effectuée entre les tests ou après les tests.
  • L'environnement TeamCity exécute-t-il des fonctionnalités d'installation ou de démontage qui ne sont pas exécutées localement? Telles que la construction d'une base de données de test ou l'élagage d'une base de données de test existante?
  • La machine lente est-elle un serveur de construction en cluster qui doit communiquer par câble entre le maître et les esclaves? Le test est-il exécuté sur le maître ou l'esclave?

De même, exécutez-vous localement les cas de test dans TeamCity?

+0

J'avais déjà testé toutes ces choses. Le plus gros indice est que le TeamCity prend à peu près le même temps pour le reste des tests (actuellement, 5493 cas de test). Tous les cas de test prennent 5 à 10 minutes à s'exécuter sur une machine locale et c'est le même cas pour tous les cas de test sur la ville de l'équipe. Cependant, ces 4 cas de test particuliers prennent 45 min CHAQUE! –

+0

Eh bien, il serait utile de savoir ce que font vos cas de test. La première chose est en effet la journalisation. L'étape suivante consisterait à utiliser la console JMX et à surveiller les statistiques de la machine virtuelle et à effectuer des vidages de la pile de temps à autre pour voir où se trouvent actuellement les cas de test (échantillonnage). – mhaller

+0

Jetez un oeil à ceci: Peut-être que vous pouvez le faire fonctionner dans l'environnement TeamCity http://www.mhaller.de/archives/138-Per-unit-test-profiling.html – mhaller