samiadrici-cloud-testing

Testing

Testing 800 400 Samia Drici

Home >> Cloud Computing >> Testing

Lors du développement, les tests fonctionnels sont indispensables pour garantir la qualité d’un produit. Ils permettent de vérifier que le code fonctionne correctement. Ils sont utiles pour soi, mais également pour les autres développeurs qui vont apporter des modifications au code d’un produit. Ils permettent de vérifier que nous ne « cassons rien » lorsque nous touchons au code.

Typologie de tests

La pyramide des tests classe la quantité de chaque type de test qu’il convient d’avoir sur un logiciel. L’objectif étant de garantir la qualité du produit en optimisant les efforts et les coûts. Plus on progresse vers le sommet de la pyramide, plus le type de tests est coûteux à mettre en place, à maintenir, long à exécuter, et sensible au changement.

1. Tests unitaires

Tests unitaires : à la base de la pyramide, les tests unitaires sont les moins coûteux à mettre en place et les plus rapides à exécuter. Ils testent uniquement le retour d’une fonction précise. Ils doivent être réalisés sur tout nouveau code ajouté.

2. Tests d’intégration

Tests d’intégration : permettent de vérifier la manière dont les fonctions interagissent les unes avec les autres. Dans le domaine du web, cela revient à tester les API. Ce sont les tests qu’ils faut mettre en place, après les tests unitaires.

3. Tests d’UI

Tests d’interface graphique (UI) : optionnels car ils ne concernent que les cas où il existe une interface utilisateur. Il s’agit de mécanismes plus lourds à mettre en place et à exécuter. Ils doivent être limités en nombre et venir compléter pour des besoins spécifiques les tests des deux premières catégories (unitaires et d’intégration).

4. Tests end to end

Tests End to End (E2E) : consistent à dérouler un scénario complet de tests à la manière d’une situation réelle de production. Ils garantissent une grande fiabilité du produit livré en simulant le parcours utilisateur complet à travers la fenêtre d’un navigateur. Ils sont toutefois difficiles à concevoir car impliquent souvent plusieurs équipes voire plusieurs métiers.

5. Tests manuels

Tests manuels : chronophages et aléatoires, ils sont peu précis puisque que lorsqu’une erreur est détectée il reste à en analyser l’origine. Il est évident qu’il est préférable d’automatiser l’exécution des tests des catégories précédentes pour éviter la réalisation fastidieuse des tests manuels.

Automatisation des tests

L’automatisation des tests consiste à mettre en place des mécanismes permettant de réaliser les tests unitaires, les tests d’intégration, les tests d’interface utilisateur et les tests de bout en bout de façon systématique et informatisée.

Les tests automatisés sont indispensables pour déployer plus souvent et de façon fiable, du code en production.

Le Test Driven Development

Le Test Driven Development (TDD), ou “développement piloté par les tests”, est une méthode de développement de logiciel qui consiste à écrire les tests unitaires avant d’implémenter le code source.

L’ensemble est réalisé sous la forme de petits cycles itératifs “Red-Green-Refactor”. Le principe repose sur cinq étapes :

1. On écrit le test
2. On vérifie qu’il échoue
3. On écrit le code suffisant pour que le test passe
4. On vérifie que le test passe
5. On optimise le code