Gérer les risques du développement SaaS avec une plateforme de test de développement
Par Parasoft
12 février 2014
5 min lire
Par Jason Schadewald (chef de produit, Parasoft) et Adam Trujillo (rédacteur technique, Parasoft)
Selon la société de recherche technologique Gartner, le marché SaaS valait 14.5 milliards de dollars en 2012 et devrait atteindre 22.1 milliards de dollars d'ici 2015. La croissance rapide identifiée par Gartner ne devrait pas surprendre, compte tenu du potentiel du SaaS à réduire considérablement les délais de mise sur le marché et les frais généraux associés au suivi et gérer une myriade de versions et de configurations de logiciels packagés.
En déployant une seule version du logiciel, le SaaS permet également aux organisations de centraliser le contrôle. De nombreux consommateurs d'entreprise préfèrent le SaaS car il garantit la cohérence au sein de l'entreprise, ce qui réduit les coûts d'installation, de maintenance et de matériel. Les organisations évitent également les inefficacités et les coûts cachés liés à l'installation de versions incompatibles du même logiciel sur plusieurs machines.
Un nouvel ensemble de risques commerciaux
Malgré ces avantages, la promesse du SaaS d'un délai de mise sur le marché réduit et d'un coût global de possession réduit s'accompagne de son propre ensemble de risques, tels qu'une capacité limitée à atténuer les risques associés à un déploiement échoué et la possibilité de perturbations à l'échelle de l'organisation. aux opérations commerciales. Pour être clair, ce ne sont pas les types de risques qui peuvent être gérés par les stratégies cloud et IaaS, qui protègent principalement contre les pannes matérielles. Le SaaS présente le risque de fournir des fonctionnalités commerciales incorrectes ou incomplètes à l'échelle de l'ensemble de votre entreprise ou entreprise - un risque qui affecte les fournisseurs et les consommateurs. Étant donné que les déploiements SaaS sont gérés principalement par le fournisseur, les consommateurs n'ont que peu d'options pour atténuer les conséquences d'un déploiement échoué, telles que le passage à une version stable ou l'allocation de ressources supplémentaires pour développer des solutions de contournement.
Le SaaS est accessible à tous les utilisateurs à la fois - le monde entier dans le cloud public ou toute une entreprise dans le cloud privé - ce qui signifie que les conséquences de défauts importants et insignifiants sont amplifiées. Une simple faille logique dans les fonctionnalités, la fonction ou l'architecture peut être revisitée des milliers de fois par seconde, provoquant une cascade d'erreurs, une montagne de corruption de données ou une série d'attaques de sécurité réussies peu de temps après la publication d'une nouvelle mise à niveau ou d'un nouveau correctif. Le SaaS fait de l'échec une proposition du tout ou rien et nécessite que nous développions des pratiques de test et de prévention plus diligentes pour faire face à ces risques commerciaux.
Présentation des tests basés sur le changement
Tester le SaaS présente un défi unique car le travail consistant à garantir la sécurité, la fiabilité et les performances de l'application peut facilement éliminer le court délai de mise sur le marché et les coûts de possession minimisés qu'offre une stratégie SaaS. Les tests basés sur les changements, une méthode de vérification des exigences commerciales affectées par les modifications du code ou des interfaces, peuvent aider les entreprises à conserver les avantages de la fourniture de SaaS tout en garantissant la qualité des logiciels. Dans un environnement de test basé sur le changement, les modifications du code déclenchent automatiquement des processus qui rationalisent la hiérarchisation et l'exécution des tests automatisés et manuels.
Plutôt que de demander aux équipes de développement de passer au crible des milliers d'échecs de test, dont beaucoup sont le résultat d'échecs en amont, une stratégie de test basée sur le changement donne la priorité aux résultats des tests en fonction de la valeur commerciale et les fournit directement au testeur ou au développeur concerné pour une résolution immédiate. En coupant dans la montagne de résultats et en ne livrant que ceux qui sont les plus pertinents, les tests basés sur le changement garantissent la qualité SaaS tout en maintenant une sensibilité au délai de mise sur le marché grâce à une diminution mesurable du temps passé à examiner et à résoudre les échecs de test.
La clé pour maximiser les avantages d'une stratégie de test basée sur le changement est de la mettre en œuvre sur une plate-forme de test de développement. Test de développement est l'application continue des activités de test logiciel, telles que les tests unitaires, l'analyse statique et l'examen par les pairs, tout au long du cycle de vie du développement. Une plate-forme de test de développement, telle que Plateforme de test de développement Parasoft, intègre et automatise de manière cohérente les pratiques de prévention et de détection des défauts tout en mesurant avec précision et objectivité la productivité et la qualité des applications.
Le moteur de renseignement intégré à la plate-forme de test de développement Parasoft permet de déterminer la pertinence des tests dans les tests basés sur le changement, ce qui rationalise le flux de travail de l'équipe de développement en fournissant rapidement des données exploitables sur les risques associés à la publication du logiciel dans son état actuel. L'intelligence des processus activée par des tests basés sur le changement sur une plate-forme de test de développement aide les parties prenantes et les gestionnaires à prendre des décisions intelligentes basées sur des résultats prévisibles et une vue de haut niveau des risques commerciaux liés à la publication à tout moment. Les parties prenantes peuvent utiliser ces informations pour gérer les risques en réalisant l'impact de la réaffectation des ressources, en retardant une version pour faire de la place pour un correctif, ou en déplaçant une fonctionnalité dans la prochaine version.
Test de régression automatisé
Toute mise en œuvre de tests basés sur le changement doit reposer sur la base d'une solide suite de tests de régression. Dans l'optique la plus stricte, les équipes de développement doivent tester chaque unité de chaque application après chaque modification pour se prémunir contre les conséquences involontaires, et rien de moins représente un risque calculé. Jusqu'à récemment, la gestion et la maintenance approfondies des tests de régression étaient d'un coût prohibitif en raison de la fragilité bien connue des suites de tests de régression et du temps nécessaire pour les exécuter.
La première étape pour réduire ces coûts a été l'automatisation. L'automatisation aux côtés de l'IaaS permet l'exécution de tests dans n'importe quelle période définie. De plus, l'automatisation est souvent utilisée pour générer de nombreux types de tests, ce qui réduit encore les coûts et les investissements en temps. Mais jusqu'à présent, les équipes de développement devaient encore examiner manuellement les résultats des tests, annulant pratiquement les gains de productivité réalisés par l'automatisation des tests.
Les tests basés sur les changements permettent de hiérarchiser les résultats des tests afin que les résultats les plus importants - les résultats des tests les plus proches des changements et représentant le plus grand risque commercial - soient automatiquement classés par ordre de priorité et transmis au développeur ou au testeur. En incorporant des tests basés sur le changement dans une pratique de test de régression automatisée existante, le développement SaaS peut réaliser sa promesse à faible risque et à haut rendement.
Simulation de dépendances pour tester le code hautement dépendant et de gestion des erreurs
Pour effectuer des tests de régression, les équipes de développement doivent être capables de simuler les dépendances. La simulation des dépendances, que ce soit via la virtualisation des applications ou le stubbing des fonctions au niveau du code, est un aspect critique du test de code hautement dépendant ainsi que du code de gestion des erreurs. Les équipes de développement déterminent souvent que le test d'un code hautement dépendant nécessite trop d'efforts pour être opportun et rentable. De nombreux développeurs sous-estiment également la probabilité d'échec associée au code de gestion des erreurs, ce qui entraîne des aspects non testés de l'application. S'il n'est pas coché, le code hautement dépendant et de gestion des erreurs présente un risque important pour l'entreprise. Mais ce que les organisations ne réalisent peut-être pas, c'est que l'effort requis pour les tester est en fait assez faible avec la technologie moderne de simulation de dépendance.
Un exemple de code hautement dépendant est la logique métier. Tester la logique métier est essentiel car elle génère des revenus et la satisfaction des clients. Mais comme la vérification de la logique métier nécessite des processus à partir de différents points de l'ensemble de l'application, les organisations ont traditionnellement attendu la phase d'intégration pour la tester. Le résultat est que les développeurs et les équipes de test peuvent trouver des défauts beaucoup plus tard dans le processus, lorsque le coût et le temps de correction sont élevés. Être capable de simuler des dépendances dans tout le SDLC permet aux équipes de développement de tester la logique métier et d'autres codes hautement dépendants avant la phase d'intégration, ce qui garantit que les organisations réalisent les avantages d'une stratégie SaaS.
Le test du code de gestion des erreurs est également essentiel car il fonctionne comme un mécanisme de récupération après des échecs causés par des dépendances externes. Lorsqu'il est mis en œuvre de manière incomplète ou sans tenir compte des besoins de l'entreprise, le code de gestion des erreurs peut entraîner des conséquences inattendues allant d'une interruption de service mineure à une défaillance systémique grave. Pour cette raison, le code de gestion des erreurs est également l'une des vulnérabilités de sécurité ciblées par les attaquants.
Les développeurs et les testeurs doivent être en mesure de simuler facilement les dépendances pour combler cette lacune dans le processus de test. Une plate-forme de test de développement à la pointe de la technologie permet la simulation des dépendances via la virtualisation des applications ou le stubbing de fonctions au niveau du code.
En outre, une plate-forme de test de développement réduit le temps et les efforts nécessaires pour terminer le développement et les tests en
- Générer automatiquement des tests;
- Génération automatique de dépendances simulées et injection d'erreurs;
- Faciliter l'association des tests aux exigences;
- Lier les tests et les dépendances dans des tests de régression automatisés; et
- Hiérarchiser les résultats en fonction du risque et de la pertinence.
Conclusion
Bien sûr, il n'y a pas de solution miracle. Garantir la qualité de toute application, SaaS ou autre, nécessite une combinaison de technologies de test et de prévention, et le processus conduisant à l'utilisation de ces technologies doit s'aligner sur les objectifs commerciaux. Les tests de régression automatisés basés sur le changement avec simulation de dépendance sont la solution pour faire face aux risques uniques liés à la fourniture et à la consommation d'applications SaaS, et ils doivent être inclus aux côtés des pratiques plus courantes d'analyse statique, d'examen par les pairs, de tests fonctionnels et de tests de performance.