Question

Nous utilisons des tests automatisés pour vérifier les fonctionnalités de notre application Web. Afin de rendre les assertions dans les cas de test moins compliquées et plus flexibles, nous envisageons d’introduire des 'TestIDs', c’est-à-dire des ID dans le balisage HTML qui aident les tests à rechercher et à vérifier les éléments de la page. De plus, ces ID de test permettraient des tests d'intégration plus spécifiques, impossibles à l'heure actuelle en raison du nombre limité de données sur les pages.

Cependant, voici ce qui nous fait hésiter:

  • introduire des identifiants de test signifie changer le test testé
  • sécurité - nous divulguerions les ID d'objet de domaine interne et d'autres informations qui, autrement, ne seraient pas visibles sur la page
  • standards - En fonction de la manière dont nous avons mis les TestID dans le balisage, nous violerions probablement l'utilisation sémantique d'un élément ou d'un attribut (par exemple, les attributs 'id' ou 'class', d'autres éléments html , etc.)
  • interférence - Les ID de test peuvent interférer avec le code de l'application
  • performance - Les ID de test sont des balises inutiles (pour l'utilisateur) et augmentent la taille de la page (significative uniquement sur les grandes pages)

Limiter TestIDs au test / transfert HTML ne semble pas être une bonne idée, car nous souhaitons évidemment tester le code qui sera utilisé en production et ne voulons pas que notre environnement de test / transfert se comporte différemment. En fait, nous exécutons actuellement des parties de nos suites de tests sur le système actif après une publication.

Pensez-vous que les TestID sont une bonne idée et si oui, comment les mettriez-vous dans le balisage?

Quelques exemples de balises illustrant ce dont je parle:

<!-- this test id allows an integration test to verify that
  the carrot 188271 is in fact green but exposes the id to the user -->
<tr id="testid-carrot-id-188271">
    <td class="color">green</td>
    <td class="size">doesn't matter</td>
</tr>
Était-ce utile?

La solution

Je dirais que les avantages d'un test plus facile et de meilleure qualité l'emportent sur les risques perçus. Je suppose que vous parlez de quelque chose comme ce qui suit: ajoutez id = 'resultDetail' à un élément de détail des résultats sur votre page afin qu'il soit plus facile à trouver pour le test automatisé. Franchement, je ne vois pas le mal à cela. Si je prends un point de vue trop simpliste, vous pourriez peut-être nous donner un exemple de balise pour nous donner une meilleure idée de ce que vous envisagez.

Après avoir vu votre exemple de balises, je ne vois pas de problème à ce que l'identifiant soit disponible pour l'utilisateur. De nombreuses applications exposent les identifiants de domaine. En fait, selon mon expérience, ces identifiants de domaine font souvent partie intégrante de l'interface utilisateur. Ce sont souvent des identifiants sur lesquels vous pouvez cliquer pour obtenir plus de détails, modifier, supprimer, etc.

Autres conseils

Je ne laisserais jamais de code destiné à être testé sur un site actif. C'est juste un mauvais principe et un piratage invitant.

Tant que vos ID de test sont formatés de manière à ne pas entrer en collision avec d'autres ID de la page (les ID doivent être uniques) et ne sont référencés par aucun code actif (si vous ne pouvez pas déterminer il y a quelque chose de plus faux ici), alors il ne devrait y avoir aucune différence de comportement entre le site de test avec les ID et le site actif sans eux.

À mon avis, la meilleure pratique consiste à concevoir de telle sorte que votre code de test s'exécute correctement sur votre site de développement et que vous sachiez que le supprimer ne nuit pas à votre site actif. Je serais inquiet si mon site avait besoin de faire tester régulièrement la version en direct pour s'assurer qu'il fonctionne correctement.

Avez-vous envisagé d’utiliser autre chose pour identifier des éléments, tels que XPath? Je ne sais pas du tout à quel point vos pages sont dynamiques, mais XPath peut indiquer très précisément l'élément que vous souhaitez.

Personnellement, je ne voudrais pas gonfler le code HTML de production avec des identifiants de test.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top