2010-08-26 6 views
15

J'utilise TeamCity pour mes builds CI, et j'aimerais mettre en place une deuxième version pour exécuter des tests d'interface utilisateur automatisés sur les machines virtuelles Windows XP et Windows 7.Stratégie de test automatisé de l'interface utilisateur sur les machines virtuelles distantes

j'imagine que le travail de la construction comme suit:

  1. Compile, exécuter des tests unitaires, etc.
  2. Préparer MSI à l'aide WiX
  3. Copier MSI pour cibler les machines de test
  4. exécuter Remotely
  5. MSI
  6. Copier le code du faisceau de test sur la machine distante
  7. Exécuter des tests
  8. Les finitions de construction

Les tests d'interface utilisateur automatisés sont écrits en utilisant NUnit et doivent être exécutés directement sur la machine virtuelle de test (ils ne peuvent pas être exécutés à distance). Il est important que si les tests échouent, ils apparaissent dans le journal de génération TeamCity et la construction échoue. Je préfère ne pas installer VS ou les agents de build TeamCity sur l'une ou l'autre des machines virtuelles de test.

Il semble que la plupart de ceci devrait être possible en utilisant psexec.exe. Existe-t-il d'autres outils (de préférence open source) que je devrais regarder?

Répondre

7

prend une grande respiration

Nous cherchions en quelque chose pour nous aider avec nos tests d'interface automatisés. Nous utilisons ranorex pour tester l'interface utilisateur et TeamCity/Msbuild pour exécuter les tests.

Nous n'avons jamais trouvé d'outils pour nous aider (je suis constamment à l'affût pour certains donc je vais surveiller ce fil) mais voici ce que nous avons fait à la place.

  1. Le serveur CI copie les fichiers d'installation et les scripts de test sur le serveur hôte de test.
  2. Le serveur CI lance ensuite une application personnalisée sur le serveur hôte de test fournissant le nom de la machine virtuelle à lancer. Le serveur hôte de test lance ensuite le logiciel de la machine virtuelle, en utilisant Virtual PC.exe -singlepc -pc vhdname.vhd -launch, et attend qu'il s'éteigne (après avoir exécuté ses tests).
  3. La machine virtuelle récupère les fichiers d'installation et les scripts à partir de l'emplacement réseau et les exécute. Une fois les tests exécutés, les résultats sont renvoyés vers un emplacement en réseau et se ferment automatiquement.
  4. Le contrôle est renvoyé à l'application personnalisée.
  5. Le contrôle est renvoyé au serveur CI qui détermine à partir des résultats s'il a réussi ou échoué (et met à jour l'interface utilisateur afin que les développeurs soient informés du résultat).
  6. Les résultats sont collectés sous forme d'artefacts dans TeamCity et étiquetés dans Svn.

Je pense que c'est tout. Son alambiqué, cependant, cela fonctionne. J'espère que quelqu'un de cela vous aidera.

2

Jeff Brown de l'équipe Gallio a été talking about un outil appelé Archimedes qu'il a l'intention d'écrire pour supporter ce type d'exigence. Cela semble prometteur, mais je ne pense pas qu'il y ait eu beaucoup de progrès à ce jour. En même temps, il y a quelque chose dans le projet Gallio appelé VM Tool qui peut faire ce que vous voulez. Il fournit des commandes pour arrêter, démarrer et instantaner des machines virtuelles et, plus important encore, pour copier des fichiers et exécuter des commandes.

Je présume que vous avez également considéré Powershell Remoting?

Questions connexes