On travaille toujours pour mieux s'améliorer. Créer rapidement comme le fait Patrii depuis le début, c'est impressionnant, mais ça laisse une quantité tout aussi impressionnante de tests à rouler à la main. Au départ, on pouvait tout tester en quelques minutes. Mais plus on ajoutait des XaaS (tout as a service), plus on se ramassait à ralentir pour continuer de livrer des services de qualité.
On veut toujours garder un côté humain à nos tests, mais on trouvait ça répétitif de faire nous-mêmes chaque clic, de remplir les formulaires, de tester de fond en comble toujours les mêmes choses.
Patrii utilise des tests unitaires et des builds testés et livrés automatiquement en CI/CD depuis le début. Cela permettait déjà d'assurer le moins de régressions possible. Mais dire « maintenant le produit est stable et prêt pour la prod » demandait de plus en plus de temps : les tests frontend et backend étaient beaux individuellement, mais rien ne permettait de tester réellement l'accord des deux, de la façon dont nos clients utilisent nos services.
Chaque suite passait. Personne ne testait la rencontre des deux.
C'est exactement là que vivent les défauts qu'un client rencontre en premier : entre une API qui
répond correctement et une interface qui demande la bonne chose au bon moment.
On a donc décidé de travailler sur un outil à l'interne, afin de pouvoir créer des routines et d'exécuter des tests faits de façon humaine, tout en prenant des preuves et en vérifiant des assertions.
Ce que ça change, concrètement
Une routine, c'est la liste ordonnée de ce qu'une personne ferait, avec un but déclaré et une affirmation sur ce que chaque étape prouve. Elle arrive par le menu, comme un client, parce qu'un client ne tape pas l'adresse d'une page interne. Chaque étape est photographiée, avec la sortie console qu'elle a produite. Et ce que la preuve ne peut pas trancher s'en va dans une file de révision, où une personne décide, l'image devant elle.

Une vague de QA Wave sur elle-même : 77 agents, 77 terminés, chaque tuile est un agent et sa dernière image. Deux sont rouges au moment de la capture, et c'est exactement à ça que sert l'outil.


Le même parc, vu deux fois : à gauche les 77 routines de QA Wave, à droite les 120 routines de la console Patrii Cloud. Une zone par sujet, un point par routine, une couleur par verdict. « ne vérifie rien » est une couleur à part, parce qu'une routine qui passe sans rien prouver n'est pas une routine qui va bien.
La répétition est partie. Le jugement est resté. C'était tout le but.
Et une chose que nous n'avions pas prévue : le moteur se teste lui-même. Les routines qui vérifient son interface sont générées depuis son propre menu, donc ajouter une page sans régénérer ses routines fait échouer la vérification. C'est la règle que nous nous appliquons avant de la proposer à qui que ce soit.

630 routines, 18 591 exécutions, et ce que ça coûte : une vague est bornée par sa routine la plus lente, ici 1929 secondes. Les unités consommées du mois sont là aussi, avec la projection de fin de mois.
La retombée que nous n'avions pas vue venir
Comme chaque routine prend des captures et explique ce qu'elle fait et dans quel ordre, les artéfacts d'une exécution sont déjà une procédure illustrée. Nos propres guides client sont branchés dessus : un emplacement de capture y nomme une clé plutôt qu'un chemin, et la clé pointe toujours vers la capture la plus récente de cette page. Et une image ne peut pas se périmer en silence, parce que ce qui la produit est ce qui casse : l'image est prise par une étape qui vérifie quelque chose, donc dès que la page change assez pour que cela compte, la routine échoue et la page n'est pas publiée.

The Patrii Cloud console, photographed by a routine during a wave. This is the kind of image that feeds the screenshots in our customer guides: taken by a test rather than by a person, and retaken on the next wave.
Nous ne cherchions pas à régler le problème de la documentation. Il se trouve qu'une suite de tests honnête ressemble énormément à un manuel à jour.
Et où ça tourne, parce que la question vient tout de suite
Dès qu'on parle de captures d'écran, la vraie question arrive : qui d'autre peut les voir? Tout ça tourne sur Patrii Cloud, notre propre infonuagique souveraine. Et souveraine veut dire la chaîne au complet, de la propriété au code : une entreprise canadienne qui nous appartient, des installations ici, notre matériel, notre code, et des composants libres pour le reste.
L'ordre compte. La compétence juridique suit le fournisseur, pas la baie : un serveur peut être à Montréal et relever quand même de Washington si l'entreprise qui l'exploite est américaine. C'est pour ça que la propriété vient en premier dans cette phrase. Aucun fournisseur américain ne détient vos écrans ni vos preuves.
Un aperçu, pour l'instant
Un groupe restreint l'utilise déjà. L'accès s'ouvrira ensuite à l'ensemble de notre clientèle.
Nous avons le plaisir de vous donner un petit aperçu d'un service qui s'ajoutera à notre plateforme pour nos clients d'ici peu. Pas de date, pas de prix, pas de promesse : seulement l'outil que nous utilisons tous les jours, et l'intention de le rendre disponible.
Toutes les images de cette page ont été prises par QA Wave lui-même, pendant de vraies vagues. Recadrées pour la mise en page, jamais mises en scène. C'est exactement le même mécanisme que celui qui alimentera votre documentation.
Vous reconnaissez votre propre rituel de mise en production?
Nous acceptons présentement les candidatures pour un premier groupe d'utilisateurs. Les places sont limitées et le programme est payant : nous préférons travailler avec des équipes qui ont un vrai besoin et qui nous diront franchement ce qui ne va pas, plutôt que de faire un essai gratuit qui ne nous apprend rien.