Modèles d'automatisation de l'interface utilisateur et meilleures pratiques pour les applications de bureau

9

Contexte

J'automatise actuellement certains tests pour un plugin pour MS Office. Nous créons des tests codés de l'interface utilisateur dans VS 2010. Je suppose que je pourrais utiliser l' outil " Coded UI test builder ", mais il ne convient pas vraiment à mon cas particulier.

Pour cette raison, j'ai créé ma propre classe de carte d'interface utilisateur et des méthodes d'extension pour chaque contrôle / carte d'interface utilisateur où j'ajoute différentes fonctionnalités d'action. Par exemple, appuyez sur les boutons ou affirmez certaines valeurs de l'interface utilisateur.

Les scénarios des cas de test sont dans les classes de test.

Je suis nouveau dans ce domaine et je suis également nouveau dans le travail en tant que testeur d'automatisation.

La question

Est-ce que les gens auraient la gentillesse de partager leur expérience et leurs conseils sur quelques bonnes pratiques pour l'automatisation des tests sur les applications de bureau d'un point de vue programmation / conception?

CoffeeCode
la source
L'un de mes rôles principaux est l'automatisation de l'interface utilisateur ... et je me suis perdu une demi-douzaine de fois en lisant cette question. Je n'ai aucune idée de ce que signifie la moitié des termes techniques que vous avez utilisés. Cette question est-elle spécifique à un environnement ou à une langue? Cela devrait probablement être une balise.
Sparr
@Sparr J'ai édité la question pour la rendre plus accessible. J'espère que cela correspond toujours à l'exigence.
Gary Rowe

Réponses:

6

La meilleure pratique pour les tests d'automatisation de l'interface utilisateur est d'en faire le moins possible. Les interfaces utilisateur changent fréquemment, ce qui signifie que vous devez constamment mettre à jour votre automatisation. Il est généralement préférable de structurer le code produit de manière à permettre des tests automatisés sans UI Automation.

Cela dit, vous ne pouvez pas toujours vous débarrasser de UI Automation. Vous mentionnez le bureau, donc je suppose que vous codez pour Windows et utilisez .Net. Je fais pas mal dans mon travail actuel. Voici certaines des choses que j'ai apprises.

1) Regardez les bibliothèques UIAutomation qui ont été introduites dans .Net 3.0. Ils fournissent une bibliothèque complète et assez simple à utiliser pour l'automatisation. (http://msdn.microsoft.com/en-us/library/ms753107.aspx)

2) Téléchargez UISpy (http://msdn.microsoft.com/en-us/library/ms727247.aspx)

3) Rendez les interfaces utilisateur de votre produit automatisables.

3a) Si c'est WPF, mettez AutomationIDs sur tout.

3b) Essayez de créer des noms de classe de contrôle et de fenêtre distinctifs (noms de classe UI, pas le nom de classe de code source). Si vous ne savez pas ce que je veux dire, chargez UI Spy et commencez à regarder les fenêtres. Notez combien de fenêtres dans différentes applications ont un nom de classe # 32770. Il s'agit du nom de classe d'une boîte de dialogue Windows. Par défaut, toute fenêtre qui étend la boîte de dialogue et ne définit pas son propre nom. Cela provoque toutes sortes de problèmes d'un point de vue UI Automation.

4) Évitez les instructions Thread.Sleep (). Essayez plutôt d'utiliser des serveurs (voir la documentation UIAutomation).

5) NE JAMAIS mélanger le code de test avec le code UI Automation. Créez des bibliothèques distinctes pour effectuer l'automatisation de l'interface utilisateur. Appelez ces bibliothèques à partir de vos tests. Lorsque l'interface utilisateur change, cela facilitera la mise à jour de l'automatisation.

6) Enregistrez toujours un écouteur pour un événement d'interface utilisateur avant d'effectuer l'action qui provoquerait le déclenchement de l'événement. En pratique, cela signifie que vous travaillerez avec des threads.

6a) Exemple: ne commencez pas à attendre un événement Fenêtre ouverte après avoir cliqué sur un bouton pour ouvrir la fenêtre. La fenêtre peut s'ouvrir avant l'inscription du serveur et ne jamais obtenir l'événement.

7) Ne présumez jamais que la fenêtre qui vient de s'ouvrir est celle que vous souhaitez. Toutes sortes de fenêtres peuvent s'ouvrir de manière inattendue dans Windows.

Je pourrais continuer encore, mais cela devient un peu long.

aef123
la source
1) - 3) est destiné aux personnes écrivant la demande en cours de test. 6) a été un apprentissage difficile pour moi aussi. :)
Andreas Reiff
2

Créez des tests fonctionnels à partir de cas d'utilisation réutilisables

Lorsque vient le temps de tester votre application de bout en bout in situ, vous effectuez des tests fonctionnels. En règle générale, vous aurez un ensemble d'exigences que vous testez et vous pourrez construire divers cas d'utilisation qui les représentent.

À titre d'exemple, considérons le cas d'utilisation «Connexion en tant qu'utilisateur standard». Votre infrastructure de test démarre l'application, attend l'écran de connexion, saisit certaines informations d'identification, clique sur le bouton de connexion et vérifie que l'écran approprié indique maintenant que la connexion a réussi.

Après avoir effectué le cas d'utilisation "Connexion en tant qu'utilisateur standard", vous voudrez vous en inspirer pour faire autre chose, peut-être le cas d'utilisation "Modifier mes informations utilisateur". Vous ne voudrez pas répéter tout le code du cas d'utilisation "Se connecter en tant qu'utilisateur standard", il vous suffit donc de faire référence au code de framework de test qui fait ce bit.

Cela implique que vous disposez d'une sorte de test fonctionnel de surarchisation contenant une liste de cas d'utilisation. Ces cas d'utilisation contiennent les méthodes du framework de test pour provoquer le comportement de l'application (cliquez sur le bouton X) et vérifier le comportement (l'écran devient bleu).

Dans l'ensemble, vous pouvez constituer un corps de cas d'utilisation réutilisables qui ciblent des séquences spécifiques et tester des réponses spécifiques, puis les agréger en divers tests fonctionnels qui correspondent étroitement aux besoins de l'entreprise. Une fois que vous avez mis cela en place, vous êtes alors bien placé pour automatiser entièrement votre processus de construction .

Si vous êtes intéressé à lire plus loin, j'ai écrit sur cette approche ailleurs, mais l'article cible les applications Web en Java (en utilisant Maven et SeleniumRC) plutôt que les applications de bureau que vous avez demandées.

Gary Rowe
la source