banner

Notizia

Nov 05, 2023

Prova di applicazione

InfoQ Homepage Novità Applicazione dello sviluppo basato sui test nel cloud

Questo articolo in giapponese

25 maggio 2023 4 minuti di lettura

di

Ben Linders

Nel cloud, lo sviluppo delle applicazioni può essere trattato end-to-end con la relativa infrastruttura. Ciò consente di utilizzare lo sviluppo basato sui test (TDD) e il refactoring sull'intera applicazione, il che può ridurre i costi di manutenzione.

Michal Svoboda parlerà dello sviluppo basato sui test delle app cloud all'XP 2023. Questa conferenza si terrà dal 13 al 16 giugno ad Amsterdam, Paesi Bassi.

Per le app cloud, le applicazioni possono essere sviluppate e distribuite insieme alla relativa infrastruttura come un unico pezzo di codice coerente. Secondo Svoboda, rimuovere l'"infrastruttura" come elemento separato ci consente di applicare tecniche di ingegneria agili come TDD e refactoring sull'ambito dell'intera app, comprese le sue risorse cloud.

La latenza e la natura asincrona del cloud possono rappresentare un problema. L'attesa del provisioning delle risorse o dello scadere dei timeout ostacola il rapido ciclo TDD. Svoboda suggerisce di passare a un modello di aggiornamento incrementale, ovvero di non distruggere le risorse alla fine di ogni test, e di avere un deploy pulito integrando solo:

Le tecniche di accelerazione del test sono state tratte dal nostro bagaglio di trucchi TDD. Alcuni esempi potrebbero essere l'utilizzo tattico di test basati sullo stato o il test solo di parti modificate del codice. Vale la pena ricordare che gli ostacoli nei test forniscono un feedback utile all'intero ciclo di sviluppo. Questo feedback ci ha fatto valutare attentamente la nostra architettura e le scelte procedurali.

Secondo Svoboda, il TDD riduce i costi di manutenzione delle app, che rappresentano di gran lunga la parte principale del TCO del software. Utilizzando TDD, è facile aggiungere funzionalità o eseguire il refactoring ovunque, sia che si tratti del proprio codice o dell'utilizzo delle risorse cloud, anche anni dopo.

InfoQ ha intervistato Michal Svoboda sullo sviluppo del cloud utilizzando TTD.

InfoQ: In che modo il cloud ha influenzato il modo in cui forniamo l'infrastruttura?

Michal Svoboda : Attraverso le API, le risorse cloud possono essere create e distrutte in modo completamente automatizzato. (A rigor di termini, questo non è solo il cloud. I fornitori di cloud rendono questa funzione estremamente accessibile.) Non abbiamo bisogno di pensare all '"infrastruttura", come nel caso di server e reti che esistono indipendentemente dalle applicazioni. Le "infrastrutture" non richiedono più un approccio speciale.

Oltre all'infrastruttura classica, il cloud fornisce servizi monospecialistici, come archiviazione, funzioni o flussi. Molte app cloud non vengono eseguite solo nel cloud, ma sono costituite dal cloud.

InfoQ: Come eseguite lo sviluppo basato sui test per le applicazioni cloud?

Svoboda : il TDD delle app cloud è simile al TDD di altre app. Invece di chiamare costruttori e funzioni per creare oggetti in memoria, chiamiamo API per creare risorse nel cloud. Un test "organizzare, agire, affermare" per una risorsa di flusso è illustrato nello pseudo-codice seguente:

[Verificare che il flusso possa essere scritto e letto]

Questo è un test funzionale molto semplice. I test basati sullo stato possono essere eseguiti utilizzando chiamate API che "interrogano la configurazione" delle risorse. Configurazioni di risorse più complesse possono essere testate utilizzando lo stesso principio.

Come da TDD, lasciamo che il test venga scritto per primo, falliamo e seguiamo con l'implementazione. È importante sottolineare che ascoltiamo il feedback e lasciamo che eventuali difficoltà di test guidino il nostro sviluppo. La nostra tecnologia, architettura e scelte procedurali si basano sulla facilità di test.

InfoQ: Quali sfide hai dovuto affrontare e come le hai affrontate?

Svoboda : Gli strumenti disponibili rappresentavano un problema. Affinché questo approccio TDD sul cloud funzioni bene, il codice di distribuzione delle risorse deve essere di prima classe nel linguaggio di programmazione scelto. Gli strumenti contemporanei forniscono interfacce a riga di comando su un modello nei loro linguaggi in un modo "cloud Makefile". Poiché questi strumenti seguono il paradigma dell'"infrastruttura separata", può risultare complicato comunicare con essi. Questo è stato un ottimo feedback anche all'inizio del nostro sviluppo e ha guidato le nostre decisioni sugli strumenti e sui fornitori.

CONDIVIDERE