Blog

Notions de base sur les tests de logiciels : types, avantages et quand les automatiser

Icône flèche bleue vers la gauche
Retour au blog
Notions de base sur les tests de logiciels : types, avantages et quand les automatiser

Notions de base sur les tests de logiciels : types, avantages et quand les automatiser

Nicolas Jacobeus
February 3, 2020

 

tests-logiciels-types-avantages-automatiser

Les tests représentent un investissement. Comme pour un investissement dans la sécurité d’un logiciel, l’intérêt d’investir dans des tests n’est pas toujours évident car le retour sur investissement n’est pas immédiat. Il n’y a pas de résultats tangibles, pas de nouvelle fonctionnalité pour impressionner les utilisateurs.

Cependant, l’intégration de tests dans le développement de vos produits présente plusieurs avantages qui peuvent être rentables. La clé, c’est l’équilibre.

Avantages de l’intégration de tests automatisés dans votre logiciel

Les tests sont automatisés par l’écriture de code que les développeurs peuvent exécuter, généralement avant le déploiement d’une mise à jour logicielle. Lorsqu’un test échoue, il avertit les développeurs d’un dysfonctionnement dans le logiciel. L’intégration de tests automatisés dans votre logiciel présente plusieurs avantages :

     
  • Cela peut permettre d’obtenir des résultats plus précis. Les tests manuels nécessitent des répétitions et sont donc sujets aux erreurs humaines. Configurer manuellement les conditions de test à exécuter peut s’avérer difficile car le système doit fonctionner dans un état donné pour refléter l’expérience utilisateur.  
  •  
  • De bons tests garantissent un produit de meilleure qualité. Un test doit identifier les erreurs avant qu’elles ne parviennent à la version finale utilisée par le client.  
  •  
  • Les tests améliorent la continuité entre les développeurs travaillant sur le code, réduisant ainsi la dépendance vis-à-vis des personnes. Le test est un type de documentation qui indique immédiatement à l’équipe lorsqu’elle a un problème de synchronisation.  
  •  
  • Les tests automatisés favorisent une approche plus organisée. Ils obligent les développeurs à répondre à certaines questions beaucoup plus tôt, ce qui leur permet d’éviter de perdre du temps à travailler sur la « mauvaise » voie.  
  •  
  • Les changements futurs sont simplifiés. Plus un produit grandit, plus il est difficile de modifier ou d’ajouter des fonctionnalités car les interdépendances se multiplient. Les tests automatisés mettent en évidence toutes ces interdépendances et vous obligent à réfléchir à la façon d’intégrer une nouvelle fonctionnalité. Sans tests, ces liens restent souvent cachés, ce qui augmente le risque qu’une nouvelle fonctionnalité détruise une interdépendance existante.  

Pour comprendre ce que les tests peuvent apporter à votre logiciel, commençons par examiner les principaux types de tests et leur rôle.

Trois principaux types de tests dans les logiciels

Il n’existe aucun moyen d’automatiser tous les tests. Après tout, quelqu’un doit encore écrire le code pour créer le programme de test. Cependant, les types de tests les plus couramment utilisés dans le développement de logiciels sont les suivants :

     
  1. Tests unitaires    
    Imaginez que vous souhaitez tester un code qui calcule des intérêts sur un capital. Vous saisissez des montants différents manuellement et vérifiez que le résultat est correct. Vous pouvez aussi écrire un test automatisé qui exécute des exemples pour vérifier que le code fonctionne correctement. Pensez au nombre d’unités à tester et à la fréquence. Écrire le code d’un test et l’exécuter une fois, ou mille fois, prendra exactement le même temps.  
  2.  
  3. Tests de validation, de fonctionnalité ou de système    
    Imaginez que le programme de calcul des intérêts soit utilisé via un formulaire sur un site web où vous entrez un montant et la réponse apparaît. Dans ce cas, vous testez le fonctionnement de l’algorithme ainsi que le formulaire. Vous vérifiez que les différents modules du logiciel fonctionnent ensemble. Le code de test simulera les choix d’un humain. Vous pouvez l’automatiser, mais il est difficile de tenir compte de chaque combinaison de variables.  
  4.  
  5. Tests de validation par l’utilisateur (manuels)    
    Les tests de validation par l’utilisateur se déroulent généralement dans un environnement de test ou de pré-production le plus proche possible de la version finale « opérationnelle ». Dans ce type de tests, l’utilisateur interagit avec le produit comme s’il était un client. Les chefs de produit ou les personnes chargées de l’assurance qualité peuvent agir en tant qu’utilisateurs finaux. Bien que les tests automatisés facilitent cette étape, certains aspects sont mieux testés par un humain : problèmes visuels, format d’image incorrect, problèmes d’alignement, erreurs de traduction, etc. Tous ces problèmes sont difficiles à repérer pour un test automatisé.  

De nombreux logiciels que vous utilisez quotidiennement utilisent des tests automatisés et le déploiement continu pour mettre à jour leurs fonctionnalités petit à petit : Facebook, Gmail, Amazon, etc.

Lorsqu’une start-up développe un logiciel, il n’est pas toujours possible d’automatiser tous les tests. Voyons un peu plus en détail comment décider ce qu’il faut automatiser ci-dessous. Commençons par examiner les résultats que nous attendons des tests automatisés.

Tests automatisés et détection de bugs dans votre logiciel

Pour illustrer les résultats attendus des tests automatisés, prenons un scénario typique. Supposons que vous développez une nouvelle application et que vous vous attendez à une dizaine de bugs.

Si vous n’écrivez pas de test automatisé pour la nouvelle application, les bugs apparaîtront au pire moment, c’est-à-dire lorsque les clients utilisent votre produit. Ces derniers perdront confiance dans votre application. Chaque bug prendra 10 heures à corriger, ce qui vous coûtera de l’argent.

Si vous décidez d’automatiser les tests pour votre application, vous devrez écrire 50 tests. Chaque test peut prendre 1 heure à écrire. Neuf de ces tests vous aideront à identifier 9 bugs sur les 10. Chaque bug sera corrigé en une heure, avant même que l’utilisateur final ne s’en rende compte.

Le dixième bug sera toujours là. Pour le repérer, vous auriez dû écrire 500 tests, une dépense exagérée pour votre projet.

Il n’y a aucun moyen de prédire lequel des 50 tests vous aidera à trouver le bug. Si vous les écrivez, vous ne remarquerez pas les 9 bugs qui ne se sont pas produits, seulement celui qui s’est produit.

Pourquoi tous les logiciels n’automatisent-ils pas les tests ?

Lorsqu’une start-up doit choisir où investir, elle doit prendre en compte le coût de renoncement. Le développement d’une nouvelle fonctionnalité peut l’emporter sur l’automatisation des tests. Après tout, les tests n’apportent aucune valeur ajoutée visible, et écrire du code pour les tests prend du temps.

De plus, les tests automatisés impliquent qu’une fonctionnalité est bien pensée et stable. Certaines caractéristiques d’un produit récent ont une vocation d’exploration et seront sûrement modifiées. L’écriture de tests automatisés pour une fonctionnalité rendra la modification encore plus difficile le moment venu.

D’autres obstacles peuvent empêcher certains développeurs de logiciels d’utiliser des tests automatisés. La mise en place de tests automatisés nécessite de l’expérience, de la discipline et des processus organisés. Les tests doivent être mis à jour au fur et à mesure que le produit évolue. L’environnement de test doit être aussi proche que possible de l’environnement de l’utilisateur final. Parfois, il y a des réglementations qui empêchent les tests, par exemple en cas de traitement d’informations médicales.

Notre méthode : une approche équilibrée des tests

L’automatisation complète des tests de logiciels peut s’avérer coûteuse et il faudra toujours faire des compromis quant à la manière de tester le code. La première étape consiste à identifier les tests à effectuer manuellement et ceux qu’il est logique d’automatiser.

Cela peut dépendre du cycle de vie de votre produit. Par exemple, nous automatisons les tests pour les éléments les plus importants lors de la création d’un MVP (produit minimum viable).

Pensez à votre page d’inscription ou de paiement. Si les utilisateurs ne peuvent pas s’inscrire ou payer, vos efforts marketing seront gaspillés et vous perdrez des clients potentiels. Il est logique d’automatiser les tests pour ces éléments.

Chez Belighted, nous intégrons des tests pour les éléments critiques dans tous les projets, les nôtres comme ceux de nos clients. Nous sommes convaincus qu’il s’agit d’une bonne pratique qui garantit la fiabilité de tout ce que nous créons.

De plus, nos tests servent de documentation technique. Nous travaillons souvent en tant que première équipe de développement d’une start-tup. Nous voulons donc être certains que notre travail puisse être transféré de façon transparente au fur et à mesure que l’entreprise grandit. Ainsi, lorsque de nouveaux développeurs intègrent l’équipe, ils deviennent très rapidement productifs.

La décision de tester ou non un logiciel dépend généralement de la culture de l’entreprise. Les développeurs adorent disposer de tests. Et lorsque les tests prennent une place équilibrée par rapport à d’autres priorités de développement, ils peuvent améliorer la qualité de votre logiciel, vous faire gagner du temps, assurer la continuité et aider à garder votre équipe en phase.

Pour en savoir plus sur la façon dont nous abordons le développement de produits, découvrez la méthode Belighted sur notre blog.

Prêt à créer votre produit logiciel ? Contactez-nous !