Download - Pyramide des tests
Pyramide des testsd'où sort-il?
Johan Martinsson@johan_alps
Tuesday, May 14, 13
Le cas de ...
Fred Sandra
Les tests de boîte noire sont top! Simples à écrire, ils ont du sens
pour tout le monde. Nous n’avons pas tellement besoin de tests
unitaires.
Nous avons beaucoup fait les tests boite noire, mais nous avons du
tous les jeter! On arrivait plus à les maintenir.
Tuesday, May 14, 13
Le cas de ...
Fred Sandra
150 tests système5 min
à l’intérieur du f-workune seule BDD
600 tests système9 heures
5 processus dont 2 batchSelenium
2 BDD, 2 FS
Tuesday, May 14, 13
Couverture de code
Tuesday, May 14, 13
Un bon test• Casse pour de vrais erreurs• Ne casse pas pour un ajout• N’est pas aléatoire• Ne dépend pas d’autres tests• Tourne vite
Tuesday, May 14, 13
Ratio vraie / fausse alerteLorsqu’un test système échoue c’est• Un bug• ou un évènement aléatoire
• pb réseau• autres aplications HS (backend, bdd)• maintenance manuel
• ou d’un dommage collateral• Modification des données de test• Nouvelle fonctionnalité modifie le comportement de
l’application (login)• Données attendues trop larges
Tuesday, May 14, 13
Coût de fixer un bug
Tuesday, May 14, 13
Coût de fixer un bug
Tuesday, May 14, 13
Coût de maintenance
Tuesday, May 14, 13
Avec la taille de l'application l'intérêt des tests bas niveau se fait sentir
Tuesday, May 14, 13
unitaire(
intégra(on*
Système
Tuesday, May 14, 13
Test d’intégration
@Test public void it_knows_the_price_of_fruit() throws Exception { storage.addFruit(fruit("Strawberries"), money(500)); assertThat(storage.priceFor(fruit("Strawberries"))).isEqualTo(money(500)); }
Test focalisé sur une librairie/service externe (BDD, web service, framework)
Tuesday, May 14, 13
Tests unitaires un frein?
Tuesday, May 14, 13
Tests unitaires un frein? @Test public void a_discount_for_two_fruit_applies_for_two_fruit() throws Exception { List<Fruit> fruits = asList(APPLE, APPLE); Money discount = discountOf50for2apples.apply(fruits); assertThat(discount).isEqualTo(money(50)); }
Tuesday, May 14, 13
Tests unitaires un frein? @Test public void a_discount_for_two_fruit_applies_for_two_fruit() throws Exception { List<Fruit> fruits = asList(APPLE, APPLE); Money discount = discountOf50for2apples.apply(fruits); assertThat(discount).isEqualTo(money(50)); }
@Testpublic void testReadXml() { try { ApplicationTargets applicationTargetList = roleXmlReader.readXml(); if (applicationTargetList != null) { if (applicationTargetList.getApplicationTargetList() == null && applicationTargetList.getApplicationTargetList() .size() == 0) { fail("Error while reading XML file"); } } else { fail("Error while reading XML file"); } } catch (Exception e) { fail("Error while reading XML file"); }}
Tuesday, May 14, 13