banner

Notícias

Nov 05, 2023

Aplicando Teste

Notícias da página inicial do InfoQ Aplicando desenvolvimento orientado a testes na nuvem

Este item em japonês

25 de maio de 2023 4 minutos de leitura

por

Ben Linders

Na nuvem, o desenvolvimento de aplicativos pode ser tratado de ponta a ponta com a infraestrutura que o acompanha. Isso possibilita o uso do desenvolvimento orientado a testes (TDD) e a refatoração na aplicação completa, o que pode reduzir os custos de manutenção.

Michal Svoboda dará uma palestra sobre desenvolvimento orientado a testes de aplicativos em nuvem na XP 2023. Esta conferência será realizada de 13 a 16 de junho em Amsterdã, Holanda.

Para aplicativos em nuvem, os aplicativos podem ser desenvolvidos e implantados junto com a infraestrutura que os acompanha como um pedaço de código coerente. De acordo com Svoboda, remover a “infraestrutura” como um elemento separado nos permite aplicar técnicas ágeis de engenharia, como TDD e refatoração, no escopo de todo o aplicativo, incluindo seus recursos de nuvem.

A latência e a natureza assíncrona da nuvem podem ser um problema. Esperar que os recursos sejam provisionados ou que o tempo limite decorra obstrui o ciclo rápido do TDD. Svoboda sugere mudar para um modelo de atualização incremental, ou seja, para não destruir recursos no final de cada teste e ter uma implantação limpa apenas na integração:

As técnicas de aceleração de teste foram extraídas de nosso conjunto de truques TDD. Usar taticamente testes baseados em estado ou testar apenas partes modificadas do código seriam alguns exemplos. Vale a pena lembrar que os obstáculos nos testes fornecem feedback útil para todo o ciclo de desenvolvimento. Esse feedback nos fez pesar cuidadosamente nossas escolhas de arquitetura e procedimentos.

De acordo com Svoboda, o TDD reduz os custos de manutenção de aplicativos, que são de longe a maior parte do TCO do software. Usando TDD, é fácil adicionar recursos ou refatorar em qualquer lugar, seja em seu próprio código ou no uso de recursos da nuvem, mesmo anos depois.

A InfoQ entrevistou Michal Svoboda sobre desenvolvimento em nuvem usando TTD.

InfoQ: Como a nuvem impactou a forma como provisionamos a infraestrutura?

Michal Svoboda : Através de APIs, os recursos da nuvem podem ser criados e destruídos de forma totalmente automatizada. (Estritamente falando, não se trata apenas da nuvem. Os provedores de nuvem apenas tornam essa função extremamente acessível.) Não precisamos pensar em “infraestrutura”, como em servidores e redes que existem independentemente das aplicações. A “infraestrutura” já não requer uma abordagem especial.

Além da infraestrutura clássica, a nuvem fornece serviços de especialidade única, como armazenamento, funções ou fluxos. Muitos aplicativos em nuvem não são executados apenas na nuvem, eles consistem na nuvem.

InfoQ: Como você faz desenvolvimento orientado a testes para aplicações em nuvem?

Liberdade : O TDD de aplicativos em nuvem é semelhante ao TDD de outros aplicativos. Em vez de chamar construtores e funções para criar objetos na memória, chamamos APIs para criar recursos na nuvem. Um teste "organizar, agir, afirmar" para um recurso de fluxo é ilustrado no pseudocódigo abaixo:

[Teste se o fluxo pode ser escrito e lido]

Este é um teste funcional muito simples. Testes baseados em estado podem ser realizados usando chamadas de API que "consultam a configuração" de recursos. Configurações de recursos mais complexas podem ser testadas usando o mesmo princípio.

De acordo com o TDD, deixamos o teste ser escrito primeiro, falhamos e seguimos com a implementação. É importante ressaltar que ouvimos o feedback e deixamos que quaisquer dificuldades nos testes conduzam nosso desenvolvimento. Nossas escolhas de tecnologia, arquitetura e procedimentos são baseadas na facilidade de teste.

InfoQ: Quais desafios você enfrentou e como lidou com eles?

Liberdade : As ferramentas disponíveis eram um problema. Para que esta abordagem TDD na nuvem funcione bem, o código de implantação de recursos deve ser cidadão de primeira classe na linguagem de programação escolhida. Ferramentas contemporâneas fornecem interfaces de linha de comando sobre um modelo em suas próprias linguagens no estilo "Makefile em nuvem". Como essas ferramentas seguem o paradigma da “infraestrutura separada”, pode ser complicado se comunicar com elas. Esse foi um ótimo feedback no início de nosso desenvolvimento e orientou nossas decisões sobre ferramentas e fornecedores.

COMPARTILHAR