O documento discute os desafios do desenvolvimento mobile, como múltiplos sistemas operacionais e dispositivos, e como o framework Xamarin e testes automatizados podem ajudar a superar esses desafios. Ele também mostra como o Xamarin permite compartilhar código C# entre plataformas mobile mantendo desempenho nativo e acesso a APIs, e como testes automatizados tornam o código mais robusto e fácil de manter.
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019
1. Xamarin + TDD
Reagindo rápido à mudanças no
mundo Mobile
Mahmoud Ali
Desenvolvedor
@akamud
2. Desafios de desenvolvimento Mobile
• Múltiplos Sistemas Operacionais
• Tempo do “devloop” demorado
• Vários tamanhos de telas
• Vários aparelhos diferentes
• Sistemas operacionais customizados
• Múltiplas lojas para dar suporte
• Controle na mão do usuário
3. Impactos de problemas em apps
Deletam o app imediatamente
Conta para os amigos o quanto o app é ruim
Deletam o app se ele trava por mais de 30 seg.
Compartilha em redes sociais o quanto o app é ruim
9. Problemas existentes no app atual
Devagar para lançar novas versões
Bugs + Falta de confiança para refatorar
Código mal modelado
Penoso de evoluir + ambiente desconhecido
13. .NET – Uma plataforma unificada
LIBRARIES
INFRASTRUCTURE
.NET STANDARD
DESKTOP WEB CLOUD MOBILE GAMING IoT AI
14.
15. O que é Nativo?
Interfaces Nativas Acesso às API
Nativas
Performance Nativa
Tudo que você pode fazer com Objetice-C, Swift ou Java, você pode fazer com C# e Xamarin
22. Testes automatizados
• São ótimos
• Deixa o código mais coeso
• Deixa a base de código mais fácil de dar manutenção
• Diminui a quantidade de bugs em produção
• Auto documenta o código
25. “Testes automatizados são caros”
• Ariane 5
• 10 anos para ser construído
• 7 bilhões de dólares investidos
• 370 milhões de dólares para
um voo
• Bug causado por overflow de
integer
27. Testes não garantem a ausência de bugs, e sim
a presença deles
Edsger W. Dijkstra
28. Testes de Unidade
• Testes que verificam uma unidade de funcionamento de forma
isolada
• Devem rodar muito rápido
• Mais fáceis de manter
• Dão feedback mais rápido sobre o código
• Auto documenta o código
29. Testes de Integração
• Verificam se as partes do sistema estão interagindo
corretamente entre si
• Um pouco mais custosos de escrever e executar
30. Testes de UI
• Validam que a aplicação inteira, incluindo a interface gráfica,
está funcionando como esperado
• Também chamados de “end-to-end”, testes de aceitação ou
testes funcionais.
• São mais custosos de manter
• Podem muitas vezes ser frágeis
• Podem ser um bom ponto de partida para sistemas legados
31. Pirâmide dos testes automatizados
Menor custo
Menos testes Maior custo
Mais testes