1. Et si on maîtrisait vraiment
notre produit
Sébastien FAUVEL
Orange Applications for Business
Juin 2014, Agile Nantes
2. 2 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Sébastien Fauvel
OAB, à Nantes
Architecte agile
Vers une
nouvelle manière
de faire
du logiciel
@sebfauvel
3. 3 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
En route pour le voyage
4. 4 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Etat des lieux
5. 5 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Tester mon application
6. 6 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Gestion des campagnes de tests
7. 7 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Le graal
8. 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 €
9. 9 Orange Applications for Business
Que reste-t-il à la fin ?
Et si on maîtrisait vraiment notre produit
10. 10 Orange Applications for Business
Combien de temps cela prend-il ?
Et si on maîtrisait vraiment notre produit
11. 11 Orange Applications for Business
L’automatisation
Et si on maîtrisait vraiment notre produit
12. 12 Orange Applications for Business
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
13. 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
Et si on maîtrisait vraiment notre produit
14. 14 Orange Applications for Business
Ecriture du test par une personne
Code basique / JUnit
Code plus lisible
Fluent interface
Wiki / Fitness Langage 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 euros
Et un article à 15 euros
Le 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
15. 15 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Automatisation des tests d’IHM
16. 16 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Selenium IDE
17. 17 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Selenium Java
@Test
public 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 page
assertTrue(driver.getPageSource()
.contains("Camembert");
driver.quit();
}
18. 18 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Selenium Java
private final String URL_GOOGLE = "http://www.google.com";
@Test
public 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));
}
19. 19 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Boîte noire
20. 20 Orange Applications for Business
Ouvrir la boîte
Et si on maîtrisait vraiment notre produit
21. 21 Orange Applications for Business
Ouvrir la boîte
Et si on maîtrisait vraiment notre produit
22. 22 Orange Applications for Business
Ouvrir la boîte
Et si on maîtrisait vraiment notre produit
23. 23 Orange Applications for Business
A quoi ressemblent nos briques ?
Et si on maîtrisait vraiment notre produit
24. 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
25. 25 Orange Applications for Business
Grain de sable
Et si on maîtrisait vraiment notre produit
26. 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
27. 27 Orange Applications for Business
Test first et TDD
Et si on maîtrisait vraiment notre produit
28. 28 Orange Applications for Business
Et le code…
Et si on maîtrisait vraiment notre produit
29. 29 Orange Applications for Business
Rapport Sonar
Et si on maîtrisait vraiment notre produit
30. 30 Orange Applications for Business
Industrialisation
Et si on maîtrisait vraiment notre produit
31. 31 Orange Applications for Business
Quelle stratégie ?
Et si on maîtrisait vraiment notre produit
32. 32 Orange Applications for Business
Il y a des hommes derrière tout ça
Et si on maîtrisait vraiment notre produit
33. 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
34. 34 Orange Applications for Business
Question ?
Et si on maîtrisait vraiment notre produit
35. 35 Orange Applications for BusinessTour d’horizon des techniques et des outils de test
Merci