Techno-magis

BakuJS : l'importance des tests

Mercredi 27 Janvier 2016

Ça va faire deux semaines que je me suis vraiment lancé sur ma petite bibliothèque JS et j'ai presque tout réécrit, en grande partie à cause d'erreurs de conception. J'avais fait quelques tests, un peu à l'arrache (en live dans la console), et je n'avais jamais rencontré de problème. Puis pour être certains que ça fonctionne, j'ai commencé à écrire une batterie de tests, et à chaque fois c'était « si je vais ceci, ça doit donner cela » et je lance mon test. C'est avec stupeur que certains ne fonctionnaient pas. Donc je me suis lancé sur la recherche de toute les cas tordus avec le résultat escompté et je suis parti à la chasse aux bugs. En fait, cette technique de débogage, je la connais. C'est du TDD. On commence par écrire un test qui ne fonctionne pas, et on fait en sorte que le code le fasse marcher. Dans mon cas, il y a aussi tous les autres tests qui fonctionnaient déjà.

Je me rends compte que je n'ai pas tellement le temps de faire de genre de choses au boulot et c'est dur à prendre en main. J'ai du passé autant de temps à écrire mes tests qu'à faire les corrections pour qu'ils passent. Pour être franc, c'est un peu long et chiant, mais une fois que j'ai les tests, ça devient facile de détecter la moindre variance dans le code. Il en reste que ce n'est pas simple de penser à tout, je suis certain qu'il y a une kyrielle de cas oubliés.

Bref, c'est donc partiellement mis en application pour BakuJS. J'essaie méthode par méthode d'étoffer les tests. J'ai aussi pris un petit temps pour écrire la doc. C'est également un bon moyen de relire son code. Pour l'instant, c'est tout en français. Dès que j'ai le courage, je la fais en anglais et je passe également mes commentaires de code en anglais... sauf si quelqu'un veut m'aider. J'en serais ravi.

À présent, j'ai quelques points à faire :

  • traduction
  • compléter la doc
  • trouver une solution pour mettre en place du l18n
  • ajouter de tests pour les méthodes qui en ont trop peu
  • trouver une solution pour proposer une version minifiée (un script)

Normalement, je me servirais de cette base pour refaire le JS du site. Actuellement j'ai bien une base, mais elle est bordélique et pas très cohérente. J'aimerais me simplifier la vie sans passer par une grosse bibliothèque dont la moitié des comportements me sont inutiles. C'est aussi plus simple, car je n'ai pas l'intention de faire du support pour les navigateurs dont il n'y a plus de support.

Pour finir, je galère pas mal avec Git (Github). L'autoformation se fait un peu dans la souffrance. Si j'arrive enfin à avoir les idées claires sur le sujet, ça m'aiderait grandement. Je poserais probablement tout ce dont je me sers dans un article (qui me servira surtout de pense-bête).

Catégories :
Par Zéfling, le 27/01/2016 à 23:51:55
Le billet a été lue 345 fois, avec 2 commentaires publiés.
👍 0 👎 0

2 commentaires déposés

Par Zéfling, le 30/01/2016 à 11:39:52
Avatar
Webmaster

Petit point d'avancement :

  • traduction en anglais (c’est en court)
  • compléter la doc (c’est en court)
  • trouver une solution pour mettre en place du l18n (fait)
  • ajouter de tests pour les méthodes qui en ont trop peu (c’est en court)
  • trouver une solution pour proposer une version minifiée (un script) (pas commencé)

J’ai passé ma soirée d’hier à trouver une solution pour l18n, et ça m’a forcé à revoir certains concepts. Je pense être sur quelque chose de pas trop mal. Je n’ai pas encore versionné l’ensemble, car je considère que ce n’est toujours pas utilisable autrement que pour test.

Compared to French grammar, nothing is hard. (Rasmus Lerdorf)
Par Zéfling, le 09/02/2016 à 20:13:57
Avatar
Webmaster

Petit point d'avancement :

  • traduction en anglais (partiel)
  • compléter la doc (à compléter)
  • ajouter de tests pour les méthodes qui en ont trop peu (y'en a jamais assez)
  • trouver une solution pour proposer une version minifiée (un script) (pas commencé) (fait)

Je suis en train de tester le tout dans une appli. D'ailleurs, pas mal d'évos sont indirectement dues à mes besoins sur celle-ci. 😊

L'homme est le plus inhumain des animaux.

Écrire un commentaire