DevOps
BigData & NoSQL

Craftsmanship
0

Quand ne pas mocker

En tant que Test Driven Developer et plutôt adepte de l’école de TDD de Londres, j’ai tendance à utiliser un nombre assez important de mocks quand je teste mon code. Cependant, il y a des cas où je trouve plus utile de ne pas en utiliser. L’objectif de cet article est de décrire ces cas ainsi que la façon de tester le code sans utiliser de mocks.

Web
0

Les frameworks mutants ou comment évaluer la qualité de ses tests unitaires

De tous les outils de l’amélioration continue pour veiller à une bonne qualité de code, l’un des plus populaires, des plus simples (et probablement mon préféré) est l’utilisation des tests automatisés (unitaires et autre). Or, il ne suffit pas d’écrire des tests unitaires. Ceux-ci doivent aussi se révéler efficaces. Le TDD (Test Driven Development) ou BDD (Behavior Driven Design) peuvent être des solutions à ce souci d’efficacité. Cependant, les tests unitaires sont sujets à grossir, être modifiés par différentes personnes, … D’une manière générale, ils peuvent facilement échapper à notre contrôle. Il serait alors tellement agréable d’avoir un moyen automatisé de les évaluer. Le taux de couverture de test n’est pas une métrique suffisante puisqu’il permet simplement de se donner une idée de là où passent ou ne passent pas les tests mais ils ne prévalent pas sur la pertinence du test et encore moins sur les vérifications effectuées en fin d’exécution. Qui n’a pas déjà vu un Assert.assertTrue(true) ? SUCCESS: 26/26 (100%) Tests passed pic.twitter.com/Eh4tzKgiQV — Bernd Lörwald (@bloerwald) March 25, 2014 Une solution pourrait alors être dans les frameworks dit “mutation testing” frameworks. Il s’agit d’outils qui : créent des variations d’un code métier, variations appelées “mutants” lancent les tests unitaires sur ces mutants Si les tests continuent à passer alors que le code a changé (mutation), cela signifie que les tests ne sont pas pertinents. Ces variations peuvent être diverses : changement d’opérateurs (opérateur + en -), suppression d’une instruction, inversion d’une égalité (== devient != dans un if), … Le mutation testing par l’exemple Un outil que j’ai trouvé récemment pour faire du mutation testing, c’est Humbug. Humbug me semble être le seul projet viable en PHP dans le sens où il est toujours maintenu et utilisé par différents projets. Humbug fonctionne avec PHPUnit, framework de…