Como a nuvem pode te ajudar na qualidade da sua aplicação
Palestra ministrada no Cloud Conference Day - Rio dia 16/04/2021 mostrando como a nuvem pode te ajudar na qualidade de sua aplicação com três focos específicos: web, mobile e performance.
Elias Nogueira Eu ajudo engenheiros de software (backend, frontend, qa) a desenvolver a mentalidade de qualidade e entregar software livre de erros para se tornarem melhores e serem contratados para as melhores posições no mercado. 🏢 Backbase 👨💻 Principal Software Engineer 📍 Utrecht, the Netherlands 🌐 eliasnogueira.com 🐦 @eliasnogueira bit.ly/eliasnogueira
Definições importantes Conceituação Web, Mobile e Performance Dicas de como usar a nuvem para estes tipos de teste Ambientes Como podemos criar ambientes efêmeros 01 02 03 Agenda
Utilização de infraestrutura na nuvem para ações relacionadas a teste de software, desde a disponibilização de ferramentas que darão o suporte necessário ao ciclo de vida do desenvolvimento, bem como à execução de testes em qualquer nível.
Cloud Testing Os recursos que utilizaremos na nuvem podem variar • hardware • software • infraestrutura A sua adoção nos ajuda a acelerar a adoção e uso de práticas de qualidade de software de forma escalar e sob demanda.
Cloud Testing Environment Uma das formas mais efetivas de reduzir tempo e dinheiro em infraestruturas de teste é migrando o ambiente para a nuvem. Há duas pré-condições para que essa redução seja efetiva, bem como para o bom uso desses ambientes: • testes automatizados • automação da infraestrutura
Benefícios Customização Ao invés de investimento em hardware, podemos customizar qualquer tipo de serviço na nuvem para comportar as mudanças necessárias. Diminuição de custos Muitos servidores de teste não precisam executar 24x7, apenas sob demanda, diminuindo os custos de utilização da infraestrutura para testes. Escalabilidade Podemos facilmente escalar containers ou servidores e gerar diferentes versões para ações preventivas ou corretivas.
Passo para o possível sucesso Defina o seu entendimento de Cloud Construa sua Estratégia de Teste Planeja a sua infraestrutura Selecione provedores Execute os testes Monitore e Analise os resultados
Principais problemas sobre teste em web apps A fragmentação de browser e diferentes resoluções torna os testes torna a execução de teste mais lenta dada a gama de cobertura que deve ser aplicada. Smartphones > Tablets > Notebooks. > Desktops
Tipos de Teste Podemos ter a ajuda da nuvem para cobrir alguns tipos de teste para a web app: • Funcional / E2E • Visual Regression Test • Compatibilidade (browser/SO/resolução)
Possíveis adoções Utilizando máquinas reais utilizando combinações de SO, versão do browser e resolução Criação de uma grid local, com o uso de containers, para dar velocidade Nuvem Local 01 02
Script de Teste Envia Capacidades HUB Entende a capacidade e envia para o nó correto { so: “Linux” browser:”chrome” screenSize: “1200x800” } Funcionamento geral
Benefícios Maior cobertura Correção de bugs Feedback Podemos, facilmente, cobrir versões, tamanho de tela e diferentes browsers Podemos re-testar na mesma combinação do usuário Podemos executar o mesmo teste em diferentes dispositivos paralelamente
Principal problema sobre teste de performance Existem vários desafios de forma local: • replicação do ambiente de produção • máquinas locais para controlar a distribuir carga Muitas empresas acabam ou não executando ou efetuando em um subset menor, que pode não trazer o resultado real.
Possíveis adoções Utilizando um provedor ou mesmo adorando a solução 01 na nuvem Criar containers para o gerenciamento e distribuição de carga Nuvem Local 01 02
Como implementar uma solução na nuvem sem um provedor específico Cloud Provider Main Distributor 1 Distributor 2 Distributor 3 https://www.blazemeter.com/blog/jmeter-distributed-testing-with-docker https://dragoscampean.medium.com/how-to-build-a-distributed-load-testing-infrastructure-with-aws-docker-and-jmeter-accf3c2aa3a3
Principais provedores Qualquer Cloud provider Implementando a solução apresentada anteriormente Blazemeter https://www.blazemeter.com Gatling https://gatling.io
Benefícios Maior carga Redução de custos Escala A quantidade de usuários será determinada pela aumento da infra A gosto com infraestrutura depende do número de usuários Podemos criar mais usuários, auto-escalar distribuidores ou qualquer outro recurso
Principal problema sobre teste em apps mobile A fragmentação de dispositivos torna a cobertura de testes para devices cada vez mais problemática. Android: 24,093+ devices diferentes* iOS: 7 iPhones – 14 iPads * OpenSignal report 2015: https://www.opensignal.com/sites/opensignal-com/files/data/reports/global/data-2015- 08/2015_08_fragmentation_report.pdf
Possíveis adoções Utilizando dispositivos reais sob demanda sem a necessidade possui-los Diretamente em dispositivos físicos de forma singular ou em uma grid Nuvem Local 01 02
Benefícios Maior cobertura Correção de bugs Feedback Podemos, facilmente, cobrir os dispositivos mais utilizados Podemos testar aquele problema no Galaxy S2 mini Podemos executar o mesmo teste em diferentes dispositivos paralelamente
Conceituação Com a adoção da abordagem de cloud native podemos criar ambientes baseados “em qualquer coisa” que faça sentido: • commit • branch • versão
Aplicação Cloud Native Aplicação Cloud Native Aplicação Cloud Native Container gerado a partir de: • commit • branch • versão Obtenção e orquestração das apps Disponibilização em um provedor High-Level Diagram
CREDITS: This presentation template was created by Slidesgo, including icons by Flaticon, infographics & images by Freepik and illustrations by Stories Obrigado! eliasnogueira