Vous n'avez pas à vous débarrasser du sélénium pour vous débarrasser de vos problèmes de sélénium

Par Chris Colosimo

17 octobre 2019

6  min lire

Il est clair que Selenium est le choix le plus populaire pour les organisations qui automatisent leurs tests d'interface utilisateur, mais les équipes rencontrent toujours des défis avec lui. Apprenez à résoudre ces défis sans abandonner complètement le cadre.

Lorsque nous avons mené des enquêtes sur les outils de test de l'interface utilisateur, il est devenu très clair que Selenium est devenu la norme de facto. Mais ce qui est étrange, c'est que peu importe à qui nous avons demandé, nous avons toujours eu la même mise en garde: "Nous adorons Selenium, mais il y a des défis. »

Nous sommes donc retournés à la communauté et avons demandé: "Quels sont vos principaux défis en matière de test d'interface utilisateur?"

Les résultats étaient clairs: le défi numéro un était construire des tests qui seraient maintenables dans le temps. Grâce à d'autres entretiens avec les clients, nous avons résumé les principaux problèmes de Selenium à ces cinq défis:

  1. Créer des localisateurs et des conditions d'attente fiables
  2. Maintenir les tests lorsque l'interface utilisateur change
  3. Débogage et diagnostic des pannes d'automatisation
  4. Temps nécessaire pour exécuter toute la suite
  5. Connaissances / compétences pour créer des scripts

Ensuite, nous avons commencé à examiner comment nous pourrions les aider à les résoudre sans avoir à nous débarrasser de Selenium. Il s'avère que vous pouvez résoudre tous ces défis en ajoutant Parasoft Sélénic dans le mélange - mais il existe de nombreuses façons relativement simples de résoudre tous les défis de Selenium, sans abandonner la plate-forme que tout le monde aime clairement.

Comment résoudre les 5 principaux défis avec Selenium

Alors, approfondissons ces défis et comment les résoudre.

Défi 1: créer des localisateurs et des conditions d'attente fiables

La création de localisateurs fiables implique de comprendre comment créer un identifiant qui interagit avec le bon élément à chaque fois et qui est stable entre les différentes exécutions. Les utilisateurs se retrouvent à fouiller dans les outils de développement Chrome pour trouver le bon bloc HTML, comprendre ce qu'il fait, puis passer du temps à créer le localisateur le plus intelligent possible. Habituellement, ce qui se passe, c'est que le localisateur d'élément est sélectionné dans l'application lorsqu'il est dans l'état actuel et que lors de la lecture, les choses ont tendance à être différentes. Cela peut être vraiment frustrant.

Les conditions d'attente jouent également un rôle important ici. Avec les applications Web modernes, charger le contenu de manière dynamique dans une seule page signifie que même si vous trouvez le bon localisateur, vous devez être intelligent pour créer la bonne condition d'attente pour vous assurer que l'élément est prêt à interagir. Tout cela peut être une douleur énorme.

La solution: les localisateurs intelligents

Il existe de nombreuses solutions de test d'interface utilisateur qui visent à résoudre ce défi précis en utilisant le terme «localisateurs intelligents». Les localisateurs intelligents capturent le localisateur le plus intelligent possible lors de la création initiale du script de test afin qu'il soit plus résistant au changement. Mon article récent qui interpelle 10 nouveaux outils géniaux pour les tests d'interface utilisateur comprend plusieurs outils ont des capacités d'enregistrement et de lecture pour cela.

De plus, il existe des plug-ins pour Chrome qui peuvent aider lors de la création de script à extraire les meilleurs localisateurs d'éléments dès la sortie de la page. J'ai examiné plusieurs de ces plug-ins, et de loin le meilleur que j'ai vu est TruePath.

Défi 2: maintenir les tests lorsque l'interface utilisateur change.

C'est un défi douloureux auquel les organisations sont confrontées en ce qui concerne les activités de test Agile en cours. Nous entendons cette histoire maintes et maintes fois - les testeurs passent beaucoup de temps à construire leur test Selenium (avec de bons localisateurs et des conditions d'attente), puis l'interface utilisateur de l'application change et leurs tests sont interrompus, échouant souvent à la construction nocturne. Le testeur doit ensuite revenir en arrière et déterminer ce qui a changé dans l'application, identifier s'il s'agit d'un défaut réel / régression ou que ce soit juste quelque chose qui ne va pas avec leur script de test. Et puis passez par le processus de correction ou de mise à jour du test en identifiant et en créant de nouveaux localisateurs / conditions d'attente. C'est un cercle vicieux.

La solution: l'intelligence artificielle

L'IA peut vraiment vous aider dans ce domaine. Ouais ouais, je sais, l'intelligence artificielle est un mot à la mode ces jours-ci. Mais il y a usages extrêmement pratiques. En particulier, Parasoft Sélénic utilise l'apprentissage automatique lors de l'exécution des tests Selenium pour résoudre ce défi précis. Chaque exécution de test produit une entrée unique dans son historique, montrant l'état actuel du DOM et indiquant si le test a réussi ou non.

Si le test échouait en raison du changement de l'interface utilisateur de l'application, Selenic remonte dans le temps et vous indique comment construire un nouveau localisateur qui fonctionnera avec la nouvelle version de l'application. C'est vraiment puissant car cela signifie que vous n'avez pas à quitter Selenium pour surmonter les défis de maintenance liés à la modification des interfaces utilisateur (et un avantage supplémentaire de cette technologie est sa capacité à auto-réparer votre pipeline CI / CD, en mettant automatiquement à jour le localisateur au moment de l'exécution pour empêcher la construction d'échouer inutilement).

Défi 3: débogage et diagnostic des échecs d'automatisation

Le débogage et le diagnostic des tests Selenium sont difficiles et peuvent être une perte de temps considérable (en particulier lorsqu'ils sont associés à une interface utilisateur en constante évolution). Nous avons constaté que diverses solutions avaient cherché à résoudre ce défi en fournissant leurs propres frameworks avec des fonctionnalités de reporting avancées, mais ensuite, les testeurs ont fini par être enfermés dans une plate-forme propriétaire ou IDE. C'est «ok» si vous prévoyez de rester avec ce fournisseur ou cet outil pour le reste de votre vie, mais qu'en est-il des utilisateurs de Selenium qui souhaitent conserver la liberté d'origine que l'open-source leur a fournie?

La solution: automatisation et reporting intelligents

Pour résoudre ce défi, vous pouvez utiliser une combinaison de rapports et d'analyses de l'exécution des tests, associés à des outils IDE.

En connectant des outils de reporting, comme Parasoft Sélénic, dans votre pipeline CI / CD existant, vous pouvez plus facilement comprendre quels tests échouent et pourquoi. Avec l'auto-réparation à l'exécution, Parasoft Selenic peut empêcher la construction d'échouer inutilement en raison de tests instables. Une fois les tests terminés, Selenic fournira des recommandations pour corriger ces tests cassés, qui peuvent être importés directement dans l'EDI pour une correction automatique.

Les IDE eux-mêmes, tels qu'Eclipse et IntelliJ, ont des capacités de débogage qui vous permettent de définir des points d'arrêt dans vos tests Selenium et de suspendre l'application à un moment particulier, afin que vous puissiez extraire des informations sur l'état de l'interface utilisateur et ce qui pourrait échec de l'application.

Défi 4: Temps nécessaire pour exécuter l'intégralité du script

Les tests d'interface utilisateur automatisés prennent plus de temps à s'exécuter que les tests exécutés sur la couche API / service de votre application (et beaucoup plus longtemps que les tests unitaires isolés), et plus vous créez de tests d'interface utilisateur, plus il faut de temps pour exécuter ces tests ... et plus vous devez attendre les commentaires du pipeline CI / CD. Le problème est que le pipeline se déclenche plusieurs fois par jour en raison de changements de code fréquents et que vous ne pouvez pas attendre le lendemain (ou parfois le week-end) avant de recevoir des commentaires utiles. Il doit y avoir un moyen d'optimiser l'exécution de vos suites de tests qui équilibre un retour rapide avec une couverture complète.

La solution: l'analyse d'impact des tests

C'est là que vous pouvez tirer parti de technologies telles que Parasoft Selenic's tester l'analyse de l'impact. En suivant le code couvert par chaque test Selenium et en le corrélant avec les modifications de la base de code, vous pouvez hiérarchiser le sous-ensemble de tests qui doivent être exécutés pour valider les modifications de code. Avec Parasoft Selenic, vous n'avez pas besoin d'avoir accès au code sous-jacent car il scanne simplement les binaires (par exemple .war ou fichier), identifie les classes qui ont été modifiées entre les versions, puis les mappe aux cas de test concernés pour activer pour exécuter un sous-ensemble de vos tests Selenium dans le cadre du pipeline CI / CD.

Défi 5: Connaissances et compétences requises pour créer des scripts

Enfin, les connaissances et les compétences requises pour créer les tests Selenium en premier lieu peuvent rendre l'utilisation de Selenium prohibitive. Selon la personne à qui nous avons parlé, c'était le premier ou le dernier sur la liste des défis auxquels les gens étaient confrontés. Nous voyions généralement que lorsque les utilisateurs commençaient à peine avec Selenium, leur défi numéro un était la création de tests - mais une fois qu'ils ont commencé à construire une pratique de test mature, ce n'était plus le défi numéro un, et vraiment les autres problèmes. est devenu plus important. Donc, d'après moi, surmonter cet obstacle initial est le vrai défi.

La solution: les assistants de code

Il y a des choses telles que la création de sélénium sans code et de sélénium pilotée par la PNL, mais je n'en ai pas particulièrement vu une qui fonctionne comme nous l'espérons tous. L'une des principales réalités de Selenium est que c'est du code. C'est bon et mauvais. C'est bien, car si vous avez des choses à faire qui sortent de la «pratique normale», vous pouvez trouver de bons exemples de code en effectuant une recherche rapide sur Google. C'est mauvais parce que c'est du code, et cela représente une barrière pour certains testeurs.

Alors, avez-vous besoin d'être développeur pour créer des scripts Selenium? La réponse est non, mais certaines compétences en développement aident. Comme je l'ai mentionné plus tôt, de nombreux excellents nouveaux outils de test de l'interface utilisateur ont des enregistreurs qui construiront des scripts Selenium, tels que Parasoft Sélénic, SeleniumIDE et Katalon. Ces outils d'aide donneront aux utilisateurs novices de Selenium un bon départ sur la pratique et fourniront un terrain d'entente entre le sans code et le codé. Bien sûr, vous devez être conscient que aucun outil d'enregistrement et de lecture d'interface utilisateur n'est parfait (bien sûr, il existe également des moyens de résoudre ces problèmes).

Conclusion

Selenium est le choix n ° 1 pour l'automatisation de l'interface utilisateur, la technologie s'améliore chaque jour et de nombreuses technologies sont conçues pour prendre en charge Selenium et aider à résoudre certains de ses défis de base. Les tests d'interface utilisateur sont essentiels pour valider l'expérience client, et être en mesure de créer des tests Selenium riches et significatifs, qui sont maintenables au fil du temps, aidera à augmenter la couverture globale des tests dans notre secteur pour créer de meilleures expériences plus significatives à l'avenir.

Par Chris Colosimo

Chef de produit chez Parasoft, Chris élabore des stratégies de développement de produits pour les solutions de test fonctionnel de Parasoft. Son expertise en accélération SDLC grâce à l'automatisation l'a conduit à des déploiements majeurs en entreprise, tels que Capital One et CareFirst.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.