2012-05-22 1 views
3

Je construis des tests pour une suite de logiciels d'entreprise. Le bon conseil que j'ai eu de l'auteur de Test :: WWW :: Selenium était de construire des routines de fonctions plus grandes et de les paramétrer ensuite. Nous avons donc: add_user, post_blog et ainsi de suite. Ces routines peuvent ensuite être enrichies pour vérifier que le bon texte apparaît sur les pages et ainsi de suite. Ce logiciel est très configurable et nous avons des dizaines de sites, tous différents. Mais ces blocs de construction peuvent être reliés entre eux et les données du conducteur peuvent être modifiées de manière appropriée par site. Tout ce que j'ai trouvé sur Selenium a été très novateur, rien à voir avec la construction d'une Suite de Test plus grande. Y a-t-il autre chose ou est-ce aussi bon?Comment fabriquer/construire de plus grandes suites de test au sélénium?

+3

Vous êtes-vous familiarisé avec Page Objects? – JacekM

+0

Qu'est-ce que vous utilisez comme langage de programmation? Perl? –

+0

Test :: WWW :: Selenium est un module perl, oui. –

Répondre

6

Il est très possible d'exécuter un très grand nombre de tests au sélénium. Dans mon organisation, nous effectuons entre 200 000 et 300 000 tests par jour sur plusieurs sites Web. Alors oui c'est possible.

Note: - Je code en JAVA et toutes les informations ci-dessous sont dans une perspective JAVA.

Pour un test à grande échelle en utilisant le sélénium pour réussir, je dirais qu'il a besoin de 3 composants de base

  1. L'infrastructure
  2. Un bon cadre et le code facilement maintenable
  3. facile et des rapports clairs

Infrastructure

Votre infrastructure devrait pouvoir supporter l'énorme charge. Nous utilisons la grille de sélénium (si vous utilisez Selenium 2 puis son nom de grille 2.0) pour y parvenir. Selenium Grid nous permet d'exécuter plusieurs tests en parallèle et sur plusieurs navigateurs. Nous utilisons nos propres serveurs dans lesquels des machines virtuelles sont déployées pour supporter ce test. Il existe des fournisseurs comme Saucelabs.com à qui vous pouvez externaliser la maintenance de l'infrastructure.

cadre et TestCode

Votre cadre doit prendre en charge le multithreading et il devrait être threadsafe d'utiliser les fonctions de la grille de sélénium. Nous utilisons JAVA pour nous assurer que cela arrive. Pour exécuter les tests en parallèle, testNG est utilisé. TestNG peut exécuter plusieurs méthodes en parallèle et tous ces tests pointent vers un seul concentrateur. Le concentrateur distribuera ensuite tous ces tests sur plusieurs télécommandes (RC) connectées à celui-ci.

Lorsque vous avez un grand nombre de tests, la maintenance est inévitable. Pour réduire l'effort de retouche dû à un changement d'application, il est toujours préférable de suivre le modèle d'objet de page. L'objet Page signifie essentiellement - chaque page de votre application doit avoir une classe correspondante dans votre code. Vous allez définir tous les éléments et fonctions qui peuvent apparaître dans cette page dans cette classe. C'est une structure très modulaire et réutilisable. Vous pouvez google pour le modèle pageobject et vous trouverez de nombreux articles.

rapports

Son grand pour exécuter 200.000 tests par jour, mais si vous ne pouvez pas mettre en valeur ce qui a échoué et ce qui se passait dans une méthode facilement accessible vos tests d'automatisation ne sera pas d'une grande utilité. Il existe plusieurs méthodes pour cela. Du reporting HTML à la création de tableaux de bord personnalisés pour afficher les résultats.Une fois que vous avez tout cela en place, alors la seule chose dont vous aurez besoin est un outil pour maintenir ces tests en continu. Vous pouvez utiliser n'importe quel outil CI (intégration continue) pour y parvenir. Jenkins, Hudson, cruisecontrol sont quelques-uns des outils CI qui sont principalement utilisés.

+0

Oooh, mappage d'une page à un objet. Intéressant. Est-ce que cela mène à une prolifération massive des classes? Auriez-vous une classe pour un ensemble de pages qui correspondent à une fonction, disons que nous avons plusieurs pages qui correspondent à la fonctionnalité "blog"? Oui, nous utilisons Jenkins et oui, le faisceau de test Perl prend en charge le parallélisme sur une machine au moins. –

+1

Le fait que l'objet de page entraîne une prolifération massive de classes dépend de la façon dont vous le concevez. S'il existe une fonctionnalité sur plusieurs pages, vous pouvez la créer sous la forme d'une page différente. Dans votre cas, vous pouvez créer le "blog" comme une page différente. Vous pouvez ensuite appeler cette classe à partir de toutes les pages. Et si les sites multiples que vous testez sont similaires dans l'interface utilisateur, vous pouvez d'abord créer une page commune. Ensuite, étendez cette classe pour ajouter les fonctionnalités personnalisées de chaque site. –

+0

En ce qui concerne la similarité des sites, on me dit que les modèles HTML sont partagés entre les sites (et j'espère y avoir beaucoup plus d'identifiants!), Mais les données varient, par exemple le nombre de champs d'adresse peut varier et des sections entières du site peuvent ne pas être là. Merci pour les commentaires. –

Questions connexes