Chapitre 22. Tests d'acceptation
Cet ouvrage a été traduit à l'aide de l'IA. Tes réactions et tes commentaires sont les bienvenus : translation-feedback@oreilly.com
En tant que développeur, il est facile de se concentrer sur les tests qui entourent directement ta base de code : tests unitaires, tests d'intégration, tests d'interface utilisateur, et autres. Ces tests vérifient que le code fait ce que tu as prévu. Ils constituent un outil inestimable pour que ta base de code ne subisse aucune régression. Ils ne sont pas non plus l'outil idéal pour construire ce qu'un client attend.
Les développeurs écrivent ces tests en connaissant parfaitement le code, ce qui signifie que les tests sont orientés vers les attentes du développeur. Il n'y a cependant aucune garantie que le comportement testé corresponde réellement à ce que veut le client.
Considère le test unitaire suivant :
deftest_chili_has_correct_ingredients():assertmake_chili().ingredients()==["Ground Beef","Chile Blend","Onion",..."Tomatoes","Pinto Beans"]
Ce test pourrait être hermétique ; il réussit et attrape toute régression faite dans le code. Cependant, lorsqu'il est présenté à un client, tu pourrais être confronté à : "Non, je voulais du chili à la texane ! Tu sais, sans tomates ni haricots ?". Tous les tests unitaires du monde ne t'empêcheront pas de construire la mauvaise chose.
C'est là qu'interviennent les tests d'acceptation. Les tests d'acceptation vérifient que tu construis le bon produit. Alors que ...