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.