banner

Nouvelles

Nov 05, 2023

Application du test

Accueil InfoQ Actualités Appliquer le développement piloté par les tests dans le cloud

Cet article en japonais

25 mai 2023 4 min de lecture

par

Ben Linders

Dans le cloud, le développement d'applications peut être traité de bout en bout avec l'infrastructure qui l'accompagne. Cela permet d'utiliser le développement piloté par les tests (TDD) et le refactoring sur l'application complète, ce qui peut réduire les coûts de maintenance.

Michal Svoboda donnera une conférence sur le développement piloté par les tests d'applications cloud lors de XP 2023. Cette conférence se tiendra du 13 au 16 juin à Amsterdam, aux Pays-Bas.

Pour les applications cloud, les applications peuvent être développées et déployées avec l'infrastructure qui les accompagne sous la forme d'un seul morceau de code cohérent. Selon Svoboda, la suppression de « l'infrastructure » en tant qu'élément distinct nous permet d'appliquer des techniques d'ingénierie agiles telles que le TDD et le refactoring à l'ensemble de l'application, y compris ses ressources cloud.

La latence et la nature asynchrone du cloud peuvent poser problème. Attendre que les ressources soient provisionnées ou que les délais d'attente s'écoulent obstrue le cycle TDD rapide. Svoboda suggère de passer à un modèle de mise à jour incrémentielle, c'est à dire de ne pas détruire de ressources à la fin de chaque test, et d'avoir un déploiement propre en intégrant uniquement :

Les techniques d'accélération des tests ont été tirées de notre sac d'astuces TDD. L'utilisation tactique de tests basés sur l'état ou le test uniquement de parties modifiées du code en seraient quelques exemples. Il est utile de se rappeler que les obstacles liés aux tests fournissent des informations utiles sur l’ensemble du cycle de développement. Ces retours nous ont amenés à peser soigneusement nos choix d'architecture et de procédures.

Selon Svoboda, TDD réduit les coûts de maintenance des applications, qui constituent de loin la majeure partie du TCO logiciel. Grâce à TDD, il est facile d'ajouter des fonctionnalités ou de refactoriser n'importe où, qu'il s'agisse de votre propre code ou de l'utilisation des ressources cloud, même des années plus tard.

InfoQ a interviewé Michal Svoboda sur le développement cloud à l'aide de TTD.

InfoQ : Quel est l'impact du cloud sur la façon dont nous provisionnons l'infrastructure ?

Michal Svoboda : Grâce aux API, les ressources cloud peuvent être créées et détruites de manière entièrement automatisée. (À proprement parler, il ne s'agit pas uniquement du cloud. Les fournisseurs de cloud rendent simplement cette fonction extrêmement accessible.) Nous n'avons pas besoin de penser à « l'infrastructure », comme aux serveurs et aux réseaux qui existent indépendamment des applications. « Infrastructure » ​​ne nécessite plus une approche particulière.

En plus de l'infrastructure classique, le cloud fournit des services spécialisés, tels que le stockage, les fonctions ou les flux. De nombreuses applications cloud ne fonctionnent pas uniquement dans le cloud, elles sont constituées du cloud.

InfoQ : Comment réalisez-vous le développement piloté par les tests pour les applications cloud ?

Svoboda : Le TDD des applications cloud est similaire au TDD des autres applications. Au lieu d'appeler des constructeurs et des fonctions pour créer des objets en mémoire, nous appelons des API pour créer des ressources dans le cloud. Un test « organiser, agir, affirmer » pour une ressource de flux est illustré dans le pseudo-code ci-dessous :

[Testez que le flux peut être écrit et lu]

Il s'agit d'un test fonctionnel très simple. Les tests basés sur l'état peuvent être effectués à l'aide d'appels API qui « interrogent la configuration » des ressources. Des configurations de ressources plus complexes peuvent être testées en utilisant le même principe.

Conformément à TDD, nous laissons le test être écrit en premier, échouons et suivons l'implémentation. Il est important de noter que nous écoutons les commentaires et laissons les difficultés liées aux tests guider notre développement. Nos choix technologiques, architecturaux et procéduraux sont basés sur la facilité des tests.

InfoQ : Quels défis avez-vous rencontrés et comment les avez-vous surmontés ?

Svoboda : Les outils disponibles posaient un problème. Pour que cette approche TDD sur cloud fonctionne correctement, le code de déploiement des ressources doit être de premier ordre dans le langage de programmation de son choix. Les outils contemporains fournissent des interfaces de ligne de commande sur un modèle dans leurs propres langages à la manière d'un « Cloud Makefile ». Étant donné que ces outils suivent le paradigme d’une « infrastructure distincte », il peut s’avérer fastidieux de communiquer avec eux. Ce fut également un excellent retour au début de notre développement et a orienté nos décisions en matière d'outillage et de fournisseur.

PARTAGER