2009-05-05 7 views
9

Nous utilisons UI Automation et Nunit pour créer des tests de test de l'interface utilisateur pour l'application WPF. Nous avons créé des tests qui fonctionnent correctement lorsque vous les exécutez à partir d'une machine locale. Ces tests ne sont jamais exécutés avec succès sur notre serveur de construction (en utilisant TeamCity). Construire toujours se bloquer après l'ouverture de la fenêtre de l'application. Mais si je suis connecté (Bureau à distance), tous les tests UI Automation sur notre serveur de génération s'exécutent également avec succès. Donc je suppose que cela a probablement quelque chose à voir avec l'exécution de la session Windows active. Des idées pour convaincre notre serveur de construction de créer une session Windows active ou d'autres solutions pour que ces tests s'exécutent sur le serveur de build?Exécution de tests d'automatisation de l'interface utilisateur sur le serveur de génération

Répondre

3

Vous n'avez pas beaucoup d'options. Je vais énumérer les deux que je sais, l'option la plus préférée d'abord:

  • Mettre en place une machine virtuelle sur votre serveur de build. Vos builds s'exécutent dans la machine virtuelle. Vous pouvez verrouiller l'hôte (aka votre buildserver) en gardant les choses en sécurité.
  • Gardez quelqu'un connecté tout le temps. Ce hors cours crée un problème de sécurité. Vous pouvez alléger un peu ce problème en supprimant la souris, le clavier et l'écran et accéder uniquement au buildserver via RDP ou quelque chose de similaire.

Modifier

Jetez un oeil à cet article TestComplete FAQ: TestComplete peut exécuter des scripts lorsque l'ordinateur est verrouillé?

+1

Nous exécutons toutes les générations dans la machine virtuelle sur notre serveur de construction. Et tous les tests s'exécutent sous compte local (pas de système). Cela n'a pas résolu le problème. Garder quelqu'un connecté tout le temps n'est pas une option. Comme je l'ai dit, nous avons 3 machines virtuelles, où cette version peut fonctionner. Donc, chaque fois que la construction choisit le vm le plus rapide disponible. L'utilisateur local sur vm est normalement connecté, mais nous ne pouvons pas nous assurer qu'il n'est pas verrouillé. Et nous aimerions vraiment automatiser ce processus autant que possible, donc la connexion manuelle est l'option la moins attrayante. – andreja

+0

@andreja, j'ai mis à jour la réponse avec un lien vers Q & A Testcomplete. Je doute qu'il y ait un autre moyen de contourner cela. Vous devez garder quelqu'un connecté. Je ne vois pas où cela pose un problème de sécurité lorsque votre VM est "déverrouillée" et que l'hôte est "verrouillé" (mais je ne suis pas un administrateur système). –

+0

@andreja: Si vous souhaitez automatiser la connexion, vous pouvez définir quelques valeurs de clé de registre, et votre utilisateur de construction sera connecté après le démarrage de la VM de construction. Si vous le souhaitez, je peux rechercher les clés reg correspondantes. –

1

OK, je devine juste ici. Essayez et exécutez le service TeamCity avec un utilisateur de serveur de build local au lieu du compte système. Peut-être que vous devez vous connecter avec ce compte une fois, avant de commencer une nouvelle construction.

+0

Nous avons déjà essayé cela.Quand j'ai dit si je suis connecté (bureau à distance), sur notre serveur de construction tous les tests d'UI Automation fonctionnent aussi correctement, j'ai été connecté en tant qu'utilisateur et tous les tests sont exécutés sous cet utilisateur. Le problème est, la seconde lorsque cet utilisateur est verrouillé test échoué. Ils ont également échoué si je les exécute sur la machine locale et verrouille l'ordinateur en cours d'exécution. – andreja

1

Il semble que vous ayez besoin d'exécuter vos tests avec une session interactive plutôt qu'avec un service. Ajouter le "Autoriser le service à interagir avec le bureau" peut aider, mais cela n'est plus supporté par Vista plus apparemment.

Si vous pouvez exécuter vos builds interactivley en tant que ligne de commande, pas un serivice qui devrait fonctionner aussi.

Nous avions l'habitude d'exécuter nos tests UIAutomation en utilisant l'agent de chargement visuel studo 2008 pour les distribuer, fonctionnant comme un outil de ligne de commande sur les machines virtuelles sans problème. Je suis également d'accord que vous ne devriez probablement pas exécuter des tests d'interface utilisateur sur un serveur de construction une partie de votre construction quotidienne.

+1

Merci, mais comme vous le mentionnez, les services ne sont plus autorisés à interagir avec le bureau de l'utilisateur dans Vista et Windows Server 2008. Nous utilisons le serveur Windows 2008. L'exécution en tant qu'utilisateur console verrouille également le bureau et les builds échouent. – andreja

0

Construire toujours se bloquer après l'ouverture de la fenêtre de l'application.

Tests qui instancient l'interface utilisateur? Cela ne va pas fonctionner, par exemple. Si vous obtenez un dialogue modal, la construction va se bloquer. C'est la raison pour laquelle le modèle MVP a été inventé, pour isoler le code de présentation actif d'une vue concrète.

Utilisez-vous une vue simulée dans vos tests automatisés?

+0

Je ne crois pas ne va pas au travail :) Nous n'utilisons pas la vue maquette. – andreja

+1

Bien que la conception de votre code d'interface utilisateur pour qu'il soit testable résout une multitude de problèmes, il existe toujours certains scénarios dans lesquels vous souhaitez tester des éléments qui nécessitent simplement un environnement interactif pour que le test soit significatif. (Pas nécessairement des tests unitaires, mais vous voulez aussi automatiser vos tests d'intégration, n'est-ce pas?) –

+0

Parfois, vous voulez simplement tester qu'un clic sur un bouton ouvre la boîte de dialogue appropriée. (c'est-à-dire que vous voulez tester l'interface utilisateur.) – BrainSlugs83

Questions connexes