Découvrez comment intégrer facilement l'analyse statique, les tests unitaires et d'autres méthodes de test de logiciels C et C++ dans votre pipeline CI/CD. Inscrivez-vous pour la démo >>

Les applications cloud se lancent plus rapidement. L'automatisation des tests peut-elle également atteindre une vitesse d'échappement?

Par Jason English

13 février 2020

5  min lire

Il serait difficile de trouver une entreprise viable qui ne dispose d'aucune stratégie de migration vers le cloud.

Les entreprises de pointe adopteront une approche tout ou rien de cette migration - insistant sur le fait que toutes les fonctionnalités commerciales doivent finalement se résoudre à la consommation d'une sorte de cloud élastique, que ce soit dans un IaaS de premier plan comme AWS ou Azure, ou sur site ou sur mesure. saveurs du cloud privé.

Même les retardataires du marché ont un plan pour déplacer au moins une application vers une instance de cloud à la demande - plonger un orteil dans l'eau avant de sauter le pas.

Les entreprises peuvent accélérer le développement et moderniser l'environnement de livraison à l'aide du cloud, mais une chose ne change jamais: les clients s'attendent toujours à ce que les logiciels fonctionnent et fonctionnent comme prévu en production, quel que soit l'endroit où ils sont déployés.

Ils ont besoin que les applications soient hautement disponibles, sécurisées et résilientes, sinon ils iront ailleurs. Cela laisse l'automatisation des tests comme une fonction de porte critique pour réussir.

Quand le taux de diffusion sur le cloud dépasse les tests

Une société de services financiers du Global 500, John Hancock, a récemment annoncé le lancement d'un Projet de transition de 142 M $ US vers un cloud privé IaaS

Ne vous y trompez pas, une grande partie de ce budget n'est pas constituée de frais de cloud, mais de main-d'œuvre. La réarchitecture des applications d'entreprise pour le cloud n'est évidemment pas une mince affaire. Une quantité de travail décourageante est nécessaire pour intégrer, tester et valider en permanence les applications, et ce travail est souvent revu lors de la maintenance des tests après chaque version.

Mais ce n'est pas nouveau. De tels coûts de retouche existaient certainement avant le cloud.

Qu'est ce qui a changé? Le taux de publication augmente de façon exponentielle dans un environnement cloud moderne. Les équipes DevOps utilisent des définitions d'infrastructure en tant que code (IaC), une intégration rapide basée sur les services et des flux de données, des pipelines de déploiement automatisés et une conteneurisation exécutable n'importe où.

Lors d'une keynote de la KubeCon, l'ingénieur des opérations d'Airbnb, Melanie Cebula, a déclaré que son équipe sortait plus de 20,000 versions conteneurisées par semaine - et c'était il y a un an! Alors que la plupart des entreprises ne toucheront probablement jamais aux vitesses des Netflix et Airbnbs du monde, nous cherchons toujours à multiplier par mille la vitesse de déploiement pour toute entreprise qui gère correctement les environnements cloud.

Alors, où cela laisse-t-il le reste du monde, les entreprises qui ne sont pas nées dans le cloud?

Tout développeur senior ou ingénieur de test reconnaît que le code lui-même représente une responsabilité. Plus vous écrivez de code, plus vous devez tester ce code - et plus vous devez écrire et maintenir de code de test au fil du temps.

Atteindre la vitesse d'échappement n'est plus une question d'augmenter la vitesse des déploiements et des versions, si nous ne pouvons plus aborder le coefficient de traînée de maintenir le code de test qui l'accompagne.

Atteindre la vitesse de fuite contre le changement

Alors que les entreprises adoptent le mouvement DevOps, elles se tournent vers de puissants pipelines d'automatisation pour l'automatisation continue des versions et du déploiement de l'environnement dans les architectures cloud dynamiques.

Les tests doivent être un aspect de première classe de ce pipeline. Ne pas tester le logiciel dans un environnement réaliste tôt et souvent, et les défaillances qui en résultent qui apparaissent en production peuvent être trop coûteuses à corriger.

La plupart des groupes de test et de développement utilisent une combinaison d'outils commerciaux et d'open source, lorsque cela est possible, pour l'automatisation des tests et la simulation des dépendances (également appelée «virtualisation des services»). . L'outil d'automatisation des tests Web open source le plus populaire est Sélénium, qui permet aux testeurs de reproduire des flux de travail basés sur un navigateur via un système en cours de test.

Alors que les éléments fondamentaux de Selenium existent depuis des années, l'activité des partenaires et les contributions des développeurs au projet se sont réchauffées ces derniers temps. Au cours des 3 à 5 dernières années, Selenium est devenu une partie de la chaîne d'outils pour la majorité des équipes de développement / test d'entreprise.

Quel que soit le niveau de code, l'intégration et les tests de performances exécutés par l'équipe logicielle, les tests fonctionnels du point de vue de l'utilisateur avec des outils tels que Selenium sont toujours la fin du jeu. Pour réussir, il est essentiel de tester de manière répétée une interface utilisateur Web sur tous les navigateurs et appareils cibles.

Maintenant, la répétabilité - c'est là que les choses deviennent velues. Lorsque la logique métier et les données back-end sont représentées de manière dynamique dans l'interface utilisateur Web au moment de l'exécution, un nombre infini d'anomalies se produisent à l'écran et interrompent les scripts de test Selenium, qu'ils aient été capturés par navigation ou modifiés manuellement par les testeurs.

Par exemple, les éléments peuvent se charger à différentes positions sur la page, ou dans un ordre différent, ou contenir des valeurs de données ou des images qui sont en dehors des attentes du script de test Selenium.

Les testeurs et les SRE (ingénieurs de fiabilité de site ou de service) peuvent essayer de créer des gestionnaires personnalisés pour tenir compte des fausses échecs, en ajustant le code pour permettre une flexibilité sur certains paramètres, mais avant longtemps, il deviendra impossible de faire confiance aux résultats de toute suite de tests, en raison de modifications sous-jacentes de l'architecture back-end du cloud qui ne cessent de générer des incohérences dans une interface utilisateur Web dynamique.

Rendre les tests aussi résilients que l'architecture

Le meilleur moyen de contrer le dépassement constant du cloud dans les tests d'applications? Appliquez le même principe DevOps de «tout automatiser» à la maintenance de l'automatisation des tests elle-même!

Bien qu'il existe sur le marché des outils d'automatisation propriétaires qui couvrent l'ensemble du cycle de vie des tests, il existe également des approches qui augmentent les capacités des testeurs à l'aide d'outils open source.

Une grande société de voyages faisait face à un tel défi en commençant à migrer une application de programme de fidélisation critique pour l'entreprise hors des clusters de serveurs existants vers une instance d'application cloud réservée avec des capacités de débordement de cloud public.

La version initiale a été entièrement testée et assez réussie, mais comme des clients supplémentaires ont été ajoutés au cours de trois autres versions ponctuelles, leurs premières suites de tests Selenium ont commencé à échouer à un taux très élevé. Le coût de la main-d'œuvre pour changer les tests, ainsi que l'augmentation des coûts du cloud en raison de l'utilisation redondante de l'informatique, commençaient à donner une vue de gestion négative du projet.

Heureusement, ils ont pu se tourner vers Parasoft Sélénic un outil pour améliorer leurs suites de tests Selenium, en appliquant une approche basée sur l'IA pour interpréter les objets sur la page et en `` auto-réparant '' les tests pour s'adapter aux conditions changeantes observées dans l'interface utilisateur Web.

Ce niveau de résilience des tests a réduit les coûts de maintenance des tests de l'entreprise jusqu'à 75%, tout en leur permettant de terminer leur mise en service avec Selenium et Selenic deux semaines à l'avance avec beaucoup moins de risques d'échec à mesure que la migration se poursuit.

La prise d'Intellyx

Les entreprises ont des intentions claires de déplacer des applications vers le cloud, mais les conséquences et les coûts de cette migration sont beaucoup moins clairs.

Si vous envisagez de moderniser les monolithes existants et de publier de nouvelles fonctionnalités plus rapidement pour répondre aux besoins des clients, vous devez encore effectuer de nombreux tests fonctionnels et de régression. Tellement de tests, en fait, que même les ingénieurs de test les plus qualifiés et les plus efficaces ne peuvent pas coder et exécuter suffisamment de tests pour suivre le rythme.

Assurer la résilience des tests - en ayant des tests capables de se tester eux-mêmes et de se réparer eux-mêmes - est le seul moyen pour les tests de suivre le rythme des changements rapides apportés par le cloud.

Prochaine étape: éviter le drame Open Source: atténuer le risque de développement avec des logiciels open source.

Par Jason English

Jason English est analyste principal et directeur marketing chez Intellyx, où il conseille les principaux fournisseurs de solutions technologiques et les startups logicielles dans leur transition vers la transformation numérique. Son expérience comprend l'expérience client et la conception interactive, le cycle de vie de développement / test de logiciels d'entreprise, la virtualisation, le cloud et la blockchain.

Recevez les dernières nouvelles et ressources sur les tests de logiciels dans votre boîte de réception.