L’avantage d’écrire et de compléter les tests unitaires sans oublier la couverture de code de Clearbricks — Dotclear y aura droit le moment venu — est que je mets le doigt sur des pépites d’un autre temps.
Dernier exemple en date, la validation XHTML 1.0 effectuée à l’aide du service idoine du Web Design Group ; autant elle était utile il y a quelques années, autant maintenant ça n’a plus trop d’intérêt de valider du XHTML alors qu’on est passé au HTML 5. Cela dit, et pour la petite histoire, le validateur actuellement utilisé fonctionne toujours aussi bien après vingt années en ligne ! C’est assez remarquable cette constance.
Du coup je vais switcher le validateur vers celui du W3C pour basculer au HTML 5, même s’ils annoncent que leur validateur est encore expérimental. Je crois qu’aujourd’hui plus personne ne se pose la question de la syntaxe à utiliser pour du code HTML ; les vieilles bagarres entre XHTML et HTML sont finies.
Accessoirement se pose la question du contenu même des tests unitaires associés, vu qu’ils sont pour l’instant tributaires des valeurs retournées par les méthodes testées, et dans ce cas particulier sur le contenu même fourni par le validateur utilisé.
Quelle est la bonne pratique dans ce domaine, où je suis parfaitement autodidacte — comme dans la quasi totalité des autres domaines d’ailleurs ? J’avoue manquer un peu de références pour me faire une idée des bonnes pratiques à mettre en œuvre.
Autre question, déjà posée ici il me semble, où placer la frontière — s’il doit en exister une — entre les tests unitaires et les tests fonctionnels (ou tests de comportement) ? En particulier pour Clearbricks ; doit-on étendre les tests au fonctionnel sachant que c’est une librairie à utiliser conjointement à un projet, à une application.
À cette deuxième question je pourrais répondre qu’une fois les tests fonctionnels en place pour Dotclear, qui use et abuse de Clearbricks, une grande partie du fonctionnel de cette dernière[1] serait d’ores et déjà en place.
C’est à débattre…
PS : Si vous avez des références en ligne, ou des ouvrages à me conseiller sur ce domaine des tests logiciels, elles seront bien volontiers accueillies[2] !
1 De JulienW -
Coucou !
Quelques éléments de réponse, mes 2 euros quoi :)
1. Tester des trucs qui vont sur le réseau
Quand on teste un truc qui va sur le réseau, généralement on essaie de faire simuler les réponses, on dit “mocker” de l’anglais “mock”. Plusieurs manières de le faire, ça dépend aussi du langage et des outils disponibles:
Ainsi tu contrôles les sorties et tu peux vraiment tester ton propre code en fonction des retours, y compris les retours en erreur.
Pour PHP j’ai vu qu’il y a 3 bibliothèques de mocks: php-mock, simpletest, Mockery. La difficulté sera de mocker une fonction core de PHP, on dirait que php-mock sait le faire mais bon, PHP n’est pas ma spécialité… Pour la solution 2 il y a mock-webserver (peut-être d’autres?).
2. Tests fonctionnels
Ça veut dire qu’au lieu de tester chaque fonction/méthode séparément, tu en testes plusieurs qui vont bien ensemble, comme le ferait une application mais sans utiliser d’application. Par exemple un scénario du type: créer une base avec plein de trucs différents en même temps, ajouter des trucs dedans, supprimer des trucs, faire une update, vérifier que la base est cohérente, etc.
3. Tests de bout en bout
Quand tu testes dotclear avec clearbricks, pour moi c’est ce que j’appelle un test “de bout en bout”. La différence c’est que tu contrôles moins ce que tu testes, tu ne testes que ce que dotclear utilise (ce qui peut être suffisant dans le cas de clearbricks, à toi de poser la limite).
2 De Franck -
Merci JulienW pour tous ces détails
3 De Franck -
En ce qui concerne les mocks, l’environnement que j’utilise pour les tests unitaires, à savoir Atoum, inclut une telle possibilité ; faut juste que je me plonge dans la doc pour voir comment mettre ça en place plus précisément.
Ça sera particulièrement utile bientôt vu que je vais m’attaquer aux tests unitaires des méthodes de plus ou moins bas niveau des accès réseau (net, socket, …) de Clearbricks et que pour ça je n’ai pas d’autre choix que de simuler les réponses, évidemment.