Xamarin UITest com
BDD
Cleiton Felipe de Moraes
AGENDA
1. Quem é o Cleiton?
2. Xamarin UITest
3. AAA (Arrange-Act-Assert pattern)
4. O que é REPL(Read-Eval-Print-Loop) e como utilizá-lo?
5. O que é BDD?
6. Specflow
7. Demos
8. Por onde começar?
9. Dúvidas
10. Referências
Quem sou eu
• Cleiton Felipe de Moraes
• Software Engineer na GFT
• +|- 10 anos de experiência em
desenvolvimento de software
• Sou um pai do Pedro (anjo azul),
casado, sorocabano que mora em
Curitiba e torce para o Cruzeiro
• Sou nerd e já fui graffiteiro e
skatista...
• Trabalho com desenvolvimento
desde 2009 e já trabalhei com
várias tecnologias como Java, PHP,
ASP Clássico e hoje sou focado na
plataforma .Net
(Web/Desktop/Mobile/Server) e
Azure e estudando GCP e AWS..
Framework de automação de testes de UI baseado no
Calabash, que permite
desenvolvedores/programadores escreverem e
executarem testes escritos em C# com Nunit para
validação de funcionalidades de app´s IOS e Android,
sejam elas nativas ou hibridas.
Xamarin UITest
AAA - Arrange-Act-Assert pattern
• Considere o setup
para o seu teste,
tudo que o teste
precisa para
executar deve ser
inicializado aqui
Arrange
• Neste passo
executamos as
ações do nosso
teste.
Act
• Neste momento
validamos tudo que
valide que o nosso
teste fez.
Assert
O que é REPL(Read-
Eval-Print-Loop) e
como utilizá-lo?
•É a ferramenta que vai nos auxiliar a escrever
os testes. Com ela conseguimos analisar a
árvore de componentes que temos em cada
parte da app e realizar a escrita do teste já
vendo a sua execução.
BDD - Specflow
O que é BDD?
Seu Projeto
Compete ao “Negócio”
Funcionalidades
Cenário
Passos
Compete ao “TI”
Step Definitions
Codificação
Bibliotecas de Automação
Specflow
• “Use SpecFlow to define, manage and execute
automated acceptance tests from business-
readable specifications. SpecFlow acceptance
tests follow the BDD paradigm: define
specifications using examples understandable
to business users as well as developers and
testers. SpecFlow integrates withVisual
Studio, but can be also used from the
command line (e.g. on a build server).”
Demos
Demo
Xamarin UITest no macOS
Demo
Xamarin UITest noWindows
Xamarin UITest + Specflow
Demo
REPL() in Live
App in Live
Dúvidas
Por onde começar?
• Site Specflow (http://www.specflow.org/)
• Xamarin (https://docs.microsoft.com/en-
us/learn/browse/?products=xamarin)
• UITest (https://docs.microsoft.com/en-us/appcenter/test-cloud/uitest/)
• BDD (https://dannorth.net/introducing-bdd/ /
https://martinfowler.com/bliki/GivenWhenThen.html )
Referências
• Site do Martin Fowler (https://martinfowler.com/)
• Site do Robert C.Martin “Uncle Bob”
(https://blog.cleancoder.com/)
• E muito mais...
• Pluralsight: Curso Clean Architecture – Principle and
Practices
• Microsoft Learn (https://docs.microsoft.com/pt-br/learn/)
• Microsoft Docs (https://docs.microsoft.com/pt-
br/xamarin/#pivot=get-started&panel=get-started1)
• Blog Xamarin (https://devblogs.microsoft.com/xamarin/)
• Eu  (https://medium.com/@cleiton_felipe/
https://github.com/cleitonfelipe/
https://twitter.com/cleiton_felipe)
• Code Monkey Night
(https://www.youtube.com/channel/UCFaQBRaoHrAxcG
oeY8E5jvQ)
Contato
Cleiton Felipe de Moraes
Software Engineer
Cleiton.De-Moraes@gft.com
Omehe.Cleiton@Hotmail.com
https://github.com/cleitonfelipe /
https://medium.com/@cleiton_felipe

Xamarin UI Test + BDD Specflow

  • 1.
  • 2.
    AGENDA 1. Quem éo Cleiton? 2. Xamarin UITest 3. AAA (Arrange-Act-Assert pattern) 4. O que é REPL(Read-Eval-Print-Loop) e como utilizá-lo? 5. O que é BDD? 6. Specflow 7. Demos 8. Por onde começar? 9. Dúvidas 10. Referências
  • 3.
    Quem sou eu •Cleiton Felipe de Moraes • Software Engineer na GFT • +|- 10 anos de experiência em desenvolvimento de software • Sou um pai do Pedro (anjo azul), casado, sorocabano que mora em Curitiba e torce para o Cruzeiro • Sou nerd e já fui graffiteiro e skatista... • Trabalho com desenvolvimento desde 2009 e já trabalhei com várias tecnologias como Java, PHP, ASP Clássico e hoje sou focado na plataforma .Net (Web/Desktop/Mobile/Server) e Azure e estudando GCP e AWS..
  • 4.
    Framework de automaçãode testes de UI baseado no Calabash, que permite desenvolvedores/programadores escreverem e executarem testes escritos em C# com Nunit para validação de funcionalidades de app´s IOS e Android, sejam elas nativas ou hibridas. Xamarin UITest
  • 5.
    AAA - Arrange-Act-Assertpattern • Considere o setup para o seu teste, tudo que o teste precisa para executar deve ser inicializado aqui Arrange • Neste passo executamos as ações do nosso teste. Act • Neste momento validamos tudo que valide que o nosso teste fez. Assert
  • 6.
    O que éREPL(Read- Eval-Print-Loop) e como utilizá-lo? •É a ferramenta que vai nos auxiliar a escrever os testes. Com ela conseguimos analisar a árvore de componentes que temos em cada parte da app e realizar a escrita do teste já vendo a sua execução.
  • 7.
  • 8.
    O que éBDD? Seu Projeto Compete ao “Negócio” Funcionalidades Cenário Passos Compete ao “TI” Step Definitions Codificação Bibliotecas de Automação
  • 9.
    Specflow • “Use SpecFlowto define, manage and execute automated acceptance tests from business- readable specifications. SpecFlow acceptance tests follow the BDD paradigm: define specifications using examples understandable to business users as well as developers and testers. SpecFlow integrates withVisual Studio, but can be also used from the command line (e.g. on a build server).”
  • 10.
  • 11.
  • 13.
  • 15.
  • 16.
  • 17.
  • 18.
    Por onde começar? •Site Specflow (http://www.specflow.org/) • Xamarin (https://docs.microsoft.com/en- us/learn/browse/?products=xamarin) • UITest (https://docs.microsoft.com/en-us/appcenter/test-cloud/uitest/) • BDD (https://dannorth.net/introducing-bdd/ / https://martinfowler.com/bliki/GivenWhenThen.html )
  • 19.
    Referências • Site doMartin Fowler (https://martinfowler.com/) • Site do Robert C.Martin “Uncle Bob” (https://blog.cleancoder.com/) • E muito mais... • Pluralsight: Curso Clean Architecture – Principle and Practices • Microsoft Learn (https://docs.microsoft.com/pt-br/learn/) • Microsoft Docs (https://docs.microsoft.com/pt- br/xamarin/#pivot=get-started&panel=get-started1) • Blog Xamarin (https://devblogs.microsoft.com/xamarin/) • Eu  (https://medium.com/@cleiton_felipe/ https://github.com/cleitonfelipe/ https://twitter.com/cleiton_felipe) • Code Monkey Night (https://www.youtube.com/channel/UCFaQBRaoHrAxcG oeY8E5jvQ)
  • 20.
    Contato Cleiton Felipe deMoraes Software Engineer Cleiton.De-Moraes@gft.com Omehe.Cleiton@Hotmail.com https://github.com/cleitonfelipe / https://medium.com/@cleiton_felipe

Notas do Editor

  • #8 Behavior Driven Development (BDD ou ainda uma tradução Desenvolvimento Guiado por Comportamento) é uma técnica de desenvolvimento Ágil que encoraja colaboração entre desenvolvedores, setores de qualidade e pessoas não-técnicas ou de negócios num projeto de software. Foi originalmente concebido em 2003, por Dan North [1] como uma resposta à Test Driven Development (Desenvolvimento Guiado por Testes), e tem se expandido bastante nos últimos anos.[2] Os focos do BDD são a linguagem e as interações usadas no processo de desenvolvimento de software. Desenvolvedores usam sua língua nativa em combinação com a linguagem ubíqua (ubiquitous language), que lhes permite concentrar nas razões pelas quais o código deve ser criado, e não em detalhes técnicos, além de minimizar traduções entre a linguagem técnica na qual o código é escrito e outras linguagens de domínio, usuários, clientes, gerência do projeto, etc. Dan North criou o primeiro framework de BDD, JBehave[1], em Java, seguido de um framework em Ruby a nível de história chamado RBehave[1], o qual foi depois incorporado ao projeto RSpec. Ele também trabalhou com David Chelimsky, Aslak Hellesøy e outros para desenvolver o framework RSpec e também escrever "The RSpec Book: Behaviour Driven Development with RSpec, Cucumber, and Friends". O primeiro framework baseado em histórias no RSpec foi posteriormente substituído pelo Cucumber[3], desenvolvido principalmente por Alask Hellesøy. Referencia: https://pt.wikipedia.org/wiki/Behavior_Driven_Development BDD está fundamentada em três princípios simples: Negócio e Tecnologia deveriam “falar” sobre um sistema da mesma forma; Qualquer sistema deveria ter um valor identificável e verificável para o “negócio”; Análise, design e planejamento precoce tem, sempre, retorno questionável.
  • #9 BDD expressa mais a parte de negócio do que tecnologia Compete ao “negócio” a definição de: Features – representam, em alto nível, os principais características do sistema – correspondem a uma descrição resumida dos “valores” que estamos entregando (ex: autenticação de usuários, cadastro de clientes, cálculo de imposto, emissão de nota); Cenários – descrições de “casos de uso”, com pré-requisitos, ações e resultado esperado (ex: cadastro de novo usuário, usuário esqueceu senha, etc.) Passos/Etapas (steps) – interações entre agente externo (usuário ou sistema) e resultado esperado para um dado cenário. Compete ao “TI”: Definições para etapas (Step definitions) – correspondências, usando um framework de testes, entre testes de unidade e etapas definidas pelo negócio; Código – implementação efetiva de código para atender as definições do negócio; Biblioteca de automação (opcional) – para simular, caso necessário, ações de um usuário na interface do sistema (WatiN, por exemplo). BDD garante “documentação viva” BDD associa os benefícios de uma documentação formal, escrita e mantida pelo “negócio”, com testes de unidade que “demonstram” que essa documentação é efetivamente válida. Na prática, isso garante que a documentação deixa de ser um registro estático, que se converte em algo gradualmente ultrapassado, em um artefato “vivo” que reflete constantemente o estado atual de um projeto.
  • #10 Ref: http://www.specflow.org/ O Specflow é o Cucumber for .net quem vem do Ruby já conhece o cucumber e o specflow tem a mesmo função que é disponibilizar um framework que facilita a vida dos desenvolvedores testes e pessoas de negócios para uma comunicação mais simples em tempo de desenvolvimento da aplicação. Trazendo com sigo o tipo de linguagem chamado Gherkin