web-dev-qa-db-fra.com

Meilleures pratiques du cadre d'automatisation des tests Web Selenium

Je voudrais connaître vos commentaires sur les meilleures pratiques de développement de framework d'automatisation de test web

  1. J'ai essentiellement lu quelques blogs et j'ai finalement été convaincu par l'approche de David Burns répertoriée dans le livre - "Outils de test Selenium 1.0: Guide du débutant" dans chapitre 7 .

  2. En conservant toutes les méthodes, les vérificateurs d'une page particulière dans un fichier de classe séparé la rendent raffinée et maintenable.

  3. J'aimerais connaître les avantages de la conception d'un cadre d'automatisation à l'aide de modèles de conception. Je ne suis pas entièrement convaincu de la meilleure approche. Veuillez ajouter vos suggestions. Pourrait être chaque approche, nous pouvons énumérer les avantages et les inconvénients

  4. Serait-il bon de stocker toutes les étapes dans une table de base de données, de récupérer et d'exécuter les étapes? Dans ce cas, si l'un des tests a échoué, cela aurait été mis à jour dans les tableaux et nous ne pouvons exécuter sélectivement que les tests ayant échoué.

  5. En outre, la création de rapports peut être effectuée en interrogeant de manière sélective les tables et les données peuvent être nettoyées de ces tables via un travail. Conserver les résultats/analyser les résultats des fichiers de sortie de test est également très bien.

  6. Si vous avez déjà répondu à cette question dans des articles connexes, veuillez publier des liens. J'ai vérifié quelques messages avant de poster cette question.

  7. Dans un site Web, l'interaction de l'utilisateur avec le site Web est pilotée par les événements. La façon dont l'utilisateur peut interagir avec le site peut être plusieurs combinaisons A-> B-> C ou A-> C-> B. Faire toutes les combinaisons possibles offre une couverture maximale. Automatisation des tests basée sur un modèle couvrant tous les états possibles

  8. La suite d'automatisation qui simule la régression fonctionnelle pour tous les états possibles simulerait tous les scénarios utilisateur

  9. Veuillez partager vos meilleures pratiques/suggestions pour les questions ci-dessus. Pour tous les fournisseurs de données d'implémentation ci-dessus, la transmission de données en XML nous permet de tirer parti de la gestion des données de test.

  10. Quelle approche de conception nous devons considérer pour développer une suite d'automatisation de test basée sur un modèle.

  11. Quelqu'un at-il essayé d'utiliser le framework http://www.w3qa.eu/framework.html . Tout commentaire/rétroaction sur le même s'il vous plaît fournir

33
Siva

David Burns est un gars intelligent. Son livre est un bon point de départ pour quiconque souhaite apprendre les bases du sélénium et l'automatisation des tests. Bien sûr, suivez ses conseils (et les miens, et ceux de tous les autres) avec un grain de sel. Il y a beaucoup d'experts et beaucoup d'opinions opposées. Vous devrez déterminer ce qui vous convient le mieux.

Oui. C'est certainement une bonne idée de "garder toutes les méthodes, les vérificateurs d'une page particulière dans une classe séparée." Vous pouvez reformuler cela comme "action et intention de séparation" ou "programmation dans le langage de domaine". Dans tous les cas, vous voulez éviter d'écrire des tests en sélénien de bas niveau. Pour ce faire, vous pouvez utiliser le modèle de conception de test d'objet de page. De nombreux contributeurs à Selenium et d'autres experts de Selenium préconisent l'utilisation d'objets de page. C'est un bon moyen de rendre le code de test plus robuste, lisible et réutilisable.

Connaître d'autres modèles de conception est également utile et les utiliser dans votre framework de test est probablement une bonne idée. Malheureusement, il n'existe pas de "meilleure" approche. Vous devrez probablement utiliser plusieurs modèles et un mélange d'approches pour obtenir un bon code de test. Je recommanderais de commencer petit, d'écrire quelques tests, de remarquer les odeurs de code et de refactoriser. Votre cadre de test se développera. Vous n'avez pas besoin de tout concevoir à l'avance. Soyez agile. Utilisez une approche itérative et incrémentielle. (N'utilisez pas l'IDE Selenium)

youtube - Simon Stewart parle de modèles de tests automatisés et de sélénium

Plutôt que de placer vos étapes de test dans une table de base de données, il est probablement préférable d'utiliser un outil de test comme Junit ou TestNG pour organiser vos tests. TestNG a une fonctionnalité intégrée pour relancer sélectivement les tests ayant échoué. Il a également de très bonnes capacités de reporting. Ne réinventez pas la roue ici. Apprenez un cadre de test comme TestNG ou Junit.

youtube TestNG

oh mec ... Je ne peux pas poster plus de deux liens en ce moment ... Oh bien ... Je recommande de rechercher des vidéos GTAC sur youtube, des vidéos saucelabs sur viddler, le blog Simon Stewarts, la documentation TestNG, des exemples d'objets de page et un article de Brett Pettichord intitulé Seven Steps for Automation Success.

Bonne chance!

39
Sam Backus

http://mestachs.wordpress.com/2012/08/13/Selenium-best-practices/

  • Utiliser le modèle PageObjects
  • Soyez à l'aise avec
    • retourner cela, varargs, génériques,
    • réutilisez votre modèle et votre jodatime
  • Soyez robuste et portable
    • Ordre de sélection préféré: id> nom> css> xpath
    • Évitez Thread.sleep préférez Wait ou FluentWait
    • Utiliser des URL relatives
    • Ne vous fiez pas à une implémentation spécifique du pilote
    • Créez votre jeu de données
  • Connaissez votre nouvel outil
    • Restez à jour (versions et modèle d'utilisation)
    • Dépannage
      • jre 1.6
      • IE (zoom, réglage du mode protégé)
      • Page de démarrage de Firefox/Firebug
    • Comment gérer les composants de l'interface utilisateur comme ... fileupload, datepicker, ajaxtables, ...
    • Détecter quand le sélénium n'est pas le bon outil pour le travail
    • N'ayez pas peur de pirater Sélénium
18
mestachs

J'ai écrit des frameworks de test de code sous cinq applications différentes (WinRunner, LoadRunner, QuickTest Professional, TestComplete, Selenium WebDriver) et j'ai trouvé un certain nombre de choses qui ont fonctionné pour moi:

  1. Si une suite de tests se veut rapide et méchante, vous n'avez pas besoin d'un framework. Mes premiers tests étaient largement sans framework.
  2. Lorsque vous entrez dans une application plus compliquée, les référentiels d'objets (pour les applications GUI) et les objets de page (pour Selenium WebDriver) rendent le travail plus efficace.
  3. J'ai tendance à passer mon temps à travailler sur des outils pour faciliter le processus de test et lisser les bords de l'outil.

J'utilise TestNG, WebDriver et Spring pour créer mon cadre de test actuel. J'extraye des segments de ce cadre dans son propre ensemble de bibliothèques OSS afin que d'autres puissent les réutiliser. En ce moment, je peux injecter des types d'éléments personnalisés, et j'ai quelques types de base ajoutés pour faire du travail de formulaire. C'est vraiment difficile, et ce n'est pas un cadre qui est autonome; vous devez l'intégrer dans votre propre framework, mais j'essaie de garder les dépendances au minimum.

7
Elijah Sarver

Mes amis, si vous faites des tests d'automatisation, veuillez vous assurer des choses suivantes:

  1. Écrivez clairement le scénario de test.
  2. Assurez-vous que vous avez une expertise dans JUnit.
  3. Assurez-vous de connaître les exigences métier/fonction de votre projet et de votre environnement de test.

Merci.

4
Sudhir

Hey.
. La plupart des programmeurs peuvent dire que ce ne sont plus des tests unitaires ... et peut-être pas. Mais ce n'est pas important. Vous pouvez toujours le faire bien. Vous trouverez ci-dessous des liens qui devraient vous aider à démarrer. Bien qu'ils parlent de créer des tests fonctionnels qui fonctionnent sur toute l'application (niveau gui), je pense que la même approche que vous pouvez appliquer pour atteindre votre objectif. Bref, il présente comment écrire des tests à 3 couches, vous aurez donc une séparation entre la logique et la mise en œuvre.

4
yoosiba