Este documento fornece informações sobre testes em APIs REST utilizando a biblioteca Rest-Assured. Ele resume como testar APIs manualmente e automaticamente, validar respostas e utilizar ferramentas como Maven e JUnit para estruturar e executar os testes. O documento também apresenta um exemplo prático de teste de uma API REST utilizando Rest-Assured.
A brand new Test Heuristic created by Júlio de Lima.
Modern web applications are built using components made by hand and this causes a series of failures to arise.
With this in mind, the ALTER FACE heuristic proposes tests that reveal flaws related to the way in which Web applications are built based on their components. In the next slides, we will see in detail what constitutes this brand new heuristic.
Reach me out for doubts or feedbacks:
iam@juliodelima.com.br
[ATC2021] Distribuição de Testes em Diferentes CamadasJúlio de Lima
Pensar que testes se aplicam apenas a Front e Back-end é um pensamento limitante e que torna os testes mais demorados e pouco otimizados. Nessa talk, eu apresento o caminho da identificação quanto ao que testar e também apresento uma forma de distribuição dos testes nessas diferentes camadas.
Robot Framework - principais característicasalinebiath
Um pouco do que aprendi sobre essa ferramenta de automação para testes (web, mobile, API, etc).
Aqui não esgotamos o assunto! Tem muito mais. Aconselho a leitura dos links nas referências, principalmente o User guide do Robot Framework.
Muito se fala planejamento do que é realmente necessário para o usuário e maximizar o máximo de trabalho possível para minimizar o Lead Time. Mas você já pensou que levar em consideração como os testes serão planejados desde o início da release até a entrega, e que eles podem ser uma arma na identificação de dependências entre times e diminuição de incidentes?
Palestra ministrada na Trilha DevTest do The Developers Conference 2019 em Florianópolis sobre automação de testes de API com RestAssured e virtualização de serviços com Wiremock
DevCamp - O papel de um testador em uma equipe ágilElias Nogueira
Nesta apresentação são colocados alguns pontos/papéis do testador em uma equipe ágil e as principais dúvidas de uma equipe quando alguém "veste o chapéu" de teste ou teremos um testador na equipe.
A brand new Test Heuristic created by Júlio de Lima.
Modern web applications are built using components made by hand and this causes a series of failures to arise.
With this in mind, the ALTER FACE heuristic proposes tests that reveal flaws related to the way in which Web applications are built based on their components. In the next slides, we will see in detail what constitutes this brand new heuristic.
Reach me out for doubts or feedbacks:
iam@juliodelima.com.br
[ATC2021] Distribuição de Testes em Diferentes CamadasJúlio de Lima
Pensar que testes se aplicam apenas a Front e Back-end é um pensamento limitante e que torna os testes mais demorados e pouco otimizados. Nessa talk, eu apresento o caminho da identificação quanto ao que testar e também apresento uma forma de distribuição dos testes nessas diferentes camadas.
Robot Framework - principais característicasalinebiath
Um pouco do que aprendi sobre essa ferramenta de automação para testes (web, mobile, API, etc).
Aqui não esgotamos o assunto! Tem muito mais. Aconselho a leitura dos links nas referências, principalmente o User guide do Robot Framework.
Muito se fala planejamento do que é realmente necessário para o usuário e maximizar o máximo de trabalho possível para minimizar o Lead Time. Mas você já pensou que levar em consideração como os testes serão planejados desde o início da release até a entrega, e que eles podem ser uma arma na identificação de dependências entre times e diminuição de incidentes?
Palestra ministrada na Trilha DevTest do The Developers Conference 2019 em Florianópolis sobre automação de testes de API com RestAssured e virtualização de serviços com Wiremock
DevCamp - O papel de um testador em uma equipe ágilElias Nogueira
Nesta apresentação são colocados alguns pontos/papéis do testador em uma equipe ágil e as principais dúvidas de uma equipe quando alguém "veste o chapéu" de teste ou teremos um testador na equipe.
Palestra ministrada no Android Dev Conf em São Paulo dia 25/08/2017 por mim e pelo Eduardo Carrara falando sobre diversos tipos de teste para Android e como aplicá-los
Apresentação sobre Arquitetura de Automação para Testes Funcionais no TestDay em 20/09/2012 na PUC - SP
Esta apresentação quer mostrar todos os pontos importantes que são necessários para uma arquitetura de testes pensanod "fora da caixa", não somente em criar um script mas em todo o processo durante a automação como gerencimento de erros e logs, relatórios e estratégia para execução da automação.
@test_day
http://testday.com.br
Arquitetura básica de testes para seu projeto JavaElias Nogueira
Palestra ministrada no The Developers Conference São Paulo 2017 dia 21/07 na Trilha Arquitetura Java.
Nesta apresentação falo da importância de planejar testes em diversos níveis dentro de um processo de desenvolvimento, bem como uma build pipeline ideal pensando em testes e dicas do que devemos ter na nossa arquitetura de teste para uma aplicação em Java.
Alguns conceitos para começar a testar APIs REST. Precisamos saber alguns conceitos básicos e depois podemos começar a testar. De forma bem resumida o que são os métodos HTTP, o que é URL e URI, como fazer uma requisição no Postman e os principais códigos de status HTTP!
Alguns links e materiais indicados para quem quer iniciar nesse mundo de testes em API foram disponibilizados.
Praticidade de criação de um projeto de automação de testes com Cypress utilizando JS como linguagem e as inúmeras praticidades do framework como viewports, pageobjects, cucumber e documentação dos testes.
De a máxima cobertura nos seus testes de APIElias Nogueira
Palestra ministrada no Reginonal Scrum Gathering Rio 2019 no dia 27/06/2019 sobre como dar uma cobertura de testes para uma API além do teste unitário e de integração, com um foco totalmente prático e com execução em pipeline.
Bug Bash - Uma estratégia colaborativa de testes - Raquel DonáTest Girls
Bug Bash - Uma estratégia colaborativa de testes
Apresentação por Raquel Doná no evento Test Girls Talks #4, em 27/03/2018.
https://www.linkedin.com/in/raquel-don%C3%A1-913229123/
Apresentação original disponível em:
https://docs.google.com/presentation/d/15WAcMekDaEVufR6Q6w2cB_N4s_oMoIGZdid8A7cOgyM/edit?usp=sharing
Apresentação sobre TDD - Test Driven Development no Campus Party 2013 em São Paulo no dia 2/2/2013 onde apresento o que é TDD com uma abordagem prática
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Elias Nogueira
Mova-se rapidamente e reduza os riscos ao mesmo tempo em que oferece seu melhor aplicativo. Quando você confia no seu pipeline, você pode aumentar sua velocidade de desenvolvimento, porque você sabe que vai pegar bugs antes que eles atinjam a produção. Fazer testes de unidade é o primeiro passo, mas nas arquiteturas distribuídas baseadas em nuvem de hoje, você precisa aplicar outras estratégias de teste também. Esta apresentação interativa mostra como você pode usar ferramentas de teste de código aberto de última geração para criar um pipeline de testes rápido e confiável. A partir de um aplicativo Java EE distribuído de ponta a ponta baseado em REST e microsserviço.
The Ultimate Beginner's Guide For Beta Testing Mobile AppsInstabug
Learn about beta testing and get tips and resources to start beta testing your mobile app. From where to find beta testers to how to motivate them and more, learn how to make the most out of this crucial stage in your app's journey.
Palestra ministrada no Android Dev Conf em São Paulo dia 25/08/2017 por mim e pelo Eduardo Carrara falando sobre diversos tipos de teste para Android e como aplicá-los
Apresentação sobre Arquitetura de Automação para Testes Funcionais no TestDay em 20/09/2012 na PUC - SP
Esta apresentação quer mostrar todos os pontos importantes que são necessários para uma arquitetura de testes pensanod "fora da caixa", não somente em criar um script mas em todo o processo durante a automação como gerencimento de erros e logs, relatórios e estratégia para execução da automação.
@test_day
http://testday.com.br
Arquitetura básica de testes para seu projeto JavaElias Nogueira
Palestra ministrada no The Developers Conference São Paulo 2017 dia 21/07 na Trilha Arquitetura Java.
Nesta apresentação falo da importância de planejar testes em diversos níveis dentro de um processo de desenvolvimento, bem como uma build pipeline ideal pensando em testes e dicas do que devemos ter na nossa arquitetura de teste para uma aplicação em Java.
Alguns conceitos para começar a testar APIs REST. Precisamos saber alguns conceitos básicos e depois podemos começar a testar. De forma bem resumida o que são os métodos HTTP, o que é URL e URI, como fazer uma requisição no Postman e os principais códigos de status HTTP!
Alguns links e materiais indicados para quem quer iniciar nesse mundo de testes em API foram disponibilizados.
Praticidade de criação de um projeto de automação de testes com Cypress utilizando JS como linguagem e as inúmeras praticidades do framework como viewports, pageobjects, cucumber e documentação dos testes.
De a máxima cobertura nos seus testes de APIElias Nogueira
Palestra ministrada no Reginonal Scrum Gathering Rio 2019 no dia 27/06/2019 sobre como dar uma cobertura de testes para uma API além do teste unitário e de integração, com um foco totalmente prático e com execução em pipeline.
Bug Bash - Uma estratégia colaborativa de testes - Raquel DonáTest Girls
Bug Bash - Uma estratégia colaborativa de testes
Apresentação por Raquel Doná no evento Test Girls Talks #4, em 27/03/2018.
https://www.linkedin.com/in/raquel-don%C3%A1-913229123/
Apresentação original disponível em:
https://docs.google.com/presentation/d/15WAcMekDaEVufR6Q6w2cB_N4s_oMoIGZdid8A7cOgyM/edit?usp=sharing
Apresentação sobre TDD - Test Driven Development no Campus Party 2013 em São Paulo no dia 2/2/2013 onde apresento o que é TDD com uma abordagem prática
Confie no seu pipeline: Teste automaticamente um aplicativo Java de ponta a p...Elias Nogueira
Mova-se rapidamente e reduza os riscos ao mesmo tempo em que oferece seu melhor aplicativo. Quando você confia no seu pipeline, você pode aumentar sua velocidade de desenvolvimento, porque você sabe que vai pegar bugs antes que eles atinjam a produção. Fazer testes de unidade é o primeiro passo, mas nas arquiteturas distribuídas baseadas em nuvem de hoje, você precisa aplicar outras estratégias de teste também. Esta apresentação interativa mostra como você pode usar ferramentas de teste de código aberto de última geração para criar um pipeline de testes rápido e confiável. A partir de um aplicativo Java EE distribuído de ponta a ponta baseado em REST e microsserviço.
The Ultimate Beginner's Guide For Beta Testing Mobile AppsInstabug
Learn about beta testing and get tips and resources to start beta testing your mobile app. From where to find beta testers to how to motivate them and more, learn how to make the most out of this crucial stage in your app's journey.
1) Tópicos que serão abordados:
- O que é REST?
- Como testar manualmente?
- Validando respostas (Esquema, Corpo e Cabeçalho)
- Sobre o Rest-Assured
- Componentes auxiliares
- Hands-On
2) O Hands-On demonstrará, na prática:
- Como montar o ambiente para utilização da ferramenta
- Como criar um novo projeto
- Criando um novo teste
- Executando os testes
- Analisando os relatórios
Assista o Hands-on aqui:
http://bit.ly/1QMZ3od
Palestra sobre automação de testes em APIs Rest com Rest-AssuredJúlio de Lima
Palestra de apresentação do framework Rest-Assured para automação de testes em API Rest, foram utilizados Maven e Unit para estruturação do projeto e testes.
Esta palestra e hands-on foram apresentados no evento #Testadores2015 em São Paulo.
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
[ScrumDay2020] A evolução da responsabilidade em testesJúlio de Lima
A evolução da maturidade no uso de metodologias ágeis tem trazido muitas mudanças positivas aos times. Quando se fala em testes, isso não deve ser diferente. A pessoa ou time responsável por testar ainda continua tendo a obrigação de conhecer muito sobre esta atividade, como vemos no Slide 3. Em cada uma dessas três versões e meia, você encontrará características que fazem toda a diferença no dia a dia do time que desenvolve e entrega um incremento utilizável ao final da sprint. Para que isso funcione é necessário maturidade, do time e da gestão, mas o não uso traz frustrações, como vemos na versão 1.5.
Reducing the scope of load test analysis (STAREast 2020)Júlio de Lima
Load testing execution produces a huge amount of data. Investigation and analysis are time-consuming, and numbers tend to hide important information about issues and trends. using machine learning is a good way to solve data issues by giving meaningful insights about what happened during test execution. Julio Cesar de Lima Costa will show you how to use K-means clustering, a machine learning algorithm, to reduce almost 300,000 records to fewer than 1,000 and still get good insights into load testing results. He will explain K-means clustering, detail what use cases and applications this method can be used in, and give the steps to help you reproduce a K-means clustering experiment in your own projects. You'll learn how to use this machine learning algorithm to reduce the scope of your load testing and getting meaningful analysis from your data faster.
[TDC2019] Inteligência Artificial e Testes in a NutshellJúlio de Lima
Ouvimos muito falar sobre Inteligência Artificial e o quanto ela tem ajudado a solucionar problemas coorporativos, pessoais e até mesmo ambientais. Mas você já viu a aplicação dela na disciplina de testes de software? Criação de testes automaticamente, rastreamento de causa raiz de falhas e aumento da cobertura de testes automatizados são algumas das aplicações já identificadas. Juste-se a nós nessa palestra e conheça o que há disponível no mercado e academia, além de assistir ao uso de algoritmos que já solucionam vários desses problemas.
[GaragemTalks2019] Cultura de Testes e Qualidade de SoftwareJúlio de Lima
Palestra ministrada no GaragemTalks, na Cielo em 26 de abril de 2019.
O objetivo foi de demonstrar como uma cultura de qualidade pode influenciar a entrega de produtos de qualidade. Também, de mostrar como técnicas de teste podem ser aplicadas em áreas não necessáriamente ligadas a desenvolvimento de software.
[MoT SP #1] PRISMA para Testes Baseados em RiscoJúlio de Lima
Palestra ministrada no Ministry of Testing São Paulo, primeira edição.
Fala, principalmente, sobre como usar riscos para digiris seus testes, sejam eles executados a partir de casos de teste ou de testes exploratórios.
Abordagens mencionadas na apresentação:
- Heurísticas (http://testobsessed.com/wp-content/uploads/2011/04/testheuristicscheatsheetv1.pdf)
- Session-Based Test Management (http://www.satisfice.com/sbtm/)
- PRISMA (https://www.bcs.org/upload/pdf/prisma-veenendaal.pdf)
[7Masters Aug, 2018] Escolhas durante automação de testes de APIJúlio de Lima
Palestra ministrada em junho de 2018 no iMasters 7Masters.
O 7Masters é uma reunião dos 7 mestres de uma determinada tecnologia para apresentações curtas de suas inovações.
Gravação:
https://setemasters.imasters.com.br/edicoes/automacao-de-testes/
Uma análise sobre como é a mentalidade de um QA nos contextos Tradicional, Ágil e Pós-Ágil. Como ocorre a transição entre os contextos e algumas recomendações.
Palestra ministrada no evento QAXperience Moip, no dia 30 de novembro de 2017.
http://qaxperience.com/moip/
[PHPConference 2016] Criando Mocks com ProphecyJúlio de Lima
Palestra ministrada em 10 de dezembro de 2016 no PHPConference Brasil, o maior evento de PHP da américa latina.
Neste dia, falei e fiz um Live Coding demonstrando conceitos e práticas na criação de Mocks.
Repositório abaixo:
https://github.com/juliodelimas/criando-mocks-prophecy
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
Palestra ministrada na Trilha de Testes do TDC2016 em 09 de julho de 2016. Nela mostro, na prática, como automatizar testes de unidade, API e Web com frameworks open-source em Ruby.
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
Slides da palestra que seria ministrada no 38º GURU SP, evento promovido pelo grupo de usuários Ruby de São Paulo no dia 07 de novembro de 2015.
Nesta palestra, apresento os frameworks Cucumber e WebDriver, usados para automação de testes em aplicações web usando BDD.
[UNIP2015] Testando a Performance de Aplicações Web com JMeterJúlio de Lima
Palestra ministrada na UNIP campus Araçatuba no dia 05 de outubro de 2015. Nesta palestra, falo sobre alguns conceitos e fundamentos em testes com foco em avaliação de performance de aplicações web.
Palestra ministrada no TestTalk Curitiba em setembro de 2015. O objetivo foi apresentar aos participantes conceitos de DevOps e como os testadores podem ser beneficiado e como eles podem influenciar.
[TICNOVA2015] Palestra sobre Automação de TestesJúlio de Lima
Nesta palestra faço uma breve instrodução a automação de teste e os níveis no qual ela pode ser aplicada dentro do ciclo de desenvolvimento e testes de software.
Ao fim, foi feito um hands on demonstrando como automatizar um teste em aplicação Desktop usando TestComplete, assista aqui:
https://www.youtube.com/watch?v=Sey_XY9Yz3c
Introdução à Automação de Testes Funcionais (IPASGO, Goiânia)Júlio de Lima
Palestra ministrada à equipe da gerência de planejamento de tecnologia da informação do IPASGO, Goiânia.
Nela, apresento alguns conceitos em automação de testes funcionais, a diferença entre tipos de teste, abordagens e paradigmas relacionados a esta atividade.
Um vídeo-tutorial passo-a-passo mostrando como gravar testes no TestComplete, este será postado em breve no canal da Qualister no Youtube:
youtube.com/user/qualistervideos
2. Palestrante
Júlio de Lima
Especialista em teste de software com ênfase em
automação de testes de software, possui formação em
Tecnologia da Informação e certificações internacionais
(CTFL e CTAL-TM pelo ISTQB) e nacional (CBTS pela ALATS)
julio.lima@qualister.com.br
twitter.com/juliodelimas
br.linkedin.com/in/juliodelimas
goldtips.by/juliodelimas
3. Sobre a Qualister
• Fundada em 2007
• Mais de 1.000 clientes em todo o Brasil
• Mais de 50 cursos sobre teste de software
• Mais de 3.000 alunos formados
• Áreas de atuação:
• Consultoria na área de teste qualidade de
software
• Cursos
• Revenda de ferramentas
5. O que é REST?
• É um estilo de arquitetura utilizado para
criação de APIs;
• Trabalha, geralmente, sobre o protocolo
HTTP/HTTPS usando métodos POST, GET, PUT,
DELETE, OPTIONS, PATCH e HEAD;
• Utiliza respostas no formato JSON ou XML.
[@fonte=http://rest.elkstein.org]
7. Como testar manualmente?
Utilizando cURL, um recurso disponível em
sistemas operacionais Unix através de linha de
comando, podemos fazer uma requisição
através do comando:
curl -i -X GET “http://localhost:
8888/qualister-api/?nome=Julio"
--user qualister:qualister
[@fonte=http://curl.haxx.se/docs/httpscripting.html]
8. Como testar manualmente?
Então receberemos a seguinte resposta:
HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
"status":"success",
"message":”Julio, seja bem-vindo a API da Qualister",
"data":
{
"atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
"consultores":
{
"quantidade":5,
"nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
}
}
}
10. Validando resposta: Esquema
HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
"status":"success",
"message":”Julio, seja bem-vindo a API da Qualister",
"data":
{
"atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
"consultores":
{
"quantidade":5,
"nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
}
}
}
A resposta terá a propriedade “status" e
o valor será do tipo string
Essa propriedade
deverá ser um Array!
A resposta terá a propriedade
“dados.atuacao” e não deverá ter itens
duplicados
11. Validando resposta: Corpo
HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
"status":"success",
"message":”Julio, seja bem-vindo a API da Qualister",
"data":
{
"atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
"consultores":
{
"quantidade":5,
"nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
}
}
}
“status" deverá ser igual a
"success"
“dados.consultores.quantidade”
deverá ser igual a 5
“dados.atuacao” deverá ter um
item "Consultoria"
12. Validando resposta: Cabeçalho
HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
"status":"success",
"message":”Julio, seja bem-vindo a API da Qualister",
"data":
{
"atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
"consultores":
{
"quantidade":5,
"nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
}
}
}
“Status Code" deverá ser igual a 200
13.
14. Rest-Assured
• É uma biblioteca escrita em Java criada para simplificar
testes de serviços baseados em REST;
• Ele é compatível com os principais métodos, podendo
simular requisições: POST, GET, PUT, DELETE, OPTIONS,
PATCH e HEAD;
• Possui mecanismos para validação do esquema, corpo e
cabeçalho das requisições;
• Utiliza a sintaxe de especificação por exemplos, o Given-
When-Then, muito conhecida em testes dirigidos por
comportamento (BDD).
[@fonte=https://code.google.com/p/rest-assured/wiki/Usage]
15. Rest-Assured
Exemplo de teste:
given()
.param(“nome", "Julio")
.when()
.get(“/")
.then()
.assertThat()
.statusCode(200)
.body(“mensagem", containsString("Julio"));
Enviar o valor “Julio" pelo parâmetro
"nome"
Requisitar o path “/“ usando metodo GET
Validar que o Status Code
é 200 (Sucesso) Validar que a propriedade
“mensagem" contem a string
"Julio"
17. Componentes auxiliares
• Utilizaremos o Maven para tornar mais simples a
estruturação do projeto, dependências e execução dos
testes. O diretório bin do Maven deve ser setado nas
variáveis globais do sistema operacional.
[@fonte=https://maven.apache.org]
• O JUnit é um framework open-source utilizado para
facilitar a criação dos testes automatizados.
[@fonte=http://junit.org]
19. Hands-on
1. Criar um novo projeto Maven no Eclipse
2. Criar adicionar as dependências ao pom.xml
3. Criar o package br.com.qualister.Testes em src/test/java
<dependencies>
<dependency>
<groupId>com.jayway.restassured</groupId>
<artifactId>rest-assured</artifactId>
<version>2.4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.restassured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>2.4.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
20. Hands-on
4. Criar uma classe de teste do JUnit e nomea-la como
"QualisterAPITests"
5. Adicionar a ela as importações para utilização do
RestAssured:
6. Configurar a conexão com a API Rest dentro do construtor
da classe de testes
import static com.jayway.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
import static com.jayway.restassured.module.jsv.JsonSchemaValidator.*;
public QualisterAPITests() {
baseURI = "http://localhost/qualister-api/";
port = 8888;
authentication = basic("qualister", "qualister");
}
21. Hands-on
7. Escrever um teste chamado testMostrarDadosQualister,
que basicamente apresenta a resposta à requisição GET
ao path “/“:
8. Ao executar o teste, teremos o status passed no JUnit e
no console será apresentada a resposta, similar à que
vimos anteriormente.
@Test
public void testMostrarDadosQualister() {
given()
.param("nome", "Julio")
.when()
.get("/")
.then()
.log()
.body();
}
22. Hands-on
9. Capture o valor da propriedade “status" e valide se é
igual a "success":
String status = given()
.param("nome", "Julio")
.when()
.get("/")
.then()
.log()
.body()
.extract()
.body()
.path("status");
Assert.assertEquals("success", status);
23. Hands-on
10.Neste caso, poderíamos usar asserções do próprio
RestAssured usando matchers do Hamcrest:
11.Uma asserção quem é muito poderosa também é a que
valida o esquema da resposta obtida. Veja como usar:
.body(matchesJsonSchemaInClasspath("meu-esquema.json"))
given()
.param("nome", "Julio")
.when()
.get("/")
.then()
.log()
.body()
.assertThat()
.body("status", equalTo("success"))
.body("message", containsString("Julio"))
.statusCode(200);
25. Hands-on
12.Para executar os testes via linha de comando, acesse o
diretório onde está o arquivo pom.xml do projeto e
execute o comando abaixo:
mvn test -Dtest=QualisterAPITests
26. Links interessantes
Categorizando testes em Unit
Elias Nogueira / @eliasnogueira
http://bit.ly/1Jxnb8w
Rest-Assured escrevendo em Groovy (GitHub)
Maurício Silva / @silvamauriciob
http://bit.ly/1G3yhzC
Status Codes HTTP
Frederico Moreira / @fredaomoreira
http://bit.ly/1GC2vKw