luchschen_shutter - Fotolia
Parallel Testing : comment et pourquoi le mettre en place
Les tests parallèles peuvent être une aubaine pour accroître leur portée et réduire leur durée d’exécution. Mais si la pratique est tout à fait envisageable, les testeurs ont encore besoin d’une stratégie de mise en œuvre mûrement réfléchie.
Les organisations IT adoptent des tests continus pour améliorer la qualité et la rapidité des logiciels, notamment quand elles adoptent les méthodologies DevOps et des pipelines CI/CD. Toutefois, les tests continus nécessitent une automatisation efficace et rationalisée. Découvrez le Parallel Testing : une technique avancée qui permet une large couverture des fonctionnalités applicatives dans le temps d’exécution le plus court possible.
Le Parallel testing est un moyen d’exécuter simultanément plusieurs scripts d’automatisation des tests, chaque script consommant des ressources différentes. Vous pouvez vérifier plusieurs composants applicatifs sur des ordinateurs séparés, ou exécuter des scripts sur différents appareils et navigateurs en même temps.
Voyons comment cette méthodologie assure une automatisation efficace des tests, comment les testeurs peuvent mettre en œuvre cette pratique avec de bonnes chaînes de mesures, de cas et de scripts, et quels sont les outils, comme Selenium, dont ils peuvent avoir besoin pour faire leur travail.
Avantages du Parallel Testing
Avec le Parallel Testing, le nombre de tests qu’un ingénieur Q&A exécute simultanément peut réduire de manière exponentielle le temps nécessaire pour exécuter l’ensemble de la chaîne de vérifications. En conséquence, cette technique accélère grandement le rythme.
De la sorte, les retours d’information sont obtenus plus vite, voire de manière continue, ce qui permet de prendre en charge un pipeline CI/CD. Un retour d’information (feed-back) continu aide l’équipe logicielle à trouver et à corriger les défauts plus rapidement et à éliminer les goulets d’étranglement.
Les tests en parallèle permettent une plus grande couverture que les tests séquentiels dans le même laps de temps. Ils réduisent le risque inhérent à la fragmentation technologique. Le phénomène de fragmentation se produit lorsque les appareils utilisent des versions différentes du système d’exploitation et que les applications sont codées individuellement en fonction du système d’exploitation.
Ce type de conception applicative augmente le nombre de combinaisons à tester par l’assurance qualité. Avec un plus grand nombre de combinaisons appareil/plate-forme/navigateur dans le même espace-temps, les responsables Q&A peuvent également tester des combinaisons moins courantes. Le fait d’accroître cette couverture évite la nécessité de faire appel à une approche basée sur le risque. Celle-ci privilégie les vérifications des fonctions et des caractéristiques présentant un risque de défaillance plus élevé au lieu de se pencher sur la totalité de l’application ou la pile technologique.
Selon l’environnement de test, le Parallel Testing n’est pas forcément plus coûteux. Si l’équipe utilise des machines virtuelles payantes pour effectuer les tests sur le cloud, plutôt que d’investir dans une infrastructure sur site, ils ne consommeront pas beaucoup de ressources. Cependant, les VMs dans le cloud ne sont pas gratuites. De plus, si une organisation IT a déjà investi des sommes importantes dans des serveurs sur site, elle peut vouloir les exécuter localement, en dehors des pics de workloads.
Mettre en œuvre le Parallel Testing
En plus d’apporter une certaine vélocité à la phase d’assurance et de qualité, le Parallel Testing est flexible et l’équipe peut en principe le mettre facilement en place pour s’adapter aux pratiques actuelles de développement. Une stratégie de mise en œuvre doit inclure l’optimisation du cloud, de la chaîne et des scripts de test, et se concentrer sur les délais de livraison.
Déployer sur une infrastructure cloud. L’exécution parallèle sur une infrastructure locale peut être coûteuse : il faut plusieurs équipements, logiciels, et éventuellement des appareils mobiles pour exécuter les tests simultanément. À l’inverse, le cloud public offre une tarification à l’usage. Dans un environnement de test basé sur le cloud, l’assurance qualité peut faire tourner de nombreuses VMs pour exécuter des scripts sur plusieurs configurations en même temps, puis les désactiver. Il n’y a aucun coût permanent et l’utilisation est élevée, mais brève.
Revoir et optimiser la chaîne de tests. Il est tentant d’inclure chaque cas possible pour augmenter la couverture. Cependant, pour profiter au mieux de l’approche Pararell Testing, il faut établir des priorités. Il faut en premier lieu effectuer les tests qui couvrent les risques les plus élevés pour l’application en termes de complexité du code et des workflows critiques. C’est ensuite que l’on étend le périmètre de vérification.
Atomiser les scripts. Les scripts ne doivent explorer qu’un seul scénario. Cette pratique aide l’équipe en charge de la qualité à définir l’objectif du contrôle et à documenter précisément les défauts.
Isoler les scripts. Avec cette technique, un test ne peut pas s’appuyer sur les résultats d’un autre. Il est important que les responsables Q&A appliquent cette isolation pour éviter de gripper la chaîne.
Envisager la gestion des données. Assurez-vous que chaque script restaure les données de test dans leur état d’origine afin d’éviter des problèmes au cours des prochaines vérifications.
Veillez à ce que les tests s’exécutent rapidement. Le temps de test par script devrait être d’une minute ou moins sur l’environnement local.
Tests parallélisés : les outils à privilégier
De nombreux outils d’automatisation des tests, à la fois open source et commerciaux, facilitent l’exécution des tests en parallèle.
Selenium, un outil open source, est l’un des plus flexibles, surtout lorsque les testeurs le combinent avec TestNG. TestNG est un framework Java basé sur JUnit et NUnit. Utilisé avec Selenium, TestNG permet d’organiser facilement des chaînes de tests.
Cucumber est un outil d’automatisation open source, que les développeurs utilisent le plus souvent pour le développement axé sur le comportement. Les professionnels de l’assurance qualité peuvent mettre en œuvre des tests parallèles avec Cucumber en utilisant soit JUnit soit TestNG. JUnit peut exécuter des ensembles de fonctionnalités en parallèle, tandis que TestNG exécute des scénarios Cucumber en parallèle.
Les applications mobiles bénéficient grandement de cette méthodologie, en particulier lorsqu’elles ouvrent la voie aux tests entre navigateurs Web et entre appareils. Un outil d’automatisation mobile est toutefois nécessaire. Appium est un outil open source qui a la capacité d’exécuter ces vérifications parallélisées sur iOS, Android et Windows.