O documento apresenta uma introdução ao Behavior Driven Development (BDD) e à ferramenta Demoiselle Behave. Explica os conceitos fundamentais do BDD como a escrita de histórias de usuário e cenários em linguagem Gherkin. Também descreve a arquitetura e funcionalidades do Demoiselle Behave, como o parser de histórias e reuso de cenários.
Treinamento da ferramenta de automação de testes de software Demoiselle Behave (http://demoiselle.github.io/behave/).
Parte 2: Mostra como realizar testes automáticos em BDD para aplicações web
O material de treinamento pode ser encontrado nas instruções a Parte 1 (www.slideshare.net/vandersonsilva9615/treinamento-demoiselle-behave-parte-01)
Treinamento da ferramenta de automação de testes de software Demoiselle Behave (http://demoiselle.github.io/behave/).
Parte 3: Mostra como realizar testes automáticos em BDD para aplicações Java Desktop
O material de treinamento pode ser encontrado nas instruções a Parte 1 (www.slideshare.net/vandersonsilva9615/treinamento-demoiselle-behave-parte-01)
Treinamento da ferramenta de automação de testes de software Demoiselle Behave (http://demoiselle.github.io/behave/).
Parte 4: Mostra como realizar integração de resultados com outras ferramentas de gestão de testes.
O material de treinamento pode ser encontrado nas instruções a Parte 1 (www.slideshare.net/vandersonsilva9615/treinamento-demoiselle-behave-parte-01)
Curso completo com 50% de desconto: https://bit.ly/2EDTlbH
Slide utilizado na ministração do curso Automatizando Testes de Software Com Selenium - Básico
Treinamento da ferramenta de automação de testes de software Demoiselle Behave (http://demoiselle.github.io/behave/).
Parte 2: Mostra como realizar testes automáticos em BDD para aplicações web
O material de treinamento pode ser encontrado nas instruções a Parte 1 (www.slideshare.net/vandersonsilva9615/treinamento-demoiselle-behave-parte-01)
Treinamento da ferramenta de automação de testes de software Demoiselle Behave (http://demoiselle.github.io/behave/).
Parte 3: Mostra como realizar testes automáticos em BDD para aplicações Java Desktop
O material de treinamento pode ser encontrado nas instruções a Parte 1 (www.slideshare.net/vandersonsilva9615/treinamento-demoiselle-behave-parte-01)
Treinamento da ferramenta de automação de testes de software Demoiselle Behave (http://demoiselle.github.io/behave/).
Parte 4: Mostra como realizar integração de resultados com outras ferramentas de gestão de testes.
O material de treinamento pode ser encontrado nas instruções a Parte 1 (www.slideshare.net/vandersonsilva9615/treinamento-demoiselle-behave-parte-01)
Curso completo com 50% de desconto: https://bit.ly/2EDTlbH
Slide utilizado na ministração do curso Automatizando Testes de Software Com Selenium - Básico
TDD - Algumas lições aprendidas com o livro GOOSFábio Miranda
- TDD: Red – Green – Refactor
- Testes de Unidade x Testes de Integração
- Ports and Adapters Pattern
- Business Domain versus Technical Domain
- Testes de Unidade com JMock
- Coverage Tests
- Logging Tests
Apresenta um manual de sobrevivência para uso do terminal e mostra como instalar as ferramentas para desenvolvimento de aplicações em Java em Windows, macOS e Linux.
Mostra como criar e compilar o primeiro programa em Java.
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/lottie-api-para-animacoes-no-android
Neste conjunto de slides vamos ao estudo da Lottie API, biblioteca criada pelos engenheiros do AirBnb com o objetivo de processar com maior eficiência e eficácia animações em sistemas mobile e Web.
Aqui teremos foco na Lottie API para apps Android.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=LOTTIE_ANDROID_API&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
No decorrer dos anos o teste de software tem evoluído e com isto
encontramos diversas ferramentas nos dias de hoje que nos ajudam a
entregar um serviço mais maduro e consolidado, uma destas ferramentas
é o Teste de Unidade (PHPUnit), na conversa o palestrante apresenta
alguns recursos para se utilizar junto com o PHPUnit e alguns exemplos
do uso do aplicativo.
Um estudo comparativo entre frameworks PHP, analisando as diferentes abordagens, vantagens e desvantagens de cada um deles, a fim de entender em que situações cada um deles é mais adequado para uma aplicação.
Leitor de Códigos no Android com Barcode Scanner API - ZXingVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/leitor-de-codigos-no-android-com-barcode-scanner-api-zxing
Neste conjunto de slides vamos, passo a passo, ao estudo completo da biblioteca Barcode Scanner API para assim utilizar de maneira simples, mas robusta, o projeto ZXing, em aplicativos Android, na leitura de simbologias de códigos de barras.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=BAR_CODE_LEITOR&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
SelectionTracker Para Seleção de Itens no RecyclerView AndroidVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/selectiontracker-para-selecao-de-itens-no-recyclerview-android
Neste conjunto de slides vamos, passo a passo, ao estudo da biblioteca SelectionTracker, biblioteca que amplia a capacidade do RecyclerView, permitindo que seja possível a seleção de itens, incluindo a persistência da seleção em caso de reconstrução de atividade.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Live Templates Para Otimização de Tempo no Android StudioVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/live-templates-para-otimizacao-de-tempo-no-android-studio
Neste conjunto de slides vamos ao estudo de uma funcionalidade do Android Studio IDE que permite aos desenvolvedores Android o aumento de produtividade.
Mais precisamente, estaremos estudando: como utilizar os Live Templates. Funcionalidade comum em todos os IDEs da IntelliJ IDEA.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=LIVE_TEMPLATES&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Data Binding Para Vinculo de Dados na UI AndroidVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/data-binding-para-vinculo-de-dados-na-ui-android
Neste conjunto de slides vamos ao estudo e aplicação da biblioteca Android Data Binding, popular biblioteca que ajuda a diminuir o código boilerplate de vinculo de dados e métodos à interface do usuário.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=DATA_BINDING&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Palestra sobre Certificação Zend Framework apresentada online via Google Hang Out para o projeto ProPHP do PHP-PB (www.php-pb.net) no dia 09 de Março de 2013.
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/android-studio-instalacao-configuracao-e-otimizacao
Neste conjunto de slides vamos passo a passo estudar o Android Studio. Sua origem, o que era utilizado anteriormente, a instalação e configuração deste IDE, otimização para máquinas menos robustas e um primeiro projeto Android.
➙ Para receber os conteúdos do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Aqui são apresentados as técnicas do framework JUnit
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
TDD - Algumas lições aprendidas com o livro GOOSFábio Miranda
- TDD: Red – Green – Refactor
- Testes de Unidade x Testes de Integração
- Ports and Adapters Pattern
- Business Domain versus Technical Domain
- Testes de Unidade com JMock
- Coverage Tests
- Logging Tests
Apresenta um manual de sobrevivência para uso do terminal e mostra como instalar as ferramentas para desenvolvimento de aplicações em Java em Windows, macOS e Linux.
Mostra como criar e compilar o primeiro programa em Java.
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/lottie-api-para-animacoes-no-android
Neste conjunto de slides vamos ao estudo da Lottie API, biblioteca criada pelos engenheiros do AirBnb com o objetivo de processar com maior eficiência e eficácia animações em sistemas mobile e Web.
Aqui teremos foco na Lottie API para apps Android.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=LOTTIE_ANDROID_API&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
No decorrer dos anos o teste de software tem evoluído e com isto
encontramos diversas ferramentas nos dias de hoje que nos ajudam a
entregar um serviço mais maduro e consolidado, uma destas ferramentas
é o Teste de Unidade (PHPUnit), na conversa o palestrante apresenta
alguns recursos para se utilizar junto com o PHPUnit e alguns exemplos
do uso do aplicativo.
Um estudo comparativo entre frameworks PHP, analisando as diferentes abordagens, vantagens e desvantagens de cada um deles, a fim de entender em que situações cada um deles é mais adequado para uma aplicação.
Leitor de Códigos no Android com Barcode Scanner API - ZXingVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/leitor-de-codigos-no-android-com-barcode-scanner-api-zxing
Neste conjunto de slides vamos, passo a passo, ao estudo completo da biblioteca Barcode Scanner API para assim utilizar de maneira simples, mas robusta, o projeto ZXing, em aplicativos Android, na leitura de simbologias de códigos de barras.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=BAR_CODE_LEITOR&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
SelectionTracker Para Seleção de Itens no RecyclerView AndroidVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/selectiontracker-para-selecao-de-itens-no-recyclerview-android
Neste conjunto de slides vamos, passo a passo, ao estudo da biblioteca SelectionTracker, biblioteca que amplia a capacidade do RecyclerView, permitindo que seja possível a seleção de itens, incluindo a persistência da seleção em caso de reconstrução de atividade.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Live Templates Para Otimização de Tempo no Android StudioVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/live-templates-para-otimizacao-de-tempo-no-android-studio
Neste conjunto de slides vamos ao estudo de uma funcionalidade do Android Studio IDE que permite aos desenvolvedores Android o aumento de produtividade.
Mais precisamente, estaremos estudando: como utilizar os Live Templates. Funcionalidade comum em todos os IDEs da IntelliJ IDEA.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=LIVE_TEMPLATES&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Data Binding Para Vinculo de Dados na UI AndroidVinícius Thiengo
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/data-binding-para-vinculo-de-dados-na-ui-android
Neste conjunto de slides vamos ao estudo e aplicação da biblioteca Android Data Binding, popular biblioteca que ajuda a diminuir o código boilerplate de vinculo de dados e métodos à interface do usuário.
➙ Para receber o conteúdo do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?couponCode=DATA_BINDING&persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Palestra sobre Certificação Zend Framework apresentada online via Google Hang Out para o projeto ProPHP do PHP-PB (www.php-pb.net) no dia 09 de Março de 2013.
➙ Conteúdo completo, texto e vídeo, em: https://www.thiengo.com.br/android-studio-instalacao-configuracao-e-otimizacao
Neste conjunto de slides vamos passo a passo estudar o Android Studio. Sua origem, o que era utilizado anteriormente, a instalação e configuração deste IDE, otimização para máquinas menos robustas e um primeiro projeto Android.
➙ Para receber os conteúdos do blog em primeira mão, assine a lista de emails em: http://www.thiengo.com.br
Abraço.
▶ Treinamento oficial:
➙ Prototipagem Profissional de Aplicativos Android:
↳ https://www.udemy.com/android-prototipagem-profissional-de-aplicativos/?persist_locale&locale=pt_BR
▶ Livros oficiais:
➙ Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia:
↳ https://www.thiengo.com.br/livro-desenvolvedor-kotlin-android
➙ Receitas Para Desenvolvedores Android:
↳ https://www.thiengo.com.br/livro-receitas-para-desenvolvedores-android
➙ Refatorando Para Programas Limpos:
↳ https://www.thiengo.com.br/livro-refatorando-para-programas-limpos
▶ Redes:
➙ Udemy: https://www.udemy.com/user/vinicius-thiengo/?persist_locale&locale=pt_BR
➙ YouTube: https://www.youtube.com/user/thiengoCalopsita
➙ Facebook: https://www.facebook.com/thiengoCalopsita
➙ LinkedIn: https://www.linkedin.com/in/vin%C3%ADcius-thiengo-5179b180/
➙ GitHub: https://github.com/viniciusthiengo
➙ Twitter: https://twitter.com/thiengoCalops
➙ Google Plus: https://plus.google.com/+ThiengoCalopsita
▶ Blog App:
➙ https://play.google.com/store/apps/details?id=br.thiengocalopsita&hl=pt_BR
Aqui são apresentados as técnicas do framework JUnit
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
O Visual Studio Summit 2016 é o maior evento sobre Visual Studio realizado no Brasil que está chegando a 5ª edição voltado para desenvolvedores de software que tem o objetivo de promover networking, apresentar tendências e principais estratégias atuais ligadas ao desenvolvimento de software na plataforma Microsoft usando Visual Studio, Azure e mobilidade. Durante o Keynote Ramon Durães abordou o tema transformação digital e DevOps.
Este trabalho tem por objetivo apoiar o processo de desenvolvimento da VT. A finalidade desta VT é propiciar o acesso a conhecimentos sobre Avaliação de Produto de Software. Esta avaliação está de acordo com as normas: ISO/IEC 9126-1 (NBR ISO/IEC 13596 - Modelo de qualidade de produto de software), ISO/IEC 9126-3 (Métricas Internas) e ISO/IEC 14598.
Introdução à Agile de uma perspectiva de desenvolvimento/desenvolvedor --- apresentada ao pessoal de dev online da Dell em nosso grupo de estudos/dojo de dev.
Comentários e sugestões são muito bem vindas! Ainda, confira o nosso blog:
http://delldev.posterous.com/
E saiba mais sobre o grupo:
http://delldev.posterous.com/nasce-o-grupo-de-dev
O GCODE é uma plataforma construída sobre a linguagem JAVA que pode ser utilizada para a criação de ferramentas de geração de qualquer tipo de código, JAVA, .NET, C++, XML, HTML, etc...
2. Módulo 1 – Histórias 2
IntroduçãoIntrodução
Demoiselle BehaveDemoiselle Behave
O que é?
É um framework de integração para técnicas de Desenvolvimento
Orientadas a Comportamento – Behaviour Driven Development (BDD).
É mais que uma ferramenta BDD:
Abstração para ferramentas de BDD;
Abstração para ferramentas de automação de testes;
Abstração para ferramentas de gestão de testes.
É um subprojeto do Framework Demoiselle:
(http://www.frameworkdemoiselle.gov.br/).
3. Módulo 1 – Histórias 3
Visão GeralVisão Geral
6) acessar sistema
5) selecionar motor de execução
1) iniciar teste
3) ler histórias
4) ler mapeamentos de tela
7) registrar resultados
2) selecionar motor BDD
Alvo doAlvo do
Módulo 1Módulo 1
4. Módulo 1 – Histórias 4
IntroduçãoIntrodução
BDD - Behaviour Driven DevelopmentBDD - Behaviour Driven Development
Processo de desenvolvimento de software criado por Dan
North que combina técnicas e princípios do Test Driver
Development – TDD.
Problemas encontrados no TDD:
Onde começa o processo?
O que testar e o que não testar?
O que chamamos de teste?
Como analisar falhas?
5. Módulo 1 – Histórias 5
IntroduçãoIntrodução
BDDBDD
Essência:
Repensar a abordagem de testes unitários e de aceitação:
Testes unitários iniciados com o prefixo should.
Testes de aceitação escritos como histórias de usuários.
Como um [papel] Eu quero [recurso], para que [benefícios]
Dado [contexto inicial], quando [evento ocorre],
então [garantir alguns resultados]
Os critérios de aceitação escritos como cenários:
6. Módulo 1 – Histórias 6
IntroduçãoIntrodução
BDDBDD
A partir destes princípios, North propos um framework BDD
para um ambiente de colaboração entre desenvolvedores e
outros papéis não técnicos, de um projeto de software.
Durante o “Agile specifications, BDD and Testing eXchange”
em 2009 Dan North definiu:
BDD is a second-generation, outside-in, pull-based,BDD is a second-generation, outside-in, pull-based,
multiple-stakeholder, multiple-scale, high-automation,multiple-stakeholder, multiple-scale, high-automation,
agile methodology. It describes a cycle of interactionsagile methodology. It describes a cycle of interactions
with well-defined outputs, resulting in the deliverywith well-defined outputs, resulting in the delivery
of working, tested software that matters.of working, tested software that matters.
7. Módulo 1 – Histórias 7
IntroduçãoIntrodução
BDDBDD
Second Generation
Processo ágil que auxilia o time a entregar software de alta qualidade,
respondendo questões até então em aberto pelos processos ágeis
iniciais, tais como documentação e testes.
Outside-in and pull-based
Permite que o software seja construído com foco nos resultados
esperados do sistema, assegurando que estes resultados sejam
alcançados.
Possível pela colaboração das especificações de forma ilustrativa.
As histórias são criadas apenas quando necessárias.
8. Módulo 1 – Histórias 8
IntroduçãoIntrodução
BDDBDD
Multiple-stakeholder
BDD ajuda a eliminar a ideia de um usuário “sem forma” reconhecendo
que diferentes grupos de pessoas serão afetadas com o software de
diferentes maneiras.
Na Gestão de Qualidade de Software, Gerald Weinberg escreveu:
"Qualidade é um valor para uma pessoa”.
BDD permite entender e definir a qualidade, especificando para quais
pessoas o software trará algum valor e quão necessário será para elas.
Agile
BDD funciona melhor com iterações curtas de trabalho, onde o time
especifica, implementa e entrega pequenas partes do software.
Requer equipes multifuncionais para colaborar com as especificações e
testes.
9. Módulo 1 – Histórias 9
IntroduçãoIntrodução
BDDBDD
High-automation
Quando a qualidade da solução é definida, o time precisa verificar as
funcionalidades do sistema com frequência, comparando-as com os
resultados esperados.
Para fazer esta verificação eficaz, ele tem de ser automatizado.
BDD depende fortemente de automação e especificações executáveis.
A automação da definição BDD no nível mais alto é feita com uso de
ferramentas como o JBehave.
10. Módulo 1 – Histórias 10
IntroduçãoIntrodução
Especificação de ComportamentoEspecificação de Comportamento
Um dos grandes riscos na construção de um software é não
entender exatamente o que ele deve fazer.
Uma alternativa para reduzir essa dificuldade é fazer uso de
exemplos concretos para ilustrar o que se deseja do software.
Cenários de uso são mais eficientes na comunicação do que
descrições, por mais detalhadas que sejam.
Utilizar exemplos reais para descrever o comportamento
desejado de um sistema, nos mantém conectados com a visão
dos nossos stakeholders.
11. Módulo 1 – Histórias 11
IntroduçãoIntrodução
Especificação de ComportamentoEspecificação de Comportamento
Quando nos comunicamos usando cenários de uso reais
conseguimos fazer que nossos clientes “visualizem” a solução
em uso.
Dessa forma, conseguimos obter feedbacks úteis e, até
algumas boas ideias, antes de escrever qualquer linha de
código.
12. Módulo 1 – Histórias 12
IntroduçãoIntrodução
Linguagem GherkinLinguagem Gherkin
É uma “Business Readable Domain Specific Language
(DSL)”. Uma linguagem simples para especificação de domínio
de negócio.
É uma linguagem semiformal para construção de testes que
avaliam o comportamento da aplicação.
Permite a colaboração de múltiplos atores para a
especificação do software.
“That said, I do think that the greatest potential benefit
of DSLs comes when business people participate
directly in the writing of the DSL code” Martin Fowler
“That said, I do think that the greatest potential benefit
of DSLs comes when business people participate
directly in the writing of the DSL code” Martin Fowler
13. Módulo 1 – Histórias 13
IntroduçãoIntrodução
Especificação FormalEspecificação Formal Especificação FormalEspecificação Formal
Funcionalidade: Acessa ao Sistema
Cenário: Acessa sistema com usuário válido
Dado que vou para a tela "Tela de Login"
Quando informo "joao" no campo "Usuário"
E informo "123" no campo "Campo Senha"
Quando clico em "Entrar"
Então estou autenticado
Especificação TestávelEspecificação Testável
transcrição
WebDriver driver = new FirefoxDriver();
driver.get("http://localhost:8080/treino/");
WebElement login =
driver.findElement(By.xpath("(//input[contai
ns(@id, 'formLogin')][contains(@type,
'text')])"));
login.clear();
login.sendKeys("joao");
WebElement senha =
driver.findElement(By.xpath("(//input[contai
ns(@id, 'formLogin')][contains(@type,
'password')])"));
senha.sendKeys("123");
WebElement botaoOk =
driver.findElement(By.xpath("(//button[conta
ins(@type, 'submit')])"));
botaoOk.click();
Linguagem de ProgramaçãoLinguagem de Programação
transcrição
14. Módulo 1 – Histórias 14
IntroduçãoIntrodução
WebDriver driver = new FirefoxDriver();
driver.get("http://localhost:8080/treino/");
WebElement login =
driver.findElement(By.xpath("(//input[contai
ns(@id, 'formLogin')][contains(@type,
'text')])"));
login.click();
login.clear();
login.sendKeys("joao");
WebElement senha =
driver.findElement(By.xpath("(//input[contai
ns(@id, 'formLogin')][contains(@type,
'password')])"));
senha.clear();
senha.sendKeys("123");
WebElement botaoOk =
driver.findElement(By.xpath("(//button[conta
ins(@type, 'submit')])"));
botaoOk.click();
Funcionalidade: Acessa ao Sistema
Cenário: Acessa sistema com usuário válido
Dado que vou para a tela "Tela de Login"
Quando informo "joao" no campo "Usuário"
E informo "123" no campo "Campo Senha"
Quando clico em "Entrar"
Então estou autenticado
BenefíciosBenefícios
CustoCusto
ManutençãoManutenção
AprendizagemAprendizagem
ProdutividadeProdutividade
15. Módulo 1 – Histórias 15
IntroduçãoIntrodução
WebDriver driver = new FirefoxDriver();
driver.get("http://localhost:8080/treino/");
WebElement login =
driver.findElement(By.xpath("(//input[contai
ns(@id, 'formLogin')][contains(@type,
'text')])"));
login.click();
login.clear();
login.sendKeys("joao");
WebElement senha =
driver.findElement(By.xpath("(//input[contai
ns(@id, 'formLogin')][contains(@type,
'password')])"));
senha.clear();
senha.sendKeys("123");
WebElement botaoOk =
driver.findElement(By.xpath("(//button[conta
ins(@type, 'submit')])"));
botaoOk.click();
Funcionalidade: Acessa ao Sistema
Cenário: Acessa sistema com usuário válido
Dado que vou para a tela "Tela de Login"
Quando informo "joao" no campo "Usuário"
E informo "123" no campo "Campo Senha"
Quando clico em "Entrar"
Então estou autenticado
BenefíciosBenefícios
ColaboraçãoColaboração
16. Módulo 1 – Histórias 16
IntroduçãoIntrodução
Linguagem EstruturaLinguagem Estrutura
Dado:
Descreve uma situação
“Dado que um cliente desistiu da compra”
Quando:
Descreve uma certa ação
“Quando solicito a exclusão de um produto”
Então:
Descreve os resultados esperados
“Então o sistema apresentará uma mensagem de erro”
E:
Repete o último termo
“Então a lista de usuários é apresentada”
“E uma mensagem é apresentada”
18. Módulo 1 – Histórias 18
IntroduçãoIntrodução
Arquitetura dbehaveArquitetura dbehave
Parser
Camada responsável pelo carregamento das histórias.
Usa como implementação de referência a linguagem Gherkin e o
framework Jbehave.
Pode ser extensível para outras linguagens.
Fornece o recurso para Reuso de Histórias. Parser
TECNOLOGIAS
JBehave
Concordion
Cucumber
19. Módulo 1 – Histórias 19
IntroduçãoIntrodução
Arquitetura dbehaveArquitetura dbehave
Parser – Reuso de Histórias
Funcionalidade: Acesso ao Sistema
Como um: operador do sistema
Eu quero: ser autenticado por meio de senha
De modo que: o acesso ao sistema seja dado apenas aos operadores
Cadastrados
Cenário: Acessar o sistema com o usuário "{usuário}" e senha "{senha}"
Dado que vou para a tela "Tela de Login"
Quando informo "{usuário}" no campo "Campo Usuário"
E informo "{senha}" no campo "Campo Senha"
Quando clico em "Entrar"
Então será exibido "Seja bem vindo"
Cenário: Acessar o Sistema XPTO
Acessar o sistema com o usuário "06762344887" e senha "188542"
20. Módulo 1 – Histórias 20
Exercício 1Exercício 1
ObjetivosObjetivos
Construir uma solução de Controle de Estoque utilizando a
técnica de BDD.
Criar as histórias do sistema utilizando os termos: Dado,
Quando e Então.
Criar um projeto utilizando os modelos de projeto do
Demoiselle Behave.
Entender a técnica de reuso de cenários.
21. Módulo 1 – Histórias 21
Exercício 1Exercício 1
Configuração do seu AmbienteConfiguração do seu Ambiente
Espera-se que o ambiente de treinamento contenha os
seguintes softwares instalados:
Software Versão Objetivo Site
Compilador Java
(JDK)
1.6 ou
superior
Compilação dos projetos http://www.oracle.com/technetwork/java/javase
/downloads/index.html
Eclipse IDE for Java
EE Developers
Luna IDE para desenvolvimento
dos projetos
https://www.eclipse.org/downloads/packages/e
clipse-standard-432/keplersr2
JBehave Eclipse
Plugin
1.0.0.201
40605-
0717
Integração com projetos
Maven
http://jbehave.org/eclipse-integration.html
Navegador Firefox 17 ou
superior
Navegador padrão para os
exercícios
https://www.mozilla.org/pt-BR/firefox/
Navegador Google
Chrome
33 ou
superior
Navegador para o exercício
do módulo 2
http://www.google.com/intl/pt-
BR/chrome/browser/
22. Módulo 1 – Histórias 22
Exercício 1Exercício 1
Dúvidas?Dúvidas?
Caso encontre algum problema ou dificuldade durante seu
treinamento abra uma questão no GitHub:
https://github.com/demoiselle/behave/issues
Agradecemos seu feedback!Agradecemos seu feedback!
23. Módulo 1 – Histórias 23
Exercício 1Exercício 1
Material para DownloadMaterial para Download
http://sourceforge.net/projects/demoiselle/files/tools/behave/
Arquivo com os trechos
de código para realização
dos exercícios
Aplicação de treinamento
para realizar os testes
sugeridos pelos exercícios
24. Módulo 1 – Histórias 24
Exercício 1Exercício 1
Configuração dos Arquétipos do DemoiselleConfiguração dos Arquétipos do Demoiselle
Abra o eclipse.
Acione o menu:
Window → Preferences → Maven → Archetypes
Botão: “Add Remote Catalog...”
Informe na tela com o título “Remote Archetype Catalog”:
Catalog File:
http://demoiselle.sourceforge.net/repository/archetype-catalog.xml
Description: Demoiselle Behave
Confirme e feche as janelas de preferências do Window
25. Módulo 1 – Histórias 25
Exercício 1Exercício 1
Configuração dos Snippets do TreinamentoConfiguração dos Snippets do Treinamento
Os snippets são estruturas de texto pré-definidas utilizadas
para agilizar a implementação de alguns trechos de código ao
longo de todos os laboratórios.
26. Módulo 1 – Histórias 26
Exercício 1Exercício 1
Configuração dos Snippets do TreinamentoConfiguração dos Snippets do Treinamento
Abra a janela de Snippets por meio do menu:
Window → Show View → Other... → General → Snippets:
Clique com o botão direito sobre o Snippet, selecione o menu
“Customize...”. Na sequencia clique no botão Import e importe
o arquivo snippets-exercicios.xml, localizado no material do
treinamento.
27. Módulo 1 – Histórias 27
Exercício 1Exercício 1
Configuração Plugin JBehaveConfiguração Plugin JBehave
Para que os arquivos de histórias tenham o recurso de
autocompletar configure o plugin do JBehave:
Menu: Window → Preferences → JBehave → Project Settings
Altere a língua para português: pt
28. Módulo 1 – Histórias 28
HistóriasHistórias
Criando Projeto 01Criando Projeto 01
Menu: File : New : Maven Project;
Vá para a próxima tela (next);
Selecione o Catálogo: Demoiselle Behave.
29. Módulo 1 – Histórias 29
HistóriasHistórias
Criando Projeto 01Criando Projeto 01
Selecione a última versão do jbehave-junit-archetype:
30. Módulo 1 – Histórias 30
HistóriasHistórias
Criando Projeto 01Criando Projeto 01
Informe o Group Id: br.gov.serpro.behave;
Informe o Artifact Id: projeto01;
Clique em Finish.
31. Módulo 1 – Histórias 31
HistóriasHistórias
Criando Projeto 01Criando Projeto 01
A pasta stories contém os arquivos de
histórias BDD do seu projeto.
Recomenda-se criar uma estrutura de
subpastas para organizar os arquivos
de histórias, conforme as necessidades
do projeto.
32. Módulo 1 – Histórias 32
Exercício 1Exercício 1
Criação da Classe EstoqueCriação da Classe Estoque
No pacote “br.gov.serpro.behave.projeto01” da pasta
“src/main/java”, crie uma classe Java chamada “Produto”;
Substitua o conteúdo da classe “Produto” pelo snippet “01
Classe Produto”;
Crie uma classe Java chamada “Estoque”;
Substitua o conteúdo da classe “Estoque” pelo snippet “02
Classe Estoque”.
33. Módulo 1 – Histórias 33
Exercício 1Exercício 1
Classe ProdutoClasse Produto
public class Produto implements Comparable<Produto> {
private String nome;
private int quantidade;
...
@Override
public int compareTo(Produto produto) {
return nome.compareTo(produto.getNome());
}
}
Atributos
Necessário para
ordenação
34. Módulo 1 – Histórias 34
Exercício 1Exercício 1
Classe EstoqueClasse Estoque
public class Estoque {
public static Estoque conectar() { }
public void submeter() { }
public void funcao(String funcao) { }
private void buscarProduto(String nome) {}
private void adicionarEstoque(Produto produto) { }
private void removerEstoque(Produto produto) { }
private ArrayList<Produto> listarEstoque() { }
private void adicionarProduto(Produto produto) { }
public void limparEstoque() { }
public String ultimaMensagem() { }
}
Obtém a última
mensagem do sistema
Obtém referência ao
objeto estoque
Remove todos os
produtos do estoque
Adiciona um produto
ao estoque
Remove itens
do estoque
Adiciona itens
no estoque
Busca um produto
do estoque pelo nome
Executa a ação
selecionada
Lista todos os
produtos do estoque
Seleciona
uma ação
35. Módulo 1 – Histórias 35
Exercício 1Exercício 1
Pasta de HistóriasPasta de Histórias
Crie uma pasta chamada estoque
dentro da pasta src/test/resources
Dentro desta pasta crie o arquivo de
histórias produto-inclusao.story
Aplique o snippet 03 história Inclusão
de Produtos ao arquivo criado
36. Módulo 1 – Histórias 36
Exercício 1Exercício 1
Histórias: Inclusão de ProdutosHistórias: Inclusão de Produtos
Funcionalidade: Inclusão de Produtos
Eu quero: Incluir Produtos no Controle de Estoque
De modo que: Os produtos sejam armazenados do Controle de Estoque
Cenário: Adicionar um produto
Dado que a lista de produtos está vazia
Quando aciono a função "Incluir Produto"
Quando informo o nome "computador"
Quando informo a quantidade "300"
Quando submeto o formulário
Então o sistema apresentará a mensagem "Produto Incluído"
Cenário
Funcionalidade
Descrição
Passos
37. Módulo 1 – Histórias 37
Exercício 1Exercício 1
Classe EstoqueTest.javaClasse EstoqueTest.java
Na pasta src/test/java, no pacote
br.gov.serpro.behave.projeto01 crie uma classe chamada
EstoqueTest
Substitua seu conteúdo pelo snippet 04 EstoqueTest.java
public class EstoqueTest {
private BehaveContext eng = null;
public EstoqueTest() {
eng = BehaveContext.getInstance();
}
@Test
public void testAllStories() throws Throwable {
eng.run("/estoque");
}
}
Obtém o contexto
do dbehave
Informa ao contexto
as pastas ou arquivos de
histórias que serão
executados
38. Módulo 1 – Histórias 38
Exercício 1Exercício 1
Execução da Classe EstoqueTest.javaExecução da Classe EstoqueTest.java
Execute a classe EstoqueTest por meio do JUnit
39. Módulo 1 – Histórias 39
Exercício 1Exercício 1
Execução da Classe EstoqueTest.javaExecução da Classe EstoqueTest.java
Observer o log de saída:
Passos pendentesPassos pendentes
40. Módulo 1 – Histórias 40
Exercício 1Exercício 1
Execução da Classe EstoqueTest.javaExecução da Classe EstoqueTest.java
Execute a classe EstoqueTest no JUnit e verifique o log de
saída:
Recomendações
41. Módulo 1 – Histórias 41
Exercício 1Exercício 1
Criando classe de passosCriando classe de passos
No pacote br.gov.serpro.behave.projeto01 da pasta
src/test/java crie uma classe chamada EstoquePassos
Substitua o conteúdo da classe pelo snippet 05
EstoquePassos.java
42. Módulo 1 – Histórias 42
Exercício 1Exercício 1
public class EstoquePassos implements Step {
Estoque estoque = Estoque.conectar();
@Given("a lista de produtos está vazia")
public void givenAListaDeProdutosEstáVazia() {
estoque.limparEstoque();
}
@When("informo o nome "$nome"")
public void whenInformoONomecomputador(String nome) {
estoque.informarNome(nome);
}
@Then("o sistema apresentará a mensagem "$mensagem"")
public void thenOSistemaApresentara(String mensagem) {
Assert.assertEquals(mensagem, estoque.getMensagem());
}
}
Parâmetros
Asserções do
JUnit
Uso de parâmetros
Abrindo conexão
com o Estoque
Dado... uma situação
Quando... acesso
a recursos
Então... consequências
esperadas
43. Módulo 1 – Histórias 43
Exercício 1Exercício 1
Inclusão dos Passos CustomizadosInclusão dos Passos Customizados
No método testAllStories da classe EstoqueTest inclua no
contexto do DBehave um objeto EstoquePassos:
@Test
public void testAllStories() throws Throwable {
eng.addSteps(new EstoquePassos());
eng.run("/estoque");
}
44. Módulo 1 – Histórias 44
Exercício 1Exercício 1
Execução da Classe EstoqueTest.javaExecução da Classe EstoqueTest.java
Execute a classe EstoqueTest no JUnit e verifique o log de
saída:
Erro
Ações executadas
com sucesso
Falha
Ações executadas
com sucesso
Ações executadas
com sucesso
45. Módulo 1 – Histórias 45
Exercício 1Exercício 1
Reuso de HistóriasReuso de Histórias
Aplique o snippet 09 histórias reutilizadas ao final do arquivo
produto-inclusao.story
Cenário: Adicionar produto "{nome}" com "{quantidade}" unidades
Quando aciono a função "Incluir Produto"
Quando informo o nome "{nome}"
Quando informo a quantidade "{quantidade}"
Quando submeto o formulário
Então o sistema apresentará a mensagem "Produto Incluído"
Cenário: Adicionar vários Produtos
Dado que a lista de produtos está vazia
Adicionar produto "mesa" com "20" unidades
Adicionar produto "cadeira" com "30" unidades
Adicionar produto "computador" com "100" unidades
Então o estoque terá "3" produtos cadastrados
ParâmetrosParâmetros
Chamada ao
cenário
Chamada ao
cenário
Chamadas
ao cenário
46. Módulo 1 – Histórias 46
Exercício 1Exercício 1
Desenvolvimento Orientado a ComportamentoDesenvolvimento Orientado a Comportamento
Implementaremos os métodos da classe Estoque em função
das falhas apresentadas pelo teste:
No método adicionarProduto aplique o snippet 06 adicionarProduto
Modifique o método limparEstoque:
public void limparEstoque() {
lista.clear();
}
47. Módulo 1 – Histórias 47
Exercício 1Exercício 1
Mais históriasMais histórias
Crie um novo arquivo na pasta src/test/resources/estoque com
o nome produto-pesquisa.story
Aplique o snippet 07 histórias Busca de Produtos
Rode os testes e verifique os erros.
Falha
48. Módulo 1 – Histórias 48
Exercício 1Exercício 1
Desenvolvimento Orientado a ComportamentoDesenvolvimento Orientado a Comportamento
Implemente o método buscarProduto da classe Estoque com o
snippet 08 buscarProduto:
Rode novamente seu testes. Neste momento não haverá mais
erros.
49. Módulo 1 – Histórias 49
Exercício 1Exercício 1
Controle de EstoqueControle de Estoque
Crie um novo arquivo na pasta src/test/resources/estoque com
o nome estoque-controle.story
Aplique o 10 histórias Controlar Estoque
Rode os testes e verifique os resultados:
Falha
50. Módulo 1 – Histórias 50
Exercício 1Exercício 1
Desenvolvimento Orientado a ComportamentoDesenvolvimento Orientado a Comportamento
Implemente os seguintes métodos da classe Estoque:
adicionarEstoque
Snippet: 11 método adicionarEstoque
removerEstoque
Snippet: 12 método removerEstoque
listarEstoque
Snippet: 13 método listarEstoque
Execute novamente os testes.
Observer que as falhas foram removidas.
51. Módulo 1 – Histórias 51
Exercício 1Exercício 1
Exercício ComplementarExercício Complementar
A partir da técnica BDD crie a funcionalidade “Remover
Produto”
Crie as respectivas histórias e passos;
Rode as histórias, mesmo com erro;
Implemente as evoluções da classe Estoque em função dos resultados.
Implemente a funcionalidade “raiz quadrada” da Calculadora
(Calc.java)
52. Módulo 1 – Histórias 52
ConfiguraçõesConfigurações
behave.propertiesbehave.properties
Todas as configurações do DBehave são registradas no
arquivo behave.properties
Vamos apresentar a cada módulo as configurações mais
relevantes:
behave.parser.language=pt
behave.parser.story.extension.original=story
behave.parser.story.extension.converted=storyConverted
behave.parser.commonssteps.enabled=true
Configura a língua
Padrão das histórias
Extensão dos
arquivos
de histórias
Extensão dos arquivos
de histórias convertidos
Habilita os passos
comuns do DBehave
53. Módulo 1 – Histórias 53
ConfiguraçõesConfigurações
behave.propertiesbehave.properties
Ordem de Carregamento
Propriedades da JVM (System do Java)
behave.properties do projeto
behave.properties do framework
Portanto, de forma estática todas as propriedades podem ser
sobrescritas no behave.propeties do projeto.
Dinamicamente é possível modificar todas as propriedades do
DBehave por meio da classe System ou passando os
parâmetros na inicialização da JVM
System.setProperty("behave.parser.commonssteps.enabled", "false");
-Dbehave.parser.commonssteps.enabled=false
54. Módulo 1 – Histórias 54
Conclusão do MóduloConclusão do Módulo
ResumoResumo
Especifique sistemas por histórias!
O Demoiselle Behave é um framework de integração para
testes em BDD.
A camada Parser do DBehave é responsável pelo carremento
das histórias.
A criação de projetos do DBehave pode ser feita com a
utilização de modelos de projeto Maven.
O modelo jbehave-junit-archetype cria projetos para testes
apenas com JUnit sem camadas de apresentação.
55. Módulo 1 – Histórias 55
ReferênciasReferências
Conceitos do BDD: http://pt.wikipedia.org/wiki/Behavior_Driven_Development
Princípios do BDD: http://cuke4ninja.com/sec_cucumber_bdd.html
DSLs: http://martinfowler.com/bliki/BusinessReadableDSL.html
BDD na Prática: http://elemarjr.net/2012/04/12/bdd-na-prtica-parte-3-gherkin/