Les meilleurs programmeurs font des erreurs. La différence entre les bons et les mauvais programmeurs est que les bons programmeurs peuvent trouver autant d'erreurs que possible grâce aux tests. Plus vite vous testez les bugs, plus vite vous les trouvez et moins ils coûtent cher à trouver et à corriger. Cela explique pourquoi tester un logiciel juste avant sa sortie est si problématique. La plupart des bogues ne sont jamais trouvés, et la correction des bogues trouvés est si importante que vous devez donner la priorité à la correction uniquement de ces bogues, car vous ne pouvez tout simplement pas vous permettre de tous les corriger.
Tester avec PHPUnit n’est pas complètement différent de l’approche que vous utilisez. Ils ont juste des méthodes différentes. La différence entre les deux est que la vérification du bon fonctionnement du programme s'effectue via un lot d'extraits de code qui peuvent être automatiquement testés. Ces extraits de code sont appelés tests unitaires. Dans cette partie, nous effectuons d'abord des tests automatiques basés sur le code de test imprimé. Supposons que nous voulions tester le tableau Array intégré à PHP. L'un des tests à effectuer est la fonction sizeof(). La fonction sizeof() doit renvoyer 0 pour tout tableau nouvellement créé. Lorsque nous ajoutons un nouveau membre du tableau, sizeof() doit renvoyer 1. L'exemple 1 montre ce que nous voulons tester.
Exemple 1. Test du tableau et sizeof()
<?php
$fixture = Tableau( );
// $fixture doit être vide.
$fixture[] = "élément" ;
// $fixture doit contenir un membre du tableau.
?>
La méthode de test la plus simple consiste à imprimer les résultats de l'opération de sizeof() avant et après l'ajout de membres du tableau. Si 0 et 1 sont renvoyés, cela signifie que Array et sizeof() fonctionnent normalement.
Exemple 2. Utilisez les instructions print pour tester Array et sizeof()
<?php
$fixture = Tableau( );
print sizeof($fixture) . "n";
$fixture[] = "élément";
imprimer la taille de ($fixture) .
?>
0
1
Maintenant, nous passons du programme de test nécessitant une interprétation manuelle à son exécution automatique. Dans l'exemple 3, nous comparons la valeur attendue avec la valeur réelle et imprimons ok si elles sont égales. Si nous constatons que certains résultats ne sont pas corrects, nous savons qu’il y a un problème.
Exemple 3. Comparez les valeurs attendues et réelles de Array et sizeof()
<?php
$fixture = Tableau( );
print sizeof($fixture) == 0 ? "okn" : "pas okn";
$fixture[] = "element";
print sizeof($fixture) == 1 ? "okn" : "pas okn";
?>
D'ACCORD
ok,
nous introduisons maintenant un nouvel élément, si la valeur attendue est différente de la valeur réelle, nous levons une exception. De cette façon, notre sortie est plus simple. Si le test réussit, rien n’est fait, s’il y a une exception non gérée, nous savons que quelque chose ne va pas.
Exemple 4. Utilisation de fonctions d'assertion pour tester Array et sizeof()
<?php
$fixture = Tableau( );
assertTrue(sizeof($fixture) = = 0);
$fixture[] = "élément";
assertTrue(sizeof($fixture) = = 1);
function assertTrue($condition) {
si ($condition) {
throw new Exception("Échec de l'assertion.");
}
}
?>
Désormais, le test est entièrement automatisé. Contrairement à notre première version, cette version rend les tests entièrement automatisés.
L’objectif de l’utilisation des tests automatisés est de commettre le moins d’erreurs possible. Même si votre code n'est pas encore parfait, avec de bons tests automatisés, vous constaterez que les erreurs seront considérablement réduites. Les tests automatisés vous donnent l'assurance que votre code est équitable. Avec cette confiance, vous pouvez faire des progrès audacieux en matière de conception, mieux collaborer avec votre équipe, améliorer les relations entre vous et vos clients et dormir paisiblement chaque jour, car vous pouvez prouver que le système est meilleur grâce à vos efforts.