et si on maîtrisait vraiment notre produit

35
Et si on maîtrisait vraiment notre produit Sébastien FAUVEL Orange Applications for Business Juin 2014, Agile Nantes

Upload: atnantes

Post on 23-Jun-2015

1.033 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Et si on maîtrisait vraiment notre produit

Et si on maîtrisait vraiment notre produit

Sébastien FAUVEL

Orange Applications for Business

Juin 2014, Agile Nantes

Page 2: Et si on maîtrisait vraiment notre produit

2 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Sébastien Fauvel

OAB, à NantesArchitecte

agile

Améliorer ses pratiques

Travaild’équipe

Réduirel’incertitudeDéveloppeme

nt

Agilité

Agile

Nantes

Cleancode

Test

sau

tom

atis

és

eXtremeProgramming

Vers une nouvelle manière de faire

du logiciel

@sebfauvel

Page 3: Et si on maîtrisait vraiment notre produit

3 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

En route pour le voyage

Page 4: Et si on maîtrisait vraiment notre produit

4 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Etat des lieux

Page 5: Et si on maîtrisait vraiment notre produit

5 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Tester mon application

Page 6: Et si on maîtrisait vraiment notre produit

6 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Gestion des campagnes de tests

TestL

ink

Squash

Sal

omé

Quality C

enter

Page 7: Et si on maîtrisait vraiment notre produit

7 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Le graal

Page 8: Et si on maîtrisait vraiment notre produit

8 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Des spécifications compréhensibles

L'association paie l'apéro pour le repas du mercredi soir et le repas du jeudi soir.

L’apéro: 5€ / pers. Mercredi: 10 pers.Le repas: 20€ / pers. Jeudi: 15 pers.

Coût de l’opération ?

A - 125 €

B - 275€

C - 350 €

D - 500 €

Page 9: Et si on maîtrisait vraiment notre produit

9 Orange Applications for Business

Que reste-t-il à la fin ?

Et si on maîtrisait vraiment notre produit

Page 10: Et si on maîtrisait vraiment notre produit

10 Orange Applications for Business

Combien de temps cela prend-il ?

Et si on maîtrisait vraiment notre produit

Page 11: Et si on maîtrisait vraiment notre produit

11 Orange Applications for Business

Langage « humain »Interagir avec

le système

L’automatisation

Mot

eur

Et si on maîtrisait vraiment notre produit

Page 12: Et si on maîtrisait vraiment notre produit

12 Orange Applications for Business

Interagir avec le

système

Dialogue avec le système

HTML Selenium, Watir, Sahi

WebService SoapUi, XMLUnit

Android, IOS Monkey Talk, Eggplant

Java Java

Et si on maîtrisait vraiment notre produit

Page 13: Et si on maîtrisait vraiment notre produit

13 Orange Applications for Business

Ecriture du test par une personne

Java Code basique

FestAssert, assertJ Code plus lisible

Fitness Wiki

JBehave, Cucumber Langage naturel

Langage « humain »

Et si on maîtrisait vraiment notre produit

Page 14: Et si on maîtrisait vraiment notre produit

14 Orange Applications for Business

Ecriture du test par une personne

Code basique / JUnitCode plus lisibleFluent interface

Wiki / FitnessLangage naturel /

JBehave

PanierTest

Ajouter un article

coutant 10

Ajouter un article

coutant 15

Vérifier le prix est

24

|PanierTest||Ajouter un article|coutant|10||Ajouter un article|coutant|15||Vérifier|le prix est|24|

@Test public void reductionPourDeuxProduits() { Panier panier = new Panier() ; panier.add(new Article(10)) ; panier.add(new Article(15)) ;

assertEquals(24, panier.montant()) ; }

Scénario : Réduction de 10% sur le moins chère des 2.

Lorsque que j’achète 1 article à 10 eurosEt un article à 15 eurosLe prix final est de 24 euros

@Test public void en_achetant_2_produits_le_moins_chere_a_10%_de_reduction() {

panier = un_panier()

.avec(un_article_coutant(10))

.et_avec(un_article_coutant(15)) ;

alors().le(panier.montant()).est(24)}

Et si on maîtrisait vraiment notre produit

Page 15: Et si on maîtrisait vraiment notre produit

15 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Automatisation des tests d’IHM

Page 16: Et si on maîtrisait vraiment notre produit

16 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Selenium IDE

Page 17: Et si on maîtrisait vraiment notre produit

17 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Selenium Java

@Testpublic void testIhm() throws Exception { WebDriver driver = new HtmlUnitDriver(); driver.get("http://www.google.com");

WebElement element =

driver.findElement(By.name("q"));

element.sendKeys("Cheese"); element.submit();

// Check the title of the pageassertTrue(driver.getPageSource()

.contains("Camembert");

driver.quit(); }

Page 18: Et si on maîtrisait vraiment notre produit

18 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Selenium Java

private final String URL_GOOGLE = "http://www.google.com";

@Testpublic void testIhm() throws Exception { allerSurLaPage(URL_GOOGLE); chercher("Cheese"); verifierQueLaPageContient("Camembert");}

public void chercher(String texteAChercher) throws Exception { WebElement element = driver.findElement(By.name("q")); element.sendKeys(texteAChercher); element.submit();}

public void verifierQueLaPageContient(String texteAChercher) throws Exception { assertTrue(driver.getPageSource().contains(texteAChercher));}

Page 19: Et si on maîtrisait vraiment notre produit

19 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

Boîte noire

Page 20: Et si on maîtrisait vraiment notre produit

20 Orange Applications for Business

Bouchon

Bouchon

WSSOAP

Modèle

WS

BDSQLDAO

MétierIHMJSON

HTTP

CSS

Ouvrir la boîte

JS

HTML

IHM

Serv

eur

Et si on maîtrisait vraiment notre produit

Sele

niu

m

Test

TestJava

Page 21: Et si on maîtrisait vraiment notre produit

21 Orange Applications for Business

Test

Bouchon

Bouchon

Modèle

Métier

Ouvrir la boîte

Serv

eur

Et si on maîtrisait vraiment notre produit

Java

Page 22: Et si on maîtrisait vraiment notre produit

22 Orange Applications for Business

BouchonBDSQL

DAO

Ouvrir la boîte

Et si on maîtrisait vraiment notre produit

Java

TestSe

rveu

r

Page 23: Et si on maîtrisait vraiment notre produit

23 Orange Applications for Business

A quoi ressemblent nos briques ?

Et si on maîtrisait vraiment notre produit

Page 24: Et si on maîtrisait vraiment notre produit

24 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit

A quoi ressemblent nos briques ?

/** * Méthode format. Supprime les sauts de lignes et les points virgules. * @param chaine la chaîne en entrée * @return la chaîne nettoyée. */

public static String format(String chaine) {

String retour = chaine;

retour = retour.replace("\\n", "");

retour = retour.replace(";", "");

return chaine;

}

Procédure: corriger le

document

on me donne un

original

je fais une photocopie

je corrige sur la

photocopie

je redonne l’original

et je jette la

photocopie

Page 25: Et si on maîtrisait vraiment notre produit

25 Orange Applications for Business

Grain de sable

Et si on maîtrisait vraiment notre produit

Page 26: Et si on maîtrisait vraiment notre produit

26 Orange Applications for Business

Et si ma recette copiait mes développeurs ?

Votre avis ?

Mon équipe de test analyse les documents

Elle vérifie que ça marche comme spécifié

Elle ne documente pas comment elle a fait

Elle indique juste à la fin si c’est ok ou pas

Et si on maîtrisait vraiment notre produit

Page 27: Et si on maîtrisait vraiment notre produit

27 Orange Applications for Business

Test first et TDD

Et si on maîtrisait vraiment notre produit

Page 28: Et si on maîtrisait vraiment notre produit

28 Orange Applications for Business

Et le code…

Et si on maîtrisait vraiment notre produit

Page 29: Et si on maîtrisait vraiment notre produit

29 Orange Applications for Business

Rapport Sonar

Et si on maîtrisait vraiment notre produit

Page 30: Et si on maîtrisait vraiment notre produit

30 Orange Applications for Business

Industrialisation

Et si on maîtrisait vraiment notre produit

Page 31: Et si on maîtrisait vraiment notre produit

31 Orange Applications for Business

Quelle stratégie ?

Et si on maîtrisait vraiment notre produit

FonctionnelUnita

ire

Intégration

continue

Page 32: Et si on maîtrisait vraiment notre produit

32 Orange Applications for Business

Il y a des hommes derrière tout ça

Et si on maîtrisait vraiment notre produit

Page 33: Et si on maîtrisait vraiment notre produit

33 Orange Applications for Business

Echantillon d’outils dans le monde Java

Ecriture de tests

Moteur JUnit Test NG

Mock Mockito EasyMock

Lisibilité FestAssert AssertJ Hamcrest

Ecriture orientée métier

BDD Jbehave Cucumber

ATDD Fitness Green Peper

Lien avec l’extérieur

Base de données

DBUnit

Web Service

SoapUi

IHM Web Selenium

XML XmlUnit

Outillage

Exécution Infinitest Maven Jenkins

Couverture de code

Cobertura Emma Sonar

Et si on maîtrisait vraiment notre produit

Page 34: Et si on maîtrisait vraiment notre produit

34 Orange Applications for Business

Question ?

Et si on maîtrisait vraiment notre produit

Page 35: Et si on maîtrisait vraiment notre produit

35 Orange Applications for BusinessTour d’horizon des techniques et des outils de test

Merci