Voici une représentation de la pyramide des tests de Mike Cohn Chaque couche peut avoir sa propre boucle de feedback. Plus on descend, plus c’est facile de comprendre pourquoi c’est cassé Plus on remonte et plus c’est compliqué!
Slide 3
L'équilibre du domaine
On vit un monde magnifique, on créé des fonctionnalités en TDD, parfois on avait pas prévu qqch et ca casse. On corrige, et puis parfois ça se corrige tout seul…et puis ca répète et puis c’est la cata
Slide 4
Patatras ⛈ Les tests sont imprévisible ⛈ On a plus le contrôle ⛈ On perd l’idempotence qui régit tout l’équilibre des tests
Slide 5
Le comic sans ms, ça fait peur 🫣
Slide 6
Les timeouts ⏱
Principalement sur les e2e/acceptance On tombe principalement sur des faux negatifs. Principalement ce sont:
Problemes de réseaux
DOM non chargés
Requêtes trop lentes
Deadlock 💀
Slide 7
Problème d'environnement 🌍
Les différence d’environnement peuvent poser des problêmes: Setup/installation (OS, ecran, version java/node/python) Ressources (RAM) Variables d’environnement Docker peut aider pour ça (mais ne règle pas tout)
Slide 8
Problème de données 💿
Un test peut en impacter un autre (mais ne devrait pas) Les données peuvent être par exemple:
BDD
RAM
Système de fichier Cache
Tri dans le code et/ou dans le test
Tri dans le test/tri dans le code
On peut tester le contenu sans l’ordre
Slide 9
Le (pseudo) random 💩
Le random n’est l’est pas toujours autant qu’on l’espère Problèmes avec des bibliothèque (par exemple Faker) pour l’unicité
Slide 10
Problème de modules importés 🛸
Les règles du SEMVER ne sont pas toujours respectés. Exemple: Ua-parser-js (publication de version avec du cryptomining)
Slide 11
Problème de date 📆
Les dates et les fuseaux horaires, le cauchemar des devs! Les dates changent en permanence, ce qui semble être fixe ne l’est pasPB sur des dates, décalage horaires/heure d’été il faut mocker la date Il faut mocker la timezone
Slide 12
Problème d'asynchronisme ⚡
En asynchrone, on peut être dans les temps et on peut ne pas… Si on attend pas la résolution de l’asynchrone on ne sais pas quand le code sera exécuté (possible que ca fonctionne)
Slide 13
Comment qu'on reproduit quand y'a un flaky?
On run les tests seul/avec d’autres tests
On run dans le désordre
On vérifie l’état des stockages avant/aprés le test
On limite la qualité du reseau
Sur différents environnements
On debug
Slide 14
Pour reperer ces petites bêtes?
En runnant et rerunnant les tests, sur tout pleins d’environnements! Avec des outils: Circle-ci Gitlab-ci Datadog
Les CI permettent de repérer les flaky et donner de nombreuses informations pertinentes.
Slide 15
Les tests Flakys Ces 🐛 qui nous empoisonnent la vie
Antoine Ceol
twitter @boombaprealm
github @aceol