SlideShare uma empresa Scribd logo
1 de 38
Xamarin + TDD
Reagindo rápido à mudanças no
mundo Mobile
Mahmoud Ali
Desenvolvedor
@akamud
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
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
Downtime x Instalações
-20% da base de usuários a cada 10 dias
App fora do ar
Feito em Java
Somente Android
Código de aprendiz
Sem testes
Downtime x Desinstalações
Dia de pico de uso
Downtime x Nota
App fora do ar
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
Mais um probleminha
Eu não controlo o backend desse app
Soluções
Tooling + DevOps
Testes Automatizados
C# + Xamarin
SOLID, Patterns
.NET – Uma plataforma unificada
LIBRARIES
INFRASTRUCTURE
.NET STANDARD
DESKTOP WEB CLOUD MOBILE GAMING IoT AI
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
Compartilhamento de código
● Código C# Compartilhado ● 100% de acesso às APIs Nativas ● Alta performance
iOS APIs – 100% de cobertura
C#
MapKit UIKit iBeacon CoreGraphics CoreMotion
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
Android APIs – 100% de cobertura
C#
Text-to-speech ActionBar Printing Framework Renderscript NFC
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
Xamarin - Tradicional
Windows C#Android C#iOS C#
Shared C# Logic
 3 Interfaces de Usuário Nativas
 Código do App compartilhado
Xamarin.Forms – Cross-platform UI
Shared UI Code
Shared C# Logic
 UI Nativa compartilhada
 Código do App compartilhado
Demo
Xamarin
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
Mas eu não faço
¯_(ツ)_/¯
Por que não testamos?
“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
Teste automatizado é código, se você sabe
codar, você sabe testar
Testes não garantem a ausência de bugs, e sim
a presença deles
Edsger W. Dijkstra
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
Testes de Integração
• Verificam se as partes do sistema estão interagindo
corretamente entre si
• Um pouco mais custosos de escrever e executar
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
Pirâmide dos testes automatizados
Menor custo
Menos testes Maior custo
Mais testes
Demo
Testes + Xamarin
iOS e Android
500.000+ downloads
Top 10 finanças Brasil
Feito em C# com Xamarin
+250 Testes
82% de cobertura de código
Mas e o corujão com energético?
Demo
Links
• https://github.com/akamud/KickassUI.Traveler
• Repositório original da interface (Steven Thewissen)
• Boas práticas para testes de aceitação com Xamarin
Nós valorizamos o seu feedback!
Por favor, envie o seu feedback para:
http://bit.ly/capiconf-
feedback
Obrigado!
@akamud
muddibr@gmail.com

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
 
InterCon - Automatizando Visual Regression Testing
InterCon - Automatizando Visual Regression TestingInterCon - Automatizando Visual Regression Testing
InterCon - Automatizando Visual Regression Testing
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
Application Insights - Monitore a sua aplicação em tempo real
Application Insights - Monitore a sua aplicação em tempo realApplication Insights - Monitore a sua aplicação em tempo real
Application Insights - Monitore a sua aplicação em tempo real
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o Karma
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Integração Contínua com Hudson, Selenium e Sonar
Integração Contínua com Hudson, Selenium e SonarIntegração Contínua com Hudson, Selenium e Sonar
Integração Contínua com Hudson, Selenium e Sonar
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitido
 
Automação de Teste para REST, Web e Mobile
Automação de Teste para REST, Web e MobileAutomação de Teste para REST, Web e Mobile
Automação de Teste para REST, Web e Mobile
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
 
WTM - Entrega Contínua
WTM - Entrega ContínuaWTM - Entrega Contínua
WTM - Entrega Contínua
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!
 
Testes em uma startup do mundo financeiro
Testes em uma startup do mundo financeiroTestes em uma startup do mundo financeiro
Testes em uma startup do mundo financeiro
 
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile TestingDevOps Summit Brasil - O que não te contaram sobre Agile Testing
DevOps Summit Brasil - O que não te contaram sobre Agile Testing
 
MTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression TestingMTC - Automatizando Visual Regression Testing
MTC - Automatizando Visual Regression Testing
 
A Importância do Teste Continuo
A Importância do Teste ContinuoA Importância do Teste Continuo
A Importância do Teste Continuo
 
Automação mobile Android - TDC
Automação mobile Android - TDCAutomação mobile Android - TDC
Automação mobile Android - TDC
 
Apenas um script de teste para iOS e Android
Apenas um script de teste para iOS e AndroidApenas um script de teste para iOS e Android
Apenas um script de teste para iOS e Android
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
Novidades sobre Testes de Unidade com Visual Studio 2012
Novidades sobre Testes de Unidade com Visual Studio 2012Novidades sobre Testes de Unidade com Visual Studio 2012
Novidades sobre Testes de Unidade com Visual Studio 2012
 

Semelhante a Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019

Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
Igor Abade
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
Adriano Bertucci
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Domingos Teruel
 

Semelhante a Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile - Capi Conf 2019 (20)

Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobileXamarin + TDD - Reagindo rápido à mudanças no mundo mobile
Xamarin + TDD - Reagindo rápido à mudanças no mundo mobile
 
Aplicativos Híbridos e Xamarin Test Cloud
Aplicativos Híbridos e Xamarin Test CloudAplicativos Híbridos e Xamarin Test Cloud
Aplicativos Híbridos e Xamarin Test Cloud
 
Aplicativos híbridos e Xamarin Test Cloud
Aplicativos híbridos e Xamarin Test CloudAplicativos híbridos e Xamarin Test Cloud
Aplicativos híbridos e Xamarin Test Cloud
 
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteiraTDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
TDC2016SP - Entrega Contínua com Xamarin: Monte sua esteira
 
Testes automatizados mobile - uma prova de conceito
Testes automatizados mobile - uma prova de conceitoTestes automatizados mobile - uma prova de conceito
Testes automatizados mobile - uma prova de conceito
 
Aplicativos Corporativos Cross Plataform com Xamarin & Azure Mobile Apps
Aplicativos Corporativos Cross Plataform com Xamarin & Azure Mobile AppsAplicativos Corporativos Cross Plataform com Xamarin & Azure Mobile Apps
Aplicativos Corporativos Cross Plataform com Xamarin & Azure Mobile Apps
 
Testes para dispositivos móveis
Testes para dispositivos móveisTestes para dispositivos móveis
Testes para dispositivos móveis
 
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile ServicesConstruindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Cultura de testes em times mobile
Cultura de testes em times mobileCultura de testes em times mobile
Cultura de testes em times mobile
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Xamarin em 7 minutos
Xamarin em 7 minutosXamarin em 7 minutos
Xamarin em 7 minutos
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairyCriando um ambiente real de distribuição de aplicativos usando TestFairy
Criando um ambiente real de distribuição de aplicativos usando TestFairy
 
Conheça a Plataforma Xamarin
Conheça a Plataforma XamarinConheça a Plataforma Xamarin
Conheça a Plataforma Xamarin
 
Testes automatizados de interface no Android
Testes automatizados de interface no AndroidTestes automatizados de interface no Android
Testes automatizados de interface no Android
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
Mobile apps com Xamarin e Azure Mobile Services - The Developers Conference P...
 

Mais de akamud

Mais de akamud (20)

.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
 
Hacktoberfest - Contribuindo com Open Source
Hacktoberfest  - Contribuindo com Open SourceHacktoberfest  - Contribuindo com Open Source
Hacktoberfest - Contribuindo com Open Source
 
Automatizando os testes da sua aplicação hoje
Automatizando os testes da sua aplicação hojeAutomatizando os testes da sua aplicação hoje
Automatizando os testes da sua aplicação hoje
 
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
Indo além do Enterprise: fazendo aplicativos para usuários finais com Xamarin...
 
.NET MAUI - O futuro do desenvolvimento de apps no .NET
.NET MAUI - O futuro do desenvolvimento de apps no .NET.NET MAUI - O futuro do desenvolvimento de apps no .NET
.NET MAUI - O futuro do desenvolvimento de apps no .NET
 
Azure DevOps + App Center: DevOps multi-staging para seu app
Azure DevOps + App Center: DevOps multi-staging para seu appAzure DevOps + App Center: DevOps multi-staging para seu app
Azure DevOps + App Center: DevOps multi-staging para seu app
 
O Futuro do .NET
O Futuro do .NETO Futuro do .NET
O Futuro do .NET
 
Interfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.FormsInterfaces reativas com ReactiveUI no Xamarin.Forms
Interfaces reativas com ReactiveUI no Xamarin.Forms
 
Mobile Development Simplified with Xamarin
Mobile Development Simplified with XamarinMobile Development Simplified with Xamarin
Mobile Development Simplified with Xamarin
 
Desenvolvimento cross-platform em C# com Xamarin - 2018
Desenvolvimento cross-platform em C# com Xamarin - 2018Desenvolvimento cross-platform em C# com Xamarin - 2018
Desenvolvimento cross-platform em C# com Xamarin - 2018
 
O que há de novo no Xamarin.Forms
O que há de novo no Xamarin.FormsO que há de novo no Xamarin.Forms
O que há de novo no Xamarin.Forms
 
Automatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlaneAutomatizando tudo no mundo mobile com fastlane
Automatizando tudo no mundo mobile com fastlane
 
Tornando o Xamarin.Forms ainda melhor com Prism
Tornando o Xamarin.Forms ainda melhor com PrismTornando o Xamarin.Forms ainda melhor com Prism
Tornando o Xamarin.Forms ainda melhor com Prism
 
Animações com Xamarin.Forms
Animações com Xamarin.FormsAnimações com Xamarin.Forms
Animações com Xamarin.Forms
 
Instrumentação completa com Visual Studio Mobile Center
Instrumentação completa com Visual Studio Mobile CenterInstrumentação completa com Visual Studio Mobile Center
Instrumentação completa com Visual Studio Mobile Center
 
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveisXamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
Xamarin Forms: O caminho para 100% de código compartilhado em aplicativos móveis
 
Instrumentação completa para sua aplicação Mobile com Visual Studio Mobile Ce...
Instrumentação completa para sua aplicação Mobile com Visual Studio Mobile Ce...Instrumentação completa para sua aplicação Mobile com Visual Studio Mobile Ce...
Instrumentação completa para sua aplicação Mobile com Visual Studio Mobile Ce...
 
Publiquei meu site e não funcionou, e agora?
Publiquei meu site e não funcionou, e agora?Publiquei meu site e não funcionou, e agora?
Publiquei meu site e não funcionou, e agora?
 
Aumentando reaproveitamento de código com MvvmCross
Aumentando reaproveitamento de código com MvvmCrossAumentando reaproveitamento de código com MvvmCross
Aumentando reaproveitamento de código com MvvmCross
 
Animation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom RenderersAnimation com Xamarin.Forms e Custom Renderers
Animation com Xamarin.Forms e Custom Renderers
 

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
  • 4. Downtime x Instalações -20% da base de usuários a cada 10 dias App fora do ar
  • 5.
  • 6. Feito em Java Somente Android Código de aprendiz Sem testes
  • 8. Downtime x Nota App fora do ar
  • 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
  • 10. Mais um probleminha Eu não controlo o backend desse app
  • 11. Soluções Tooling + DevOps Testes Automatizados C# + Xamarin SOLID, Patterns
  • 12.
  • 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
  • 16. Compartilhamento de código ● Código C# Compartilhado ● 100% de acesso às APIs Nativas ● Alta performance
  • 17. iOS APIs – 100% de cobertura C# MapKit UIKit iBeacon CoreGraphics CoreMotion System.Data System.Windows System.Numerics System.Core System.ServiceModel System.Net System System.IO System.Linq System.Xml
  • 18. Android APIs – 100% de cobertura C# Text-to-speech ActionBar Printing Framework Renderscript NFC System.Data System.Windows System.Numerics System.Core System.ServiceModel System.Net System System.IO System.Linq System.Xml
  • 19. Xamarin - Tradicional Windows C#Android C#iOS C# Shared C# Logic  3 Interfaces de Usuário Nativas  Código do App compartilhado
  • 20. Xamarin.Forms – Cross-platform UI Shared UI Code Shared C# Logic  UI Nativa compartilhada  Código do App compartilhado
  • 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
  • 23. Mas eu não faço ¯_(ツ)_/¯
  • 24. Por que não testamos?
  • 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
  • 26. Teste automatizado é código, se você sabe codar, você sabe testar
  • 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
  • 33. iOS e Android 500.000+ downloads Top 10 finanças Brasil Feito em C# com Xamarin +250 Testes 82% de cobertura de código
  • 34. Mas e o corujão com energético?
  • 35. Demo
  • 36. Links • https://github.com/akamud/KickassUI.Traveler • Repositório original da interface (Steven Thewissen) • Boas práticas para testes de aceitação com Xamarin
  • 37. Nós valorizamos o seu feedback! Por favor, envie o seu feedback para: http://bit.ly/capiconf- feedback