L'assurance qualité (AQ) est essentielle dans le développement logiciel, agissant comme le gardien pour garantir que les produits finaux répondent aux normes souhaitées et sont exempts d'erreurs. Yulia Onischenko, la responsable AQ chez JetBase, a expliqué comment la mise en œuvre de l'automatisation dans les processus d'AQ peut réduire considérablement les coûts, jusqu'à 75 %, et améliorer la qualité et l'efficacité de la livraison logicielle.
Qu'est-ce que l'AQ ?
L'assurance qualité (AQ) dans le développement logiciel est un processus systématique qui garantit la qualité et la fiabilité des produits logiciels. Elle implique un ensemble d'activités visant à surveiller le processus de développement logiciel et à prévenir, détecter et corriger les défauts. L'objectif principal de l'AQ est d'améliorer les processus de développement et de test afin que les bugs n'apparaissent pas pendant le développement.
Tests manuels et automatisés — Différences
Décider de l'approche
Yulia souligne qu'une combinaison équilibrée des deux, en fonction des besoins du projet, est souvent l'approche optimale. Ces deux types de tests sont importants et ne peuvent exister de manière isolée.
Échelle et réutilisabilité
Les tests automatisés sont mieux adaptés aux grands projets où les tests sont répétitifs et doivent être exécutés plusieurs fois, tandis que les tests manuels sont efficaces pour les petites échelles et les tests exploratoires.
Précision et fiabilité
Les tests automatisés garantissent une plus grande précision et fiabilité des résultats grâce à la réduction des erreurs humaines, tandis que les tests manuels, bien qu'intuitifs, sont sujets aux inexactitudes.
Optimisation des coûts et des ressources
Bien que les tests automatisés puissent avoir des coûts initiaux plus élevés, ils optimisent les ressources et s'avèrent rentables à long terme. Il est facile pour une équipe de s'adapter aux tests d'automatisation, car le nombre de cas de test manuels augmente et prend beaucoup de temps.
Évaluation de l'expérience utilisateur
Les tests manuels sont indispensables pour évaluer l'expérience utilisateur et les aspects liés à l'interface, où l'intuition humaine est cruciale, tandis que les tests automatisés peuvent échouer à évaluer les expériences utilisateur subjectives.
Exemple
Passons en revue le scénario de test automatisé qui simule le parcours d'un utilisateur à travers un formulaire de contact sur un site web JetBase. Voyez à quelle vitesse l'AQ peut tester n'importe quelle fonctionnalité dans le développement logiciel.
Scénario positif
Le premier scénario (« Vérifier le flux utilisateur positif pour le formulaire de contact ») décrit un processus de soumission réussi, où tous les champs requis sont remplis correctement, y compris un nom, un e-mail, un site web, une sélection de budget, une catégorie de service, un message détaillé et un accord de politique de confidentialité. Ce scénario se termine par la confirmation qu'un message de succès est reçu, ce qui implique que le formulaire gère correctement les données et que le feedback de l'utilisateur est affiché de manière appropriée.
Scénarios négatifs
Les scénarios suivants se concentrent sur les tests négatifs, où un ou plusieurs champs sont remplis incorrectement ou pas du tout, afin de garantir que la validation du formulaire fonctionne comme prévu. Cela inclut des cas tels que la soumission du formulaire sans remplir tous les champs obligatoires, la saisie d'une adresse e-mail invalide, l'omission de la sélection du budget, l'oubli de choisir une catégorie de service et le fait de laisser le champ des détails vide. Chaque scénario est suivi d'une assertion qui vérifie le message d'erreur correct, garantissant que le formulaire fournit le feedback nécessaire à l'utilisateur, l'invitant à corriger sa saisie.
Le script ci-dessous est un exemple de la façon dont les tests automatisés sont structurés et exécutés à l'aide du framework Cypress, un outil puissant que nous utilisons pour les tests d'applications web.
Feature: Contact form
Description: This test case is checking positive and negative scenarios for the contact form
Background:
Given I go to the "Contact" page
Scenario: Check positive user flow for the contact form
When I type "Elon Musk" into name
And I type "elon.musk@tesla.com" into email
And I type "tesla.com" into website
And I choose "$5000 - $10000" as budget
And I choose "E-commerce" as service
And I type "AI autopilot car with great interface" into details
And I check the privacy
And I click the [Send message] button
Then I receive success message
Scenario: Check negative scenario for the required fields of the contact form
When I type "Elon Musk" into name
And I click the [Send message] button
Then I receive error message "Please fill a valid email!"
When I type "elon.musk@teslacom" into email
And I click the [Send message] button
Then I receive error message "Please fill a valid email!"
When I type "elon.musk@tesla.com" into email
And I type "tesla.com" into website
And I click the [Send message] button
Then I receive error message "Budget range is required!"
When I choose "$5000 - $10000" as budget
And I click the [Send message] button
Then I receive error message "Category range is required!"
When I choose "E-commerce" as service
And I click the [Send message] button
Then I receive error message "Please fill the details field!"
When I type "AI autopilot car with great interface" into details
And I click the [Send message] button
Then I receive error message "Check the terms and conditions!"Le script ci-dessus présente un cas de test détaillé basé sur la syntaxe Gherkin pour une fonctionnalité de formulaire de contact sur un site web, conçu pour valider les scénarios positifs et négatifs. Le format structuré du langage Gherkin permet au script d'être à la fois technique et convivial, rendant les comportements souhaités de l'application web clairs et testables.
De plus, nous adhérons à la bonne pratique de rédiger des tests de manière indépendante. Cette approche présente plusieurs avantages.
Isolation et modularité
Les tests indépendants peuvent être développés sans dépendre des détails d'implémentation du code. Cette isolation garantit que les tests se concentrent sur des fonctionnalités ou des unités spécifiques sans être affectés par des modifications dans d'autres parties de la base de code. Cela permet un développement et des tests modulaires.
Maintenance facilitée
Lorsque les tests sont séparés du code, les modifications ou les mises à jour de la base de code sont moins susceptibles de causer des problèmes dans les tests. Cette indépendance garantit que les changements dans la structure ou l'implémentation du code ne rendront pas automatiquement les tests invalides ou obsolètes.
Clarté et lisibilité
Les tests indépendants ont tendance à être plus clairs et plus lisibles car ils se concentrent uniquement sur la vérification de fonctionnalités ou d'unités spécifiques. Cette clarté permet aux développeurs de comprendre plus facilement le but de chaque cas de test.
Collaboration améliorée
Les tests indépendants peuvent être écrits simultanément par plusieurs membres de l'équipe, ce qui permet un développement et des tests parallèles. Cela contribue à des cycles de développement plus rapides et facilite la collaboration entre les membres de l'équipe.
Meilleur débogage
Lorsque les tests sont indépendants, il est plus facile de localiser la source des défaillances ou des bugs. Les développeurs peuvent identifier les problèmes plus rapidement car ils connaissent la fonctionnalité ou l'unité spécifique testée.
Encourage une meilleure conception
Écrire des tests de manière indépendante encourage souvent les développeurs à créer du code plus modulaire, faiblement couplé et facilement testable dès le départ. Cela peut conduire à un logiciel globalement mieux conçu.
Prend en charge l'intégration/déploiement continu (CI/CD)
Les tests indépendants sont bien adaptés aux processus de test automatisés dans les pipelines CI/CD. Ils peuvent être exécutés en parallèle, permettant des cycles de feedback plus rapides et une intégration plus rapide des modifications dans la base de code principale.
Raisons de commencer les tests automatisés
Qualité supérieure
Yulia observe que l'automatisation minimise les erreurs humaines, offrant une qualité de produit et une fiabilité supérieures.
Efficacité en temps et en coûts
Les tests automatisés s'exécutent sans supervision, réduisant considérablement le temps de test et les coûts en ressources humaines, confirmant le potentiel d'une réduction de 75 % des coûts d'AQ.
Productivité améliorée
Les processus de test accélérés via l'automatisation permettent des cycles de développement plus rapides et libèrent les spécialistes de l'AQ pour qu'ils se concentrent sur des tâches plus complexes et critiques.
Quand devriez-vous passer à l'automatisation ?
Passer à l'automatisation est une décision cruciale dans le cycle de vie du développement logiciel. Yulia, la responsable AQ chez JetBase, partage des informations précieuses sur la façon d'identifier le bon moment pour intégrer l'automatisation dans le processus de test.
Augmentation de l'échelle et de la complexité
Les tests automatisés sont essentiels lorsque l'étendue et la complexité des projets augmentent. C'est particulièrement vrai pour les projets de grande envergure où les limites des tests manuels deviennent flagrantes.
Lorsque vous constatez que l'échelle et la complexité d'un projet dépassent la capacité des tests manuels, il est grand temps d'introduire l'automatisation. L'automatisation peut gérer méticuleusement les détails complexes et la vaste portée des grands projets, garantissant une couverture et une fiabilité complètes.
Exigences stables
Yulia suggère la transition vers l'automatisation lorsque les exigences du projet sont finalisées et stabilisées.
Les tests automatisés excellent dans les environnements où les exigences sont consolidées. Ils réduisent le risque d'écarts et garantissent une efficacité et une fiabilité durables dans le processus de test. Il est impératif d'avoir un ensemble d'exigences clair et stable avant d'intégrer l'automatisation afin d'éviter les complications et les redondances inutiles.
Exigences de tests répétitifs
L'automatisation est la solution de choix lorsque le projet nécessite des tests récurrents. Elle assure non seulement la précision, mais conserve également un temps et des ressources inestimables à long terme.
Dans les scénarios où les tests doivent être exécutés de manière répétée, l'automatisation est une bouée de sauvetage. Elle élimine la monotonie de la répétition manuelle et réduit considérablement la marge d'erreur, améliorant l'efficacité globale du processus de test.
Les tests de performance sont cruciaux
Lorsqu'il s'agit d'évaluer les performances logicielles dans des conditions variées et étendues, les tests automatisés sont inégalés. Ils fournissent des informations pratiquement inaccessibles par le biais de tests manuels.
Les tests automatisés sont indispensables lorsque l'évaluation précise des performances est cruciale. Ils peuvent simuler une multitude de conditions et d'interactions utilisateur pour évaluer le comportement du logiciel, fournissant des informations détaillées et fiables.
Nos cas
Explorons trois études de cas distinctes, chacune démontrant l'impact transformateur de la mise en œuvre de tests automatisés dans divers environnements de projet.
Cas n°1
Projet
Une plateforme éducative spécialisée dans la sécurité internet propose des scénarios d'apprentissage pratiques à travers différents niveaux d'expertise en cybersécurité.
Résultats
- Intégration des tests automatisés dans le cycle de développement ;
- Les tests de régression prennent jusqu'à 2 heures ;
- Couverture des tests portée à 90 % ;
- Réduction de 70 % des bugs en production.
Objectifs futurs
- Maintenir une couverture de test proche de 100 % ;
- Enrichir les scénarios de test basés sur les interactions utilisateur ;
- Examen et maintenance réguliers ;
- Refactoring et nettoyage ;
- Examen continu et boucle de feedback ;
- S'adapter aux changements d'application.
Description
L'initiative de mettre en œuvre des tests automatisés est née de l'absence d'une équipe AQ dédiée. Cette intégration, qui a eu lieu pendant la phase de développement plutôt qu'au début, visait à garantir une fonctionnalité cohérente et à permettre aux développeurs de résoudre rapidement tout problème introduit. Les principaux objectifs étaient d'établir une documentation complète pour les processus de test et d'atteindre environ 90 % de couverture de test.
L'introduction des tests automatisés dans ce projet a comporté plusieurs étapes. La phase initiale a impliqué l'intégration des tests dans le flux de travail de développement existant, suivie d'efforts pour atteindre l'objectif de 90 % de couverture de test. Un défi majeur a été la mise à jour continue des tests en fonction des fonctionnalités de la plateforme en évolution rapide.
En conséquence, le projet a réussi à réduire de 70 % l'incidence des bugs en production et a considérablement diminué les temps de test. Les objectifs futurs incluent le maintien d'une couverture de test proche de 100 % et l'enrichissement des scénarios de test basés sur les interactions utilisateur. Un défi particulier pour cette plateforme était sa multitude de configurations spécifiques aux clients, ce qui compliquait les tests manuels.
Les tests automatisés se sont avérés cruciaux pour gérer efficacement ces complexités, assurant une couverture de test complète et plus rapide.
Cas n°2
Projet
Une solution ERP pour l'industrie pétrolière et gazière, visant à améliorer l'efficacité opérationnelle et la gestion des ressources.
Résultats
- Coûts AQ réduits de 75 % grâce aux tests automatisés ;
- Tests de régression réduits de 8 heures à 2 heures ;
- Couverture fonctionnelle de 80 % atteinte avec l'automatisation ;
- Passage de l'attention des tâches répétitives à l'innovation.
Objectifs futurs
- Augmenter le pourcentage de couverture des tests automatisés.
Description
L'impulsion pour la mise en œuvre des tests automatisés est venue d'un besoin d'accélérer les vérifications de pré-lancement et d'assurer une détection précoce des bugs. Cette intégration, qui a eu lieu au milieu du projet après que les fonctionnalités principales aient été testées manuellement et stabilisées, visait à améliorer la qualité et l'efficacité globales du produit.
Les objectifs étaient multiples : réduire le temps passé sur les tests, optimiser le parcours utilisateur sur la plateforme, libérer l'équipe des tâches répétitives, et ainsi permettre de se concentrer davantage sur le développement de nouveaux cas limites dans la fonctionnalité existante. L'accent a également été mis sur la documentation et l'atteinte d'un équilibre synergique entre les tests automatisés et manuels.
Le processus de mise en œuvre a comporté plusieurs étapes critiques, commençant par l'identification des flux d'utilisateurs clés et la hiérarchisation des cas de test. Un défi notable a été le développement d'une suite de tests non seulement complète, mais aussi suffisamment efficace pour être intégrée de manière transparente dans le processus de déploiement. Initialement, tous les tests étaient inclus dans le déploiement, ce qui entraînait des processus chronophages, nécessitant une approche plus rationalisée.
Ce changement de stratégie a conduit à des réalisations significatives : la couverture des tests a augmenté pour atteindre 80 % de toutes les fonctionnalités, le temps de test de régression a été réduit de 8 heures à 2 heures, et il y a eu une amélioration globale de la qualité des tests manuels.
Les plans futurs incluent l'amélioration continue et l'extension de la suite de tests automatisés pour couvrir les nouvelles fonctionnalités du produit. Le principal défi du projet a été la prise de conscience que toutes les fonctionnalités ne pouvaient pas être automatisées, nécessitant une approche stratégique pour maximiser la couverture des tests de manière efficiente et efficace.
Cas n°3
Projet
Une plateforme SaaS spécifiquement conçue pour les cliniques et leurs patients.
Résultats
- Processus de test efficace garantissant des performances SaaS fiables ;
- Tests de régression AQ réduits de 2 jours à une demi-journée ;
- Coûts AQ divisés par quatre grâce à l'automatisation stratégique.
Objectifs futurs
- Augmenter le pourcentage de couverture des tests automatisés.
Description
L'objectif principal de cette plateforme est d'améliorer l'efficacité des processus cliniques, d'accroître la qualité des soins aux patients et d'optimiser la gestion des soins de santé. La solution fournie par cette plateforme répond aux besoins complexes des prestataires de soins de santé et des patients, garantissant des opérations rationalisées et de meilleurs résultats en matière de soins.
Le processus de mise en œuvre des tests automatisés dans le cas 3 était identique à celui du cas 2, impliquant l'intégration stratégique des tests automatisés après que les fonctionnalités principales aient subi des tests manuels et une stabilisation. Cette approche a été essentielle pour améliorer la qualité globale du produit et assurer un processus de test plus efficace.
La mise en œuvre réussie des tests automatisés a entraîné des améliorations substantielles : elle a drastiquement réduit le temps de test de régression AQ de 2 jours à seulement une demi-journée et a considérablement diminué les coûts AQ par quatre.
Ces résultats soulignent l'efficacité des tests automatisés dans un environnement SaaS de soins de santé complexe, non seulement en termes de gain de temps, mais aussi de réduction des coûts opérationnels.
Comment se préparer à la transition du manuel à l'automatisé - Les recommandations de Yulia :
1. Apprentissage et formation proactifs
Yulia met en lumière la nécessité pour l'équipe AQ d'acquérir de manière proactive des compétences en automatisation par le biais d'un apprentissage approfondi et de programmes de formation structurés. Elle croit en la mise en œuvre de formations formelles, d'ateliers interactifs et d'une pratique persistante pour développer les compétences requises. Une équipe bien informée et qualifiée est considérée par Yulia comme l'épine dorsale d'une transition réussie, soulignant l'importance de favoriser un environnement qui encourage l'apprentissage et le développement des compétences.
2. Plan de migration structuré
Les idées de Yulia soulignent l'importance d'un plan de migration bien organisé. Elle conseille de commencer par l'automatisation de cas de test simples et à fort impact, en progressant progressivement vers les plus complexes. Cette approche permet à l'équipe de développer régulièrement sa confiance et d'affiner son expertise. Yulia estime qu'une approche structurée et progressive garantit que la transition est gérable et que l'équipe n'est pas submergée par les complexités de l'automatisation dès le départ.
3. Investissement dans l'infrastructure
Une infrastructure robuste et polyvalente est cruciale pour l'intégration des tests automatisés. Yulia met en lumière le rôle fondamental de la mise en place de pipelines d'intégration continue / déploiement continu (CI/CD). L'inclusion des pipelines CI/CD fait partie intégrante de l'infrastructure d'automatisation, et Yulia note qu'elle n'augmente pas significativement les coûts globaux.
4. Choisir les outils appropriés
Le choix d'outils adaptés et efficaces est essentiel en automatisation. Yulia donne des conseils pour préférer des solutions conviviales comme Cypress pour leur simplicité et leur efficacité dans l'écriture de tests complexes. Elle apprécie Cypress pour sa conception centrée sur l'utilisateur, permettant aux équipes de naviguer sans effort dans les subtilités de l'automatisation. Cependant, elle met également en garde contre la courbe d'apprentissage abrupte d'outils plus complexes comme Selenium pour les débutants.
5. Évaluation et amélioration continues
Yulia souligne le rôle essentiel de l'évaluation et de l'affinage périodiques de la stratégie d'automatisation. Elle insiste sur une évaluation continue pour identifier les domaines d'améliorations et d'optimisations potentielles. L'affinage régulier des cas de test et des scripts d'automatisation est, selon Yulia, essentiel pour s'adapter aux exigences évolutives et maintenir une couverture et une efficacité optimales.
6. Support et collaboration robustes
Une communication efficace et une structure de gestion favorable sont des composants vitaux de la phase de transition. Yulia souligne l'importance d'une collaboration étroite entre les équipes de développement et d'AQ, ainsi qu'un soutien solide de la part de la direction. Elle considère un soutien robuste et une collaboration transparente comme des piliers qui renforcent le processus de transition, favorisant un environnement propice à l'innovation et à l'excellence.
Conclusion
Les tests automatisés, bien que nécessitant un investissement initial et une courbe d'apprentissage plus élevés, apparaissent comme un composant crucial pour les projets complexes et à grande échelle. Vous pouvez réduire considérablement les coûts tout en garantissant la qualité.
D'autre part, les tests manuels restent irremplaçables pour évaluer l'expérience utilisateur et effectuer des tests exploratoires à plus petite échelle.
Chez JetBase, nous pouvons évaluer l'option de test la plus efficace à chaque étape du test, en fonction de votre projet. Si vous souhaitez savoir comment réduire les coûts de test sur votre projet, vous pouvez nous contacter en nous envoyant un formulaire.















