Eagle

Prend vos bugs en photo !

Plan

  • Eagle, c'est quoi ?
  • Pourquoi ?
  • Comment ça marche ?
  • Open source
  • Ses évolutions
  • Démonstration technique

L'automatisation des tests, un véritable enjeu

  • Raccourcir les délais de production
  • Augmenter de la qualité
  • Faire des économies

Eagle, c'est quoi ?

  • Outils d'automatisation de tests basés sur
    • Selenium
    • Intern, environnement d'exécution de tests
    • Le principe d'assertions visuelles
  • Permet d'automatiser les tests de non regression des interfaces web
  • Ecriture des tests en Javascript

Exemple

    
function TypeSearch() {
    return eagle
        .findByCssSelector('.inpt input')
        .type('engineer')
        .end()
        .findByCssSelector('.inpt span')
        .click()
        .end()
        .sleep(2000)
        .captureElementByCssSelector('.jobform-ui','sc/Orange','search-form')
        .captureElementByCssSelector('.joblist','sc/Orange','results');
}
    
        

1ere exécution: l'image de référence

référence

2eme exécution: l'image actuelle

image actuelle

Image différentielle générée

image différentielle

Pourquoi ?

  • Peu ou pas de produit similaire sur le marché
  • Besoin d'automatisation sur Orange Office
  • Et plus généralement pour les applications web responsive
  • Maximiser la valeur ajoutée des tests manuels

D'où vient l'idée ?

Wraith, développé par l'équipe de développement de BBC News pour détecter les regressions visuelles
Huxley, développé chez Instagram, permet aussi d'enregistrer et de rejouer facilement des scénarios

Retours d'expériences difficiles

  • Difficultés à piloter les tablettes et mobiles de manière fiable et automatisée
  • Maîtrise de l’ensemble des composantes d'un produit (interface et backends)
  • Tests qui détectent de vrais erreurs
  • Maintenance des tests

Exigences de départ

  • Les charges d’écriture et de maintenance des tests doivent être raisonnables
  • Les tests doivent être reproductibles et fiables
  • L’exécution des tests doit être intégrée (Hudson/Jenkins)
    • Exécution périodique et à la demande des tests
    • Consultation des rapports de tests
    • Notification par mail

Comment ça marche ?

Son fonctionnel

  • Comparaison de captures d’écrans partielles avec un référentiel, si différence, assertion fausse
  • Génération automatique des références à la 1ere exécution
  • Mise à jour des assertions simplement en supprimant les références
  • Maintien des référentiels dans une gestion de configuration (SVN)

Architecture logicielle

Architecture technique

Recommandations

  • Utiliser seulement des navigateurs PC (Chrome, Firefox, …)
  • Emuler les spécificités mobiles et tablettes (user agents, touch, …)

Un outil de la communauté

  • Produit développé à la base pour Orange Office
  • Mais qui concerne n'importe quel projet web
  • On a donc décontextualisé le produit

Don à la communauté pour

  • Pour le maintenir, le faire évoluer
  • Pour lui donner de la visibilité
  • Cultiver la volonté d'Orange de faire de l'open source

Evolutions envisagées

Proxification des requêtes avec mitmProxy

  • Rendre fiable et reproductible les tests en isolant l’interface des backends. Utilisation d’un proxy spécifique qui :
    • Enregistre les requêtes lors du premier lancement du test
    • Rejoue les requêtes les fois suivantes

Support de GIT

http://orange-opensource.github.io/Eagle/

Démonstration technique

Merci à vous !