48. Créer l’unité
class InvoiceLine
{
/* properties + constructor */
public function total()
{
return $this->_quantity * $this->_unitPrice;
}
}
49. Jouer le test
# phpunit tests/models/InvoiceLineTest.php
PHPUnit 3.7.8 by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 2.25Mb
OK (1 test, 1 assertion)
51. Prise en charge de la TVA
public function testInvoiceLineTotal()
{
$line = new InvoiceLine(2, 45, 15);
$this->assertEquals(103.5, $line->total());
}
52. Rejouer le test
# phpunit tests/models/InvoiceLineTest.php
PHPUnit 3.7.8 by Sebastian Bergmann.
F
Time: 0 seconds, Memory: 2.50Mb
There was 1 failure:
1) InvoiceLineTest::testInvoiceLineTotal
Failed asserting that 90 matches expected 103.5.
/Users/gauthier/projects/UnitTesting/tests/models/InvoiceLineTest.php:18
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
54. Adapter l’unité
class InvoiceLine
{
/* properties + constructor */
public function total()
{
$total = $this->_quantity * $this->_unitPrice;
return $total * (1 + ($this->_vat / 100));
}
}
55. Rejouer le test
# phpunit tests/models/InvoiceLineTest.php
PHPUnit 3.7.8 by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 2.25Mb
OK (1 test, 1 assertion)
61. Résumé
tester unitairement
= gain de temps
au design de l’application
à l’exécution des tests
= amélioration de la qualité
62. Résumé
tester unitairement
= gain de temps
au design de l’application
à l’exécution des tests
= amélioration de la qualité
du code produit
63. Résumé
tester unitairement
= gain de temps
au design de l’application
à l’exécution des tests
= amélioration de la qualité
du code produit
des fonctionnalités
64. Résumé
tester unitairement
= gain de temps
au design de l’application
à l’exécution des tests
= amélioration de la qualité
du code produit
des fonctionnalités
= industrialisation
65. Résumé
tester unitairement
= gain de temps
au design de l’application
à l’exécution des tests
= amélioration de la qualité
du code produit
des fonctionnalités
= industrialisation
intégration continue
66. Résumé
tester unitairement
= gain de temps
au design de l’application
à l’exécution des tests
= amélioration de la qualité
du code produit
des fonctionnalités
= industrialisation
intégration continue
= gain de productivité
68. Merci de votre attention !
Twitter
= @gdelamarre
Mail
= gauthier.delamarre@
vaconsulting.lu
Hinweis der Redaktion
«A vaincre sans péril, on triomphe sans gloire»\n
\n
tests unitaires === tests techniques => tests d’implémentation des règles métiers\ntests unitaires == tests fonctionnels (dans une moindre mesure)\n
tests unitaires === tests techniques => tests d’implémentation des règles métiers\ntests unitaires == tests fonctionnels (dans une moindre mesure)\n
tests unitaires === tests techniques => tests d’implémentation des règles métiers\ntests unitaires == tests fonctionnels (dans une moindre mesure)\n
tests unitaires === tests techniques => tests d’implémentation des règles métiers\ntests unitaires == tests fonctionnels (dans une moindre mesure)\n
tests unitaires === tests techniques => tests d’implémentation des règles métiers\ntests unitaires == tests fonctionnels (dans une moindre mesure)\n
- la plupart des méthodes métiers sont implémentées sous la forme de méthodes\n - ce sont elles qui représente l’essentiel de la valeur ajoutée d’une application\n - ces méthodes sont les unités auxquelles fait référence le terme «test unitaire»\n
- la plupart des méthodes métiers sont implémentées sous la forme de méthodes\n - ce sont elles qui représente l’essentiel de la valeur ajoutée d’une application\n - ces méthodes sont les unités auxquelles fait référence le terme «test unitaire»\n
- la plupart des méthodes métiers sont implémentées sous la forme de méthodes\n - ce sont elles qui représente l’essentiel de la valeur ajoutée d’une application\n - ces méthodes sont les unités auxquelles fait référence le terme «test unitaire»\n
- la plupart des méthodes métiers sont implémentées sous la forme de méthodes\n - ce sont elles qui représente l’essentiel de la valeur ajoutée d’une application\n - ces méthodes sont les unités auxquelles fait référence le terme «test unitaire»\n
- la plupart des méthodes métiers sont implémentées sous la forme de méthodes\n - ce sont elles qui représente l’essentiel de la valeur ajoutée d’une application\n - ces méthodes sont les unités auxquelles fait référence le terme «test unitaire»\n
!= prédictible => le résultat du test dépend de l’opérateur - de sa compréhension de la règle métier et de son interprétation du résultat\n!= coûts prohibitifs => chaque fois que le test est rejoué, il faut réinvestir le même temps - et ces temps d’exécution des tests croissent et se cumulent au long de la vie du projet\n
!= prédictible => le résultat du test dépend de l’opérateur - de sa compréhension de la règle métier et de son interprétation du résultat\n!= coûts prohibitifs => chaque fois que le test est rejoué, il faut réinvestir le même temps - et ces temps d’exécution des tests croissent et se cumulent au long de la vie du projet\n
!= prédictible => le résultat du test dépend de l’opérateur - de sa compréhension de la règle métier et de son interprétation du résultat\n!= coûts prohibitifs => chaque fois que le test est rejoué, il faut réinvestir le même temps - et ces temps d’exécution des tests croissent et se cumulent au long de la vie du projet\n
!= prédictible => le résultat du test dépend de l’opérateur - de sa compréhension de la règle métier et de son interprétation du résultat\n!= coûts prohibitifs => chaque fois que le test est rejoué, il faut réinvestir le même temps - et ces temps d’exécution des tests croissent et se cumulent au long de la vie du projet\n
- test unitaire == test portant sur une unité\n - poser la question «qu’est-ce qu’un test unitaire ?» \n - indice : ce n’est pas un test effectué une seule fois - au contraire c’est un test automatisé\n
- test unitaire == test portant sur une unité\n - poser la question «qu’est-ce qu’un test unitaire ?» \n - indice : ce n’est pas un test effectué une seule fois - au contraire c’est un test automatisé\n
- impose la nécessité de tester des unités\n
- impose la nécessité de tester des unités\n
- impose la nécessité de tester des unités\n
- impose la nécessité de tester des unités\n
- permet de trouver plus vite la meilleure implémentation et facilite le refactoring\n - tester avant d’écrire le code garantit d’écrire du code testable\n - écrire les tests au fur et à mesure est plus fluide, et les gains immédiats équilibrent largement le temps investit dans l’écriture du test lui-même\n
- permet de trouver plus vite la meilleure implémentation et facilite le refactoring\n - tester avant d’écrire le code garantit d’écrire du code testable\n - écrire les tests au fur et à mesure est plus fluide, et les gains immédiats équilibrent largement le temps investit dans l’écriture du test lui-même\n
- permet de trouver plus vite la meilleure implémentation et facilite le refactoring\n - tester avant d’écrire le code garantit d’écrire du code testable\n - écrire les tests au fur et à mesure est plus fluide, et les gains immédiats équilibrent largement le temps investit dans l’écriture du test lui-même\n
\n
une unité = une classe + une méthode\n
une unité = une classe + une méthode\n
une unité = une classe + une méthode\n
une unité = une classe + une méthode\n
une unité = une classe + une méthode\n
une unité = une classe + une méthode\n
exemple volontairement trivial\n
exemple volontairement trivial\n
exemple volontairement trivial\n
cette méthode est écrite dans une classe simple, héritant d’une classe du framework de test unitaire\nassertEquals = une assertion == un prédicat (les tests sont prédictibles...)\n
cette méthode est écrite dans une classe simple, héritant d’une classe du framework de test unitaire\nassertEquals = une assertion == un prédicat (les tests sont prédictibles...)\n
cette méthode est écrite dans une classe simple, héritant d’une classe du framework de test unitaire\nassertEquals = une assertion == un prédicat (les tests sont prédictibles...)\n
cette méthode est écrite dans une classe simple, héritant d’une classe du framework de test unitaire\nassertEquals = une assertion == un prédicat (les tests sont prédictibles...)\n
cette méthode est écrite dans une classe simple, héritant d’une classe du framework de test unitaire\nassertEquals = une assertion == un prédicat (les tests sont prédictibles...)\n
\n
\n
\n
on s’assure que les changements du test reflètent une véritable modification\n=> évite les assertions inutiles\n
\n
\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n
évidemment tout ceci demande un investissement initial (formation, pratique...)\n