Use o código e tenha 10% de desconto!

Spock framework Testes automatizados para Java, Android e REST

José Yoshiriro

Sobre o livro

Público-alvo

Esta obra destina-se a estudantes e profissionais de desenvolvimento de software, principalmente para a plataforma Java. Profissionais que trabalham exclusivamente criando testes também são público para este livro pois o Spock também permite criar testes para REST APIs.

Pré-requisitos

Para melhor acompanhar o conteúdo desta obra, são necessárias noções intermediárias de programação com a plataforma Java, tais como: configuração do ambiente, orientação a objetos, coleções e tratamento de exceções.

Esta obra contém capítulos sobre testes para REST APIs, Android, Spring Boot e Spring MVC. Tais capítulos são destinados a profissionais com o mínimo de conhecimento sobre essas tecnologias.

Conceitos básicos sobre testes de software não são necessários pois são revisados em vários tópicos do livro.

Caso o leitor tenha pouco ou nenhum conhecimento sobre a linguagem Groovy, pode recorrer ao Apêndice A - Guia de Groovy para desenvolvedores Java.

A versão do Spock abordada neste livro foi a 1.1-groovy-2.4.

Sobre o autor

José Yoshiriro Ajisaka Ramos, mais conhecido como Yoshi, nasceu em julho de 1981 em Belém-PA. É bacharel em Sistemas de Informação e especialista em Engenharia de Sistemas. Possui certificações internacionais PMI (ACP), OMG (OCUP Fundamental) e ORACLE (SCBCD 5, SCWCD 5, SCJP 6 e SOA Suite 11g Certified Implementation Specialist).

Atua profissionalmente com desenvolvimento de software desde 2002, mas programa desde 1994. No setor público, foi programador concursado do Tribunal de Justiça do Estado do Pará de 2006 a 2013. Na iniciativa privada, atuou na criação e/ou manutenção de sistemas usados em empresas como BrasilPrev, Rico Home Broker, Caixa Econômica Federal, DETRAN-PA, Banco da Amazônia e Citibank. Também colaborou com projetos open source para os frameworks Struts 2 e Grails. Programar é uma de suas grandes paixões.

É professor em nível superior desde 2008 mas leciona desde 2003. Ministrou vários cursos livres na Equilibrium Web, em sua grande maioria de Java. Como docente em nível superior, trabalhou na UAB/IFPA e na Faculdade Ipiranga. Foi professor na FIAP e conteudista da FIAP ON de 2017 a 2018. No início de 2014, passou a compor o corpo docente da faculdade Bandtec Digital School. Normalmente ministra disciplinas de programação. Possui vários artigos sobre programação publicados nas revistas MundoJava/MundoJ e GroovyMag (EUA). Palestrou em diversos eventos de tecnologia, como na Virada Tecnológica de São Paulo 2017, nos TDC São Paulo de 2014, 2015 e 2017 e no FISL de 2015. Ensinar é sua grande paixão.

Prefácio

Por Prof. Dr. Eduardo Martins Guerra

Há cerca de 20 anos, começava um movimento no mundo da engenharia de software, que contestava a forma como as coisas estavam sendo feitas e propunha novos valores. Surgiam o que chamamos hoje de métodos ágeis!

Todos os princípios e técnicas do desenvolvimento ágil são baseados em uma premissa: o código existente deve ser fácil de ser modificado. Porém, isso não vem de graça! É necessária muita disciplina nas práticas utilizadas para que isso realmente seja uma realidade. Além de ser preciso cuidado constante para manter o código limpo e desacoplado, os testes automatizados também possuem um importante papel nessa questão.

A presença de testes automatizados é importante para dar segurança em qualquer modificação do código. Seja para refatorá-lo, buscando frequentemente mantê-lo desacoplado, simples e legível, seja para inserir novas funcionalidades, os testes permitem uma detecção mais rápida quando algum comportamento anterior é quebrado. São esses testes que ajudam a manter baixo o custo de mudança, o que é fundamental, por exemplo, para viabilizar iterações curtas e com entregas frequentes.

Porém, a princípio muita gente não se dá conta de que testar não é nada fácil! Principalmente quando estamos falando de testes automatizados. Um software interage com diversos recursos dentro de seu ecossistema e provê diferentes tipos de interface para a execução de suas funcionalidades. São questões técnicas como: mapeamento de classes para o banco de dados, acesso a serviços por REST APIs ou mesmo dependências de sistemas externos que precisam ser simulados.

Ter que lidar com essas questões nos testes faz muita gente travar! Para superar essas dificuldades, é importante conhecer uma ferramenta adequada juntamente com as técnicas de testes. É por isso que esse livro que você tem em mãos a respeito do Spock framework contém um conhecimento muito valioso! Além de ensinar a utilizar as funcionalidades desse framework, ele ainda apresenta as técnicas de teste, juntamente com exemplos didáticos e focados em problemas do mundo real para tecnologias que são padrão de mercado.

Conheci o Yoshi quando eu era editor-chefe da revista MundoJava, época em que ele sempre entrava em contato para propor artigos com temas atuais e extremamente relevantes para o mercado. Seus artigos eram sempre muito apreciados pela equipe técnica da revista e pelos nossos leitores devido à didática e à clareza com as quais apresentava os temas. Neste livro, ele acertou em cheio em uma temática na qual muita gente no mercado ainda precisa amadurecer. Tenho certeza de que a aplicação dos conceitos deste livro pode ser decisiva para o sucesso de muitos projetos!

Eduardo Martins Guerra é pesquisador do INPE. Foi professor no ITA, onde concluiu sua graduação, mestrado e doutorado. Suas pesquisas focam no design, arquitetura e teste de software. Foi editor-chefe da revista MundoJava por vários anos. É autor/co-autor de vários livros na área de computação.

Comentários sobre o livro

"Escrito de forma bem clara e didática, este livro não se restringe a apenas ensinar como utilizar o framework Spock, mas também apresenta de forma bem abrangente os principais conceitos relacionados a testes de software, bem como um comparativo entre as ferramentas de testes existentes no mercado. O uso do Spock é exemplificado em diversas plataformas e frameworks, incluindo Spring, REST APIs e Android. Leitura imprescindível para todos os que prezam pela qualidade de seu software."

Célia Taniwaki. Professora na faculdade Bandtec. Mestra em Eng. Elétrica pela USP e Especialista em Eng. Elétrica pela Mei University do Japão. Foi analista/desenvolvedora na Itautec por 13 anos. Já traduziu vários livros e revistas de computação.


"Este livro do Yoshi é um ensaio tecnológico sobre testes de software. De forma equilibrada explora conceitos importantes sobre testes de softwares e de várias ferramentas de testes relevantes no mercado. Todo desenvolvedor deve conhecer este livro, pois é rico de exemplos e explica, detalhadamente, como configurar e aplicar as ferramentas nas principais IDEs e linguagens de programação da plataforma Java."

Daniel Couto Gatti. Diretor da Faculdade de Ciências Exatas e Tecnologia da PUC-SP e professor na faculdade Bandtec. Doutor em Educação Matemática e Mestre em Comunicação e Semiótica pela PUC-SP. É autor de vários livros na área de computação.


"Fazia muito tempo que esperava por um livro como este do Yoshiriro: é relevante, enriquece o leitor e vai além de um mero 'tutorial de Spock'. Aprendi coisas novas durante a sua leitura, coisas que vão além da documentação oficial. Se você quer entender como o Spock funciona - um framework que vejo muita gente aprender por aí dando murro em ponta de faca - creio que o livro é este. É bem fundamentado, bem escrito, didático e direto ao ponto. Você aprenderá não só como o Spock funciona, mas também algumas coisas a mais que valerão a pena no final. É o manual que faltava para o framework: que bom que foi escrito aqui no Brasil e em português para que torne essa poderosa ferramenta mais acessível."

Henrique Lobo Weissmann (Kico). Sócio-fundador da itexto, empresa de desenvolvimento de sistemas. Referência nacional em Spring e Groovy/Grails, sendo autor de livros sobre essas tecnologias e criador da comunidade Grails Brasil.


"De maneira muito intuitiva, apresenta uma disciplina fundamental para todo desenvolvedor de software. Esclarece aos mais apressados e dá as ferramentas para quem quer mais profundidade. Foca nos benefícios de usar a ferramenta de acordo com o problema e torna praticamente transparente a apresentação do uso de uma linguagem de programação não tão comum no Brasil, mas de adoção extremamente simples em qualquer aplicação Java. Percebe o tamanho do desafio cumprido na proposta desse livro?! Fico muito contente em poder contar com esse nível de material em português e ver a didática do Yoshiriro agora materializada além dos limites da sala de aula e projetos em que contribui. E que venham os próximos!"

Victor Franzonatto. Engenheiro de software sênior no Mercado Livre. Trabalha com desenvolvimento de software desde 2006. Já liderou projetos em empresas como IBM, Porto Seguro e BrasilPrev. Já publicou e traduziu vários artigos sobre tecnologia.

 

Sumário

  • 1 Por que usar Spock framework?
    • 1.1 Por que criar testes automatizados?
    • 1.2 Testes que podemos criar com Spock
    • 1.3 Por que usar Spock para projetos Java se temos JUnit, TestNG, Mockito etc.?
  • 2 Preparando o ambiente para trabalhar com Spock
    • 2.1 Configurando o Groovy nas principais IDEs Java
    • 2.2 Uso de Groovy em editores de código simples (Sublime Text, Brackets, Atom etc.)
    • 2.3 Configurando as dependências Spock do projeto com Maven
    • 2.4 Configurando as dependências Spock do projeto com Gradle
    • 2.5 Configurando as dependências Spock do projeto com SBT
    • 2.6 Experimentando o Spock on-line
  • 3 Primeiros testes automatizados com Spock
    • 3.1 Primeiro teste: A classe Math calcula potência corretamente?
    • 3.2 Executando um teste
    • 3.3 O que acontece quando um teste falha
  • 4 Anatomia de um teste Spock
    • 4.1 Testes são chamados de Specifications
    • 4.2 Uma classe de teste pode conter vários métodos de teste
    • 4.3 Fixture Methods (métodos de montagem)
    • 4.4 Blocks (Blocos)
    • 4.5 Por que a anatomia do Spock é essa
  • 5 Data-Driven Testing - Facilitando os testes de múltiplos cenários
    • 5.1 Testando um Analisador de IMC
    • 5.2 Um método, vários cenários
    • 5.3 Descrevendo os testes que falham com detalhes dos cenários
  • 6 Exception Conditions - Testes à espera de exceções
    • 6.1 Às vezes o certo é dar errado
    • 6.2 Testando vários cenários de erro
    • 6.3 Verificando detalhes das exceções
  • 7 Testando com a ajuda de Mocks
    • 7.1 O que são dublês e por que usá-los
    • 7.2 Dependências adicionais para Mocks
    • 7.3 Configurando retornos de métodos em Mocks
    • 7.4 Configurando Mocks para lançarem exceções
    • 7.5 Configurando retornos de métodos aninhados em Mocks
    • 7.6 Verificando a quantidade de execuções de métodos dos Mocks
  • 8 Testando RESTful APIs
    • 8.1 O que são RESTful APIs e a importância de serem bem testadas
    • 8.2 Documentação da API de Cálculo e Banco de IMC
    • 8.3 Preparando o projeto para testes de REST APIs com o HTTP Client Framework For Groovy
    • 8.4 Testando o Endpoint POST /imcs
    • 8.5 Testando o Endpoint GET /imcs/{id}
    • 8.6 Testando o Endpoint GET /imcs
    • 8.7 Testando o Endpoint DELETE /imcs/{id}
  • 9 Recursos avançados
    • 9.1 Ignorando testes
    • 9.2 Tolerância de tempo de um teste com @Timeout
    • 9.3 Executando os testes na ordem em que estão na classe com @Stepwise
    • 9.4 Compartilhando objetos entre testes com @Shared
    • 9.5 Restaurando propriedades do sistema com @RestoreSystemProperties
    • 9.6 Indicando referências
  • 10 Testando metaprogramação (anotações)
    • 10.1 Metaprogramação em Java: anotações
    • 10.2 Por que testar anotações?
    • 10.3 Testando anotações de uma entidade JPA
  • 11 Testes de integração em projetos Spring
    • 11.1 Spring TestContext framework e Spring Module do Spock
    • 11.2 Testes de integração em um projeto Spring Boot
    • 11.3 Testes de integração em um projeto Spring MVC
    • 11.4 Ciclo de vida do contexto Spring nos testes de integração
    • 11.5 Profiles e properties do projeto Spring nos testes de integração
  • 12 Testes unitários em projetos Android
    • 12.1 Estudo de caso
    • 12.2 Configurando um projeto Android para trabalhar com Groovy
    • 12.3 Testando o projeto Android
    • 12.4 Limitações do Spock no Android
  • 13 Apêndice A - Guia de Groovy para desenvolvedores Java
    • 13.1 Como funciona o Groovy
    • 13.2 Características e recursos do Groovy
  • 14 Apêndice B - Perguntas frequentes sobre o Spock framework
  • 15 Referências

Dados do produto

Número de páginas:
237
ISBN:
978-85-94188-87-8
Data publicação:
10/2018

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter