pyramide des tests

15

Click here to load reader

Upload: martinsson

Post on 26-Jun-2015

262 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pyramide des tests

Pyramide des testsd'où sort-il?

Johan Martinsson@johan_alps

Tuesday, May 14, 13

Page 2: Pyramide des tests

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

Page 3: Pyramide des tests

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

Page 4: Pyramide des tests

Couverture de code

Tuesday, May 14, 13

Page 5: Pyramide des tests

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

Page 6: Pyramide des tests

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

Page 7: Pyramide des tests

Coût de fixer un bug

Tuesday, May 14, 13

Page 8: Pyramide des tests

Coût de fixer un bug

Tuesday, May 14, 13

Page 9: Pyramide des tests

Coût de maintenance

Tuesday, May 14, 13

Page 10: Pyramide des tests

Avec la taille de l'application l'intérêt des tests bas niveau se fait sentir

Tuesday, May 14, 13

Page 11: Pyramide des tests

unitaire(

intégra(on*

Système

Tuesday, May 14, 13

Page 12: Pyramide des tests

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

Page 13: Pyramide des tests

Tests unitaires un frein?

Tuesday, May 14, 13

Page 14: Pyramide des tests

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

Page 15: Pyramide des tests

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