et si on maîtrisait vraiment notre produit
TRANSCRIPT
Et si on maîtrisait vraiment notre produit
Sébastien FAUVEL
Orange Applications for Business
Juin 2014, Agile Nantes
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
3 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
En route pour le voyage
4 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Etat des lieux
5 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Tester mon application
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
7 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Le graal
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 Orange Applications for Business
Que reste-t-il à la fin ?
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
11 Orange Applications for Business
Langage « humain »Interagir avec
le système
L’automatisation
Mot
eur
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
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
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
15 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Automatisation des tests d’IHM
16 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Selenium IDE
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(); }
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));}
19 Orange Applications for BusinessEt si on maîtrisait vraiment notre produit
Boîte noire
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
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
22 Orange Applications for Business
BouchonBDSQL
DAO
Ouvrir la boîte
Et si on maîtrisait vraiment notre produit
Java
TestSe
rveu
r
23 Orange Applications for Business
A quoi ressemblent nos briques ?
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
25 Orange Applications for Business
Grain de sable
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
27 Orange Applications for Business
Test first et TDD
Et si on maîtrisait vraiment notre produit
28 Orange Applications for Business
Et le code…
Et si on maîtrisait vraiment notre produit
29 Orange Applications for Business
Rapport Sonar
Et si on maîtrisait vraiment notre produit
30 Orange Applications for Business
Industrialisation
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
32 Orange Applications for Business
Il y a des hommes derrière tout ça
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
34 Orange Applications for Business
Question ?
Et si on maîtrisait vraiment notre produit
35 Orange Applications for BusinessTour d’horizon des techniques et des outils de test
Merci