iwebforyou
Démarrer un projet
Tous les articles

SaaS

D'abord le test, ensuite le code, sur une plateforme SaaS

Dans le développement piloté par les tests (TDD), on écrit d'abord un test qui échoue, puis le code qui le fait passer, et enfin on améliore le code. Chaque fonction d'une plateforme SaaS a ainsi son contrôle dès le départ. La plupart des tests sont petits et rapides, et quelques-uns vérifient l'ensemble dans le navigateur.

Éditeur : iwebforyouPublié le Mis à jour le 6 min de lecture

D'abord le test, ensuite le code, sur une plateforme SaaS

Une plateforme SaaS change sans cesse : nouvelles fonctions, nouveaux rôles, nouveaux clients. Sans contrôles automatiques, chaque changement laisse la question de savoir si quelque chose qui marchait s'est cassé. Pour chaque fonction, nous écrivons d'abord le test, puis le code. Le contrôle n'est donc pas une dernière étape que l'on peut sauter, mais le point de départ du travail.

Qu'est-ce que le développement piloté par les tests ?

Le développement piloté par les tests, connu sous le nom de TDD (test-driven development), est une méthode où le test s'écrit avant le code qu'il vérifie. Martin Fowler la décrit en trois étapes. On écrit un test pour la fonction suivante, on écrit le code jusqu'à ce qu'il passe, et on améliore le code nouveau et ancien pour qu'il reste bien construit.

Les trois étapes se répètent en cycle, connu sous le nom de red-green-refactor : le test échoue (red), il passe (green) et le code est remis en ordre (refactor). Fowler ajoute qu'avant de commencer le cycle, on écrit une liste des cas à vérifier, et que l'on en traite un à la fois. La méthode ne concerne pas seulement les plateformes, mais elle y rapporte davantage, parce qu'elles vivent de nombreuses années et changent en permanence.

Pourquoi écrit-on le test en premier ?

On écrit le test en premier parce qu'il prouve qu'il peut échouer. Un test écrit après le code passe souvent du premier coup, et personne ne sait s'il aurait jamais attrapé une erreur. Quand on le voit échouer d'abord, on sait qu'il vérifie vraiment quelque chose.

Il y a un second avantage. Pour écrire le test, la fonction doit être décrite avec précision : ce qu'elle reçoit, ce qu'elle renvoie, ce qui se passe quand quelque chose tourne mal. On voit ainsi tôt ce qui manque aux besoins, quand la correction coûte une question et non une refonte. C'est pourquoi la méthode va avec l'analyse des besoins avant le code.

Quels tests faut-il, et combien ?

Il faut beaucoup de petits tests et peu de grands. C'est l'idée de la pyramide de tests (test pyramid), telle que Fowler la formule : bien plus de tests de bas niveau que de tests qui passent par l'écran. Au milieu se trouve un niveau de tests qui vérifient l'application à travers sa couche de services.

Niveau

Ce qu'il vérifie

Combien

Petits tests

Une règle ou un calcul, isolément

La plupart

Tests de services

Une fonction à travers la couche de services de l'application

Un nombre modéré

Tests d'écran

Un parcours complet d'utilisateur dans le navigateur

Les moins nombreux

Fowler explique pourquoi les tests d'écran doivent rester peu nombreux : ils sont fragiles, coûteux à écrire et lents à exécuter. Il note aussi une exception. Si les tests de haut niveau sont rapides, fiables et peu coûteux à modifier, les tests de bas niveau ne sont pas nécessaires. En pratique, peu de tests reproduisent l'usage réel, et les petits font la plus grande partie du travail.

Comment travaillons-nous sur une plateforme ?

Nous suivons le même ordre pour chaque fonction. L'ordre est court et toujours respecté :

  1. Le besoin est écrit et approuvé. Chaque fonction découle des besoins écrits de la première étape.

  2. Le test est écrit et il échoue. Nous vérifions qu'il échoue pour la bonne raison.

  3. Le code est écrit jusqu'à ce que le test passe. On n'écrit rien qu'un test ne demande.

  4. Le code est remis en ordre. Après chaque changement, les tests sont relancés.

  5. La fonction est vérifiée dans le navigateur. Nous l'ouvrons comme un utilisateur et la comparons au plan approuvé.

Chaque étape n'avance que lorsque tous les contrôles passent. Notre outil Planner applique cet ordre quand il construit une application à partir d'une spécification écrite, et nous le décrivons dans l'étude de cas de Planner. L'essentiel est que les tests ne sont pas assouplis pour passer : si un contrôle échoue, c'est le code qui est corrigé.

À quoi ressemble un test dans la pratique ?

Un test est une phrase tirée des besoins, écrite de façon à ce qu'un programme puisse la vérifier. Si le tableau des droits dit qu'un opérateur n'approuve pas les demandes, le test démarre en tant qu'opérateur, essaie d'approuver une demande et attend un refus. Avant l'écriture du code, le test échoue, car le refus n'existe pas encore.

Ensuite, on écrit le code qui refuse l'approbation, et le test passe. Si quelqu'un modifie la règle par erreur plus tard, le même test échoue aussitôt, avant que le changement n'atteigne les utilisateurs. Les besoins que vous avez approuvés restent ainsi actifs après la livraison, et pas seulement sur le papier.

Que se passe-t-il quand une erreur est trouvée ?

Quand une erreur est trouvée, on écrit d'abord un test qui la reproduit. Le test échoue avant la correction et passe après. La même erreur ne peut donc pas revenir sans qu'un contrôle l'attrape, et chaque correction laisse derrière elle une protection permanente.

Cela vaut aussi pour ce que trouve l'équipe d'agents qui examine le projet terminé pour y chercher des erreurs, des problèmes d'utilisabilité et de sécurité. Chaque constat confirmé est corrigé de la même façon. Nous expliquons la démarche dans l'étude de cas des agents de qualité et de sécurité. Un bon exemple est la sécurité des droits, que nous décrivons dans l'article sur les rôles et les droits dans un SaaS.

Questions fréquentes: D'abord le test, ensuite le code, sur une plateforme SaaS

Le TDD ralentit-il le projet ?

Au début, chaque fonction demande un peu plus de temps, parce que son contrôle s'écrit aussi. Ce temps est regagné plus tard, quand les changements sont vérifiés automatiquement et non à la main. Sur une plateforme qui évoluera pendant des années, le gain est clair.

Faut-il des tests sur toute plateforme ?

Plus une plateforme est complexe et durable, plus elle en a besoin. Pour un petit outil interne, un contrôle moins dense suffit. Le niveau exact est convenu dans les besoins et écrit dans le périmètre du projet.

Les tests automatiques remplacent-ils le contrôle par une personne ?

Non. Les tests automatiques attrapent les erreurs que l'on peut décrire à l'avance. C'est pourquoi nous vérifions aussi dans le navigateur, comme des utilisateurs, et testons le résultat sur des scénarios réels tirés de votre travail quotidien. Les deux se complètent.

Que signifie « tous les contrôles ont passé » ?

Cela signifie qu'aucun test n'échoue et que la fonction a aussi été testée dans le navigateur. C'est seulement alors que nous passons à l'étape suivante, pour qu'une erreur ne soit pas reportée plus loin. Ce que la livraison comprend exactement est écrit dans le périmètre du projet que vous approuvez au début.

Vous voulez une plateforme contrôlée dès le départ ?

Si vous concevez un produit SaaS ou une plateforme interne et voulez savoir comment chaque fonction sera contrôlée, décrivez votre projet dans la demande de projet. Nous discuterons ensemble des tests à l'étape des besoins. Voyez aussi la page sur les plateformes SaaS.

Sources: D'abord le test, ensuite le code, sur une plateforme SaaS

En pratique: D'abord le test, ensuite le code, sur une plateforme SaaS

Démarrer un projet

Vous voulez un site que vos visiteurs comprennent tout de suite ? Nous vous aiderons à bien l'organiser.