1
Tél : +33 (0)1 58 56 10 00
Fax : +33 (0)1 58 56 10 01
www.octo.com© OCTO 2015
50, avenue des Champs-Elysées
75008 Paris ...
2
Présentation
Michael AKBARALY
François PETITIT
OCTO Technology
Consultants chez Canal+,
FranceConnect…
Ref card « Tests ...
3
Quand on commence un projet de zéro…
Usine de Build
Build
Compiler
Déposer
Référentiel
binaires
Référentiel
de tâches
et...
4
Travailler sur du legacy : les livres de référence
5
Du code ‘legacy’, c’est quoi?
6
Eco-système Javascript: vous n’avez pas d’excuse!
7
Types de tests
8
http://bit.ly/pw-legacy
https://github.com/octo-web-front-end-tribe/ka-ching
9
10
Les grandes étapes
Faire tourner l’application
Regarder le code à la main pour voir la tête du code
Code non formaté !
...
11
Objectif
Visualiser certaines métriques sur le code : couverture par les tests,
complexité cyclomatique, nombre de lign...
12
Améliorations – axe qualité du code
Modification Avantages Criticité Complexité
Améliorer la
couverture de tests
côté A...
13
Modification Avantages Criticité Complexité
Mettre en place un
build automatisé Gulp
pour le front
• Possibilité d’util...
14
Modification Avantages Criticité Complexité
Optimiser les
ressources statiques
front-end
• Améliorer les performances
+...
15
Formater le code
Mettre en place un outil de « linting » de code
Mettre en place une couverture de tests minimale
D’abo...
16
Objectif
Rendre le code plus facile à lire
Avoir des diffs utiles
Comment faire
Un outil en ligne de commande : JS-Beau...
17
Linting
Objectif
Détecter des erreurs de code potentielles (ex: inner-declaration,…)
Mettre en place des règles de code...
18
Objectif
Avoir un harnais de tests de non-régressions sur l’API pour pouvoir la
faire évoluer sereinement
Comment
Mettr...
19
Objectifs
Mieux visualiser comment fonctionne l’application au runtime
Supprimer le code non utilisé
Visualiser le code...
20
Objectifs
Poser un harnais de test pour pouvoir ensuite modifier le code front-end
Comment
Avec PhantomCSS
https://gith...
21
Objectif
Détecter le code dupliqué
Supprimer sans risque les duplications
Comment ?
JSInspect pour analyser le code et ...
22
MERCI
Atelier Paris Web
2015
Prochain SlideShare
Chargement dans…5
×

Paris Web 2015 - Atelier desendettement javascript

245 vues

Publié le

Support de l'atelier du 3 octobre 2015 à Paris Web.

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
245
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
5
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Paris Web 2015 - Atelier desendettement javascript

  1. 1. 1 Tél : +33 (0)1 58 56 10 00 Fax : +33 (0)1 58 56 10 01 www.octo.com© OCTO 2015 50, avenue des Champs-Elysées 75008 Paris - FRANCE Atelier Paris Web 2015 Michael AKBARALY @Chehcheucheh makbaraly@octo.com François PETITIT @francoispetitit fpetitit@octo.com
  2. 2. 2 Présentation Michael AKBARALY François PETITIT OCTO Technology Consultants chez Canal+, FranceConnect… Ref card « Tests sur tous les fronts » http://blog.octo.com
  3. 3. 3 Quand on commence un projet de zéro… Usine de Build Build Compiler Déposer Référentiel binaires Référentiel de tâches et anomalies Documentation & Indicateurs Serveur d’intégration continue BuildGestionnaire de sources Build Local Notifications Exécuter les tests Vérifier la qualité du code Documenter Récupérer les dépendances Packager
  4. 4. 4 Travailler sur du legacy : les livres de référence
  5. 5. 5 Du code ‘legacy’, c’est quoi?
  6. 6. 6 Eco-système Javascript: vous n’avez pas d’excuse!
  7. 7. 7 Types de tests
  8. 8. 8 http://bit.ly/pw-legacy https://github.com/octo-web-front-end-tribe/ka-ching
  9. 9. 9
  10. 10. 10 Les grandes étapes Faire tourner l’application Regarder le code à la main pour voir la tête du code Code non formaté ! On n’a pas de test ! On n’a pas de gestion des ressources front-end ! … Faire une analyse statique Détection de code dupliqué Calcul de la complexité cyclomatique … Démarche pour un audit express
  11. 11. 11 Objectif Visualiser certaines métriques sur le code : couverture par les tests, complexité cyclomatique, nombre de lignes de code… Comment Avec Plato.js : https://github.com/es-analysis/plato Npm install –g plato Côté back-end : plato -d report -x node_modules/ index.js Côté front-end : plato -r -d report -x node_modules/ app/scripts Analyse statique de code
  12. 12. 12 Améliorations – axe qualité du code Modification Avantages Criticité Complexité Améliorer la couverture de tests côté API puis front- end • Améliorer la maintenabilité +++ +++ Mettre en place des normes de formatage • Améliorer la lisibilité du code • Permettre d’avoir des diffs Git utiles +++ + Mettre en place un outil de linting • Eviter des erreurs de code détectables par des outils +++ + Supprimer les duplications de code • Eviter des régressions en oubliant de faire évoluer chaque version ++ ++ Supprimer le code mort • Améliorer la lisibilité du code + +
  13. 13. 13 Modification Avantages Criticité Complexité Mettre en place un build automatisé Gulp pour le front • Possibilité d’utiliser des preprocesseurs CSS compilés (compass…) • Live-reload sur le poste de dev • Outillage JS dédié pour optimisation des ressources (plug-ins Grunt : https://github.com/yeoman/grunt-usemin, ) ++ ++ Automatiser les tests • maintenabilité +++ + Améliorations – axe build
  14. 14. 14 Modification Avantages Criticité Complexité Optimiser les ressources statiques front-end • Améliorer les performances ++ ++ Déployer les ressources statiques en-dehors du serveur NodeJS (serveur HTTP, CDN…) • Améliorer les performances • Décharger le serveur d’application + ++ Améliorations – axe run
  15. 15. 15 Formater le code Mettre en place un outil de « linting » de code Mettre en place une couverture de tests minimale D’abord côté API Puis côté front-end Supprimer le code mort Supprimer les duplications de code En vérifiant la non-régression via des tests unitaires Feuille de route
  16. 16. 16 Objectif Rendre le code plus facile à lire Avoir des diffs utiles Comment faire Un outil en ligne de commande : JS-Beautify : https://www.npmjs.com/package/js-beautify Npm install –g js-beautify js-beautify -f ./app/modules/**/* -r Formatage de code JavaScript
  17. 17. 17 Linting Objectif Détecter des erreurs de code potentielles (ex: inner-declaration,…) Mettre en place des règles de code en plus du formatage Comment Mettre en place ESLint http://eslint.org/ Intégrer ESLint au build
  18. 18. 18 Objectif Avoir un harnais de tests de non-régressions sur l’API pour pouvoir la faire évoluer sereinement Comment Mettre en place des tests de non-regression HTTP avec SuperTest (https://github.com/visionmedia/supertest ) Bouchonner les données de base Ajouter ces tests au build (attention : nécessite de déployer l’application) Le code Branche « api-integration-tests » https://github.com/octo-web-front-end-tribe/ka-ching/tree/api-integration- tests Tester l’API en boîte noire
  19. 19. 19 Objectifs Mieux visualiser comment fonctionne l’application au runtime Supprimer le code non utilisé Visualiser le code non testé Comment ? Istanbul pour visualiser la couverture par les tests : https://github.com/gotwarlost/istanbul Istanbul-middleware pour instrumenter à l’exécution https://github.com/gotwarlost/istanbul-middleware Analyse dynamique : détecter le code mort côté back
  20. 20. 20 Objectifs Poser un harnais de test pour pouvoir ensuite modifier le code front-end Comment Avec PhantomCSS https://github.com/Huddle/PhantomCSS Exemple https://github.com/octo-web-front-end-tribe/ka-ching-phantomcss Ajouter de la non régression sur l’IHM en mode boîte noire
  21. 21. 21 Objectif Détecter le code dupliqué Supprimer sans risque les duplications Comment ? JSInspect pour analyser le code et détecter les duplications Mise en place de tests unitaires pour sécuriser les appels aux fonctions dupliqués Refactoring pour supprimer les doublons S’assurer que les tests fonctionnent toujours Supprimer le code dupliqué
  22. 22. 22 MERCI Atelier Paris Web 2015

×