ecrire un code testable

37
Ecrire un Code TESTABLE Mohamed Cherif BOUCHELAGHEM Twitter: @cherif_b

Upload: cherif-bouchelaghem

Post on 03-Jul-2015

495 views

Category:

Engineering


4 download

DESCRIPTION

Comment écrire un code testable et éviter les erreurs de régression et assurer une application maintenable a long terme. Une conférence qui été dans l'event Call4Tech a Constantine (Algérie) le 09/05/2014

TRANSCRIPT

Page 1: Ecrire un code Testable

Ecrire un Code TESTABLEMohamed Cherif BOUCHELAGHEM

Twitter: @cherif_b

Page 2: Ecrire un code Testable

Problème

Code difficile à changer

Bugs difficile à détecter

Page 3: Ecrire un code Testable

Solution

ingle responsability principle

pen/Closed Closed principle

iskov substitution principle

nterface Segregation principle

ependency injection

Page 4: Ecrire un code Testable

Robert C. Martin (Uncle BOB)

L’auteur du livre ‘Clean code’ (Coder proprement)

Page 5: Ecrire un code Testable

Single responsabilityprinciple

Page 6: Ecrire un code Testable

SOLID « S » Principe de Responsabilité unique

Une classe n’a qu’une, et une seule, raison de changer

Page 7: Ecrire un code Testable

SOLID « S » Principe de Responsabilité unique

Page 8: Ecrire un code Testable

SOLID « S » Principe de Responsabilité unique

• La solution est de diviser la classe en deux , une pour communication avec le web service et la deuxième pour passer les donner à notre objet

• Le web service sera ‘Mocké’ dans le test facilement

• Des méthodes plus petites, moins de dépendances entre les méthodes et moins de régression

Page 9: Ecrire un code Testable

OPEN/CLOSED PRINCIPLE

Page 10: Ecrire un code Testable

Le code doit être ouvert à l’extension

mais fermé à la modification.

SOLID « O »

OPEN/CLOSED PRINCIPLE

Page 11: Ecrire un code Testable

SOLID « O » OPEN/CLOSED PRINCIPLE

Problème si on veux rajouter un autre réseau social

switch/case n’est pas une solution (anti-pattern)

Page 12: Ecrire un code Testable

SOLID « O » OPEN/CLOSED PRINCIPLE

Page 13: Ecrire un code Testable

SOLID « O » OPEN/CLOSED PRINCIPLE

Augmente la testabilité du codeChaque service peut être testé séparément

Page 14: Ecrire un code Testable

LISKOV Substitution Principle

Page 15: Ecrire un code Testable

SOLID « L »

LISKOV Substitution Principle

Si “S” est un sous-type de “T”, alors tout objet de type “T” peut être remplacé par un objet de type “S” sans altérer les propriétés désirables du

programme concerné.

Page 16: Ecrire un code Testable

Violation du principe Carre n’est pas un

rectangle

SOLID « L » LISKOV Substitution Principle

Page 17: Ecrire un code Testable

Implémentation du principe avec le design pattern Adaptateur

SOLID « L » LISKOV Substitution Principle

Page 18: Ecrire un code Testable

Interface SegregationPrinciple

Page 19: Ecrire un code Testable

SOLID « I » Interface Segregation Principle

Quand on envoie un SMS est ce qu’on a besoin d’email??

Page 20: Ecrire un code Testable

SOLID « I » Interface Segregation Principle

SRP respecté, moins de tests par classe, moins de dépendance entre méthodes

Page 21: Ecrire un code Testable

Dependency Injection principle

Page 22: Ecrire un code Testable
Page 23: Ecrire un code Testable

SOLID « D » Dependency Injection Principle

Injection de dépendance

Page 24: Ecrire un code Testable

• SRP pour les acteurs et l’architecture de haut

niveau

• OCP pour la conception et l’extension des

fonctionnalités

• LSP pour l’héritage et sous typage

• ISP pour la communication entre la logique métier

et les clients (MVC, applications tierces…etc)

• DIC pour le découplage,

En résumé

Page 25: Ecrire un code Testable

L’application est un ensemble de briques découplées (Composants)

Page 26: Ecrire un code Testable

Si SOLID sont bien appliqués

Page 27: Ecrire un code Testable

On va constater que

Page 28: Ecrire un code Testable

Le Web, c’est juste un système de livraison (PIPE)

Page 29: Ecrire un code Testable

La base de données c’est qu’un détail

Page 30: Ecrire un code Testable

Le framework n’est pas le centre du monde de notre application

Page 31: Ecrire un code Testable

Autrement dit

Page 32: Ecrire un code Testable

Autrement dit

Le framework nous aide juste dans ces aspects de l’application

Page 33: Ecrire un code Testable

Logique métier est le cœur de notre application

Page 34: Ecrire un code Testable

Tests Unitaire (Unit tests)

Page 35: Ecrire un code Testable

Choisissez votre aventure

Page 36: Ecrire un code Testable

Questions

Page 37: Ecrire un code Testable

Références