TechTalk#17 – Automated testing from the trenches

 

Techtalk #17

Automated testing from the trenches

 

Introduction

Le code est facile à écrire, mais parfois difficile à maintenir. C’est donc le devoir du développeur d’avoir une bonne gestion de son propre code, sinon cela peut avoir un coût que l’on appellera la dette technique. L’une des manières d’éviter cette dette technique est de réaliser des tests automatisés.

Les tests

Il y a différents types de tests:

  • Les tests unitaires 

Test d’une fonction/ d’une méthode, des tests très rapides qui vont tester une chose seulement.

  • Les tests fonctionnels

Tests qui vont tester un sous-système de l’application. On connaît le workflow de la fonctionnalité que l’on test, mais on ne teste pas chaque élément. Ils sont donc plus lents que les tests unitaires.

  • Les tests d’UI

Tests qui vont tester ce que ferait l’utilisateur.

Un test c’est quoi ?

  • Pré-conditions (état du système au début du test)
  • Actions
  • Constat et vérification du changement de l’état

Qu’est-ce qui fait un bon test ?

  • Automatisé (ne pas avoir à le faire à la main et permet de maintenir le code en cas de modification)
  • Fiable (stabilité du code)
  • Cas d’erreur explicite (savoir immédiatement d’où vient un problème)
  • Facile à lire
  • Rapide
  • Facile à écrire
  • Avoir de bons tests permet d’avoir une bonne base de code et permet de maintenir le code en cas de modification

Comment écrire des tests ?

Il est important de structurer les cas que l’on souhaite traiter. Pour cela, il est utile de spécifier les phases suivantes.

  • Given… (prérequis)
  • When I… (actions)
  • Then… (état final à vérifier)

Par exemplepour le cas de création d’un compte avec un mail et un password.

  • Given any email + password (qui n’existe pas sur le serveur)
  • When I create an account (POST de l’email/password en param)
  • Then I get a success (HTTP 201)

 

Il peut aussi être testé le cas où le mot de passe ou l’email n’est pas valide, on s’attend donc à avoir une réponse de type 400.

Les tests peuvent s’appliquer à beaucoup de fonctionnalités :

  • Login
  • Achat
  • Vérifier des réponses de requêtes Rest
  • Des tests unitaires

En conclusion, les tests sont importants, ils permettent de gérer la dette technique. Cela clarifie une spécification et d’être prévenu de changement conflictuel et de fiabiliser les interactions entre l’API et l’application.

TechTalk animé par Olivier Tabone | Co-fondateur Directeur Technique chez Ripple Motion