Outils d'automatisation de tests d'interfaces web
Selenium Grid
Limitations de Selenium Remote Control
Il existe des limitations à Selenium Remote Control :
- Les tests concurrents sont limités avec Remote Control. Il est conseillé de ne pas lancer plus de 6 tests concurrents.
- Si les tests sont trop rapide, il existe un goulot d'étranglement entre le Remote Control et le navigateur internet.
- Les tests multi-navigateurs et multi-OS implique une architecture compliqué qui est difficilement maintenable
Voici un schéma rappelant l'architecture de RC

Et maintenant voici l'architecture qu'impose Selenium Grid :

L'architecture Grid introduit un nouveau rôle : le Selenium hub
Il faut référencer les Remote Control dans un fichier de configuration du hub pour que ce dernier redirige automatiquement les requètes de tests selenium au bon RC.
Cette action est totalement transparente pour les developpeurs de tests selenium. Ils ne s'adressent maintenant plus qu'au hub qui se chargera de trouver le bon Remote Control qui lancera le navigateur souhaité et cela sous le bon système d'exploitation.
Voici un exemple de mise en oeuvre de Grid :

Les avantages
Selenium Grid présente donc des avantages non négligeables pour les campagnes de tests importantes :
- Améliorations des performances
- L'utilisation de chaque Remote Control est limité au maximum. Le hub va se charger de répartir la charge au maximum.
- Le choix du RC devient complètement transparent. En effet on ne s'adresse maintenant plus qu'à un seul "serveur" : le hub
- Les tests multi navigateurs & multi OS faciles sont désormais plus facile à mettre en oeuvre. L'architecture est maintenant simple et maintenable.
Exemple
Anciennement, nous écrivions :
- new DefaultSelenium("localhost", 4444, **'*firefox'**, 'http://www.google.fr');
Maintenant, grâce à Grid nous pouvons écrire :
- new DefaultSelenium("hub", 4444, **Chrome on Ubuntu'**, 'http://www.google.fr ');
- new DefaultSelenium("hub", 4444, ** IE 7 on Chinese locale '**, 'http://www.google.fr ');
- new DefaultSelenium("hub", 4444, ** Safari on Quadri-processor '**, 'http://www.google.fr ');