SMOKE TEST

Chez Younited Credit, nous pratiquons l’intégration continue et le déploiement continu. De ce fait, nous déployons très souvent nos applications. Nous n’aborderons pas dans ce billet les bénéfices de ces pratiques, en revanche, nous abordons un type de test qui supporte ces pratiques.

Pourquoi faire des smoke tests ?

La question que nous devons nous poser quand une application est déployée dans un environnement, qu’il soit d’intégration continue, de production ou autre est :

Roulements de tambour ….

Peut-on l’utiliser ou encore est-elle testable ?

Ainsi on pourra éviter de commencer un run de test inutile ayant pour conséquences :

  • L’effet « mauvaise surprise »
  • auprès des testeurs ?
  • D’exécuter des tests automatiques sur une application qui n’est pas prête à être testée, donc d’économiser du cpu et des analyses inutiles

Origines de la pratique

Nous nous sommes inspirés de nos prédécesseurs qui œuvraient dans l’industrie électronique.

Une image valant mieux qu’un beau discours, voici un exemple de résultat de smoke test KO :

circuit intégré — smoke test — contenu modifié de wikimedia

Dans ce cas, le testeur ne démarre pas la séance de test car le circuit est inutilisable une fois sous tension. L’idée d’un smoke test est donc d’attraper des gros poissons avec des gros filets.

Donc, notre smoke test doit être robuste et ainsi ne pas vérifier un comportement précis au sens d’une règle de gestion, mais plutôt un comportement général.

Mise en application de la pratique dans le contexte Younited Credit

Voyons comment appliquer cette pratique à un site web purement éditorial.

titre du test : websiteHomePageShouldHaveATitle

Il conviendrait de faire un test pour vérifier que la home page comporte un Titlepour confirmer que l’environnement est prêt.

Voyons comment appliquer cette pratique à l’API d’un CRM.

titre du test : customerShouldHaveAName

Il conviendrait de faire un test pour vérifier qu’un objet customer comporte un attribut Name .

Mise en oeuvre des Smoke Tests de notre site edito

Chez Younited Credit, nous utilisons Azure pour construire, déployer, héberger nos produits / softs.

Voici deux rapports de déploiement effectués à l’aide de Azure Release Management.

Smoke test OK

Voici un exemple de déploiement de notre site edito avec son étape de smoke test en succès donc un run de test fonctionnel exécuté. On trouve d’ailleurs une anomalie.

Smoke test integré dans le Pipe line de release

Smoke test KO

Cette fois l’application déployée n’est pas testable : les étapes suivantes ne seront pas exécutées. On est informé du problème.

Smoke test integré dans le Pipe line de release avec le smoke test KO

Configuration des étapes suivant le smoke test avec Release Management

Après la tache de smoke test, nous laissons celle de publication de résultat du smoke test s’exécuter, même si le test est en erreur. En revanche, l’étape de test fonctionnel ne s’exécute que quand les précédentes tâches sont en succès.

Configuration smoke test avec azure release management

Bon test !