pyramide des tests

Post on 26-Jun-2015

265 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related