37
Le javascript Un ami du php souvent délaissé lors des tests PHP’tit Déj «Intégration Continue» 16.05.2013 - Luxembourg mercredi 22 mai 13

Javascript in a continuous integration environment

Embed Size (px)

Citation preview

Page 1: Javascript in a continuous integration environment

Le javascriptUn ami du php souvent délaissé lors des tests

PHP’tit Déj«Intégration Continue»

16.05.2013 - Luxembourg

mercredi 22 mai 13

Page 2: Javascript in a continuous integration environment

Présentation

Frédéric Dewinne= Consultant @ VA Consulting= Architecte logiciel, formateur, coach= Expert PHP / JS depuis 2007

mercredi 22 mai 13

Page 3: Javascript in a continuous integration environment

Le javascript

mercredi 22 mai 13

Page 4: Javascript in a continuous integration environment

Le javascript

≠ langage de présentation

mercredi 22 mai 13

Page 5: Javascript in a continuous integration environment

Le javascript

≠ langage de présentation

= langage de programmation

mercredi 22 mai 13

Page 6: Javascript in a continuous integration environment

Le javascript

≠ langage de présentation

= langage de programmation

= langage événementiel

mercredi 22 mai 13

Page 7: Javascript in a continuous integration environment

Le javascript

≠ langage de présentation

= langage de programmation

= langage événementiel

= s’exécute sur un client, un serveur ou isolé (applications Windows 8)

mercredi 22 mai 13

Page 8: Javascript in a continuous integration environment

Le javascript

≠ langage de présentation

= langage de programmation

= langage événementiel

= s’exécute sur un client, un serveur ou isolé (applications Windows 8)

mercredi 22 mai 13

Page 9: Javascript in a continuous integration environment

Problématique dans le cadre d’un site web

mercredi 22 mai 13

Page 10: Javascript in a continuous integration environment

Problématique dans le cadre d’un site web

= le client utilisé(OS, type et version de navigateur, ...)

mercredi 22 mai 13

Page 11: Javascript in a continuous integration environment

Problématique dans le cadre d’un site web

= le client utilisé(OS, type et version de navigateur, ...)

= la testabilité du code

mercredi 22 mai 13

Page 12: Javascript in a continuous integration environment

Problématique dans le cadre d’un site web

= le client utilisé(OS, type et version de navigateur, ...)

= la testabilité du code

= la détection des erreurs

mercredi 22 mai 13

Page 13: Javascript in a continuous integration environment

Comment procéder dès lors ?

mercredi 22 mai 13

Page 14: Javascript in a continuous integration environment

Comment procéder dès lors ?

= écrire du code réutilisableplugins, widgets, prototypes, ...

mercredi 22 mai 13

Page 15: Javascript in a continuous integration environment

Comment procéder dès lors ?

= écrire du code réutilisableplugins, widgets, prototypes, ...

= et testableTest Driven Development (TDD)

mercredi 22 mai 13

Page 16: Javascript in a continuous integration environment

Comment procéder dès lors ?

= écrire du code réutilisableplugins, widgets, prototypes, ...

= et testableTest Driven Development (TDD)

= tester le code sur différents clients

mercredi 22 mai 13

Page 17: Javascript in a continuous integration environment

JsTestDriver

mercredi 22 mai 13

Page 18: Javascript in a continuous integration environment

JsTestDriver= initié par Google

mercredi 22 mai 13

Page 19: Javascript in a continuous integration environment

JsTestDriver= initié par Google

= framework de test

mercredi 22 mai 13

Page 20: Javascript in a continuous integration environment

JsTestDriver= initié par Google

= framework de test

= support d’autres frameworks de test

mercredi 22 mai 13

Page 21: Javascript in a continuous integration environment

JsTestDriver= initié par Google

= framework de test

= support d’autres frameworks de test

= serveur http pour une exécution client / serveur

mercredi 22 mai 13

Page 22: Javascript in a continuous integration environment

JsTestDriver= initié par Google

= framework de test

= support d’autres frameworks de test

= serveur http pour une exécution client / serveur

= proxy web pour les dépendances

mercredi 22 mai 13

Page 23: Javascript in a continuous integration environment

JsTestDriver= initié par Google

= framework de test

= support d’autres frameworks de test

= serveur http pour une exécution client / serveur

= proxy web pour les dépendances

= exécutable en ligne de commande

mercredi 22 mai 13

Page 24: Javascript in a continuous integration environment

JsTestDriver= initié par Google

= framework de test

= support d’autres frameworks de test

= serveur http pour une exécution client / serveur

= proxy web pour les dépendances

= exécutable en ligne de commande

= plugins pour IDE

mercredi 22 mai 13

Page 25: Javascript in a continuous integration environment

JsTestDriver= initié par Google

= framework de test

= support d’autres frameworks de test

= serveur http pour une exécution client / serveur

= proxy web pour les dépendances

= exécutable en ligne de commande

= plugins pour IDE

= plugin de code coverage

mercredi 22 mai 13

Page 26: Javascript in a continuous integration environment

ExempleTestCase('form-collection-test', {

"test add fieldset on add button click": function () {

/*:DOC collection = <div><fieldset><input name="toto[0]" /></fieldset></div>*/

/*:DOC addButton = <button></button>*/

$(this.collection).formCollection({

addButtonSelector: this.addButton,

template: '<fieldset><input name="toto[__index__]" /></fieldset>',

childrenSelector: 'fieldset'

});

$(this.addButton).click();

assertEquals(2, $(this.collection).find('fieldset').length);

}

});

mercredi 22 mai 13

Page 27: Javascript in a continuous integration environment

mercredi 22 mai 13

Page 28: Javascript in a continuous integration environment

Et ensuite ?

mercredi 22 mai 13

Page 29: Javascript in a continuous integration environment

Et ensuite ?

= exécuter les tests de manière automatique

mercredi 22 mai 13

Page 30: Javascript in a continuous integration environment

Jenkins

mercredi 22 mai 13

Page 31: Javascript in a continuous integration environment

Jenkins

= démarrage du serveur

mercredi 22 mai 13

Page 32: Javascript in a continuous integration environment

Jenkins

= démarrage du serveur

= gestion des browsers

mercredi 22 mai 13

Page 33: Javascript in a continuous integration environment

Jenkins

= démarrage du serveur

= gestion des browsers

= aggrégation des résultats de tests

mercredi 22 mai 13

Page 34: Javascript in a continuous integration environment

Jenkins

= démarrage du serveur

= gestion des browsers

= aggrégation des résultats de tests

= analyse du code coverage

mercredi 22 mai 13

Page 35: Javascript in a continuous integration environment

Résultats

mercredi 22 mai 13

Page 36: Javascript in a continuous integration environment

Des questions ?

mercredi 22 mai 13

Page 37: Javascript in a continuous integration environment

Merci

Frédéric Dewinnetwitter => @dwebconsulting

email => [email protected]

mercredi 22 mai 13