SlideShare uma empresa Scribd logo
contato@qualister.com.br
(48) 3285-5615
twitter.com/qualister
facebook.com/qualister
linkedin.com/company/qualister
Testes em APIs
REST com
Rest-Assured
São Paulo | 22/07/2015
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
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
O que é REST?
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]
Como testar manualmente?
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]
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"]
}
}
}
Validando respostas
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
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"
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
Palestra sobre Automação de Testes com Rest-Assured
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]
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"
Componentes auxiliares
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]
Hands-on!
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>
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");
}
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();
}
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);
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);
Hands-on
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Dados da Qualister",
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"atuacao": {
"type": "array"
},
"consultores": {
"type": "object",
"properties": {
"quantidade": {
"type": "integer",
"minimum": 0
},
"nomes": {
"type": "array",
"uniqueItems": true
}
}
}
}
}
},
"required": ["status", "message", "data"]
}
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
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
contato@qualister.com.br
(48) 3285-5615
twitter.com/qualister
facebook.com/qualister
linkedin.com/company/qualister

Mais conteúdo relacionado

PDF
Palestra sobre automação de testes em APIs Rest com Rest-Assured
PDF
Palestra Rest-Assured com Maven e JUnit
PPT
Como testar aplicativos ios e android
PDF
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
PDF
Testes para dispositivos móveis
PDF
DEV-OPS para teste de software
PDF
[PHPConferenceBR] Automação de testes com Codeception
PDF
Caipira agil automacao front end selenium
Palestra sobre automação de testes em APIs Rest com Rest-Assured
Palestra Rest-Assured com Maven e JUnit
Como testar aplicativos ios e android
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
Testes para dispositivos móveis
DEV-OPS para teste de software
[PHPConferenceBR] Automação de testes com Codeception
Caipira agil automacao front end selenium

Mais procurados (20)

PDF
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
PDF
Automacao de testes com keyword driven
PPTX
Agile testing
PDF
Palestra DevOps para Teste de Software
PDF
Juntando para multiplicar
PDF
Teste software metodos metodologia ageis agil agile testing
PDF
Testes em Web Services - conceitos e ferramentas
PDF
Testes performance nuvem com j meter e blazemeter
PDF
Teste performance carga stress jmeter
PDF
Perspectivas em teste de software
PDF
Mini curso de testes ágeis
PDF
Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)
PDF
Medindo a performance de aplicações web com JMeter
PDF
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
PDF
Tendências em teste de software
PDF
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
PDF
Automacao testes automatizados
PDF
Como integrar um Agile Tester no seu time
PDF
Mindset de QA em Diferentes Contextos
PDF
[QANinjaConference] Automação de Testes com Codeception
Teste de performance na nuvem com JMeter e BlazeMeter TDC2014
Automacao de testes com keyword driven
Agile testing
Palestra DevOps para Teste de Software
Juntando para multiplicar
Teste software metodos metodologia ageis agil agile testing
Testes em Web Services - conceitos e ferramentas
Testes performance nuvem com j meter e blazemeter
Teste performance carga stress jmeter
Perspectivas em teste de software
Mini curso de testes ágeis
Palestra Automação de Testes em Dispositivos Móveis na Nuvem (BRATESTE2013)
Medindo a performance de aplicações web com JMeter
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
Tendências em teste de software
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
Automacao testes automatizados
Como integrar um Agile Tester no seu time
Mindset de QA em Diferentes Contextos
[QANinjaConference] Automação de Testes com Codeception
Anúncio

Destaque (16)

PDF
GET /conceitos HTTP/1.1
PDF
Automação de Teste não é um bicho de 7 cabeças
PPTX
Perspectivas do profissional de qualidade e testes de software
PDF
Testando a integração com APIs - RSonRails/11
PDF
Testes de usabilidade com uma pitada de lean ux
PPTX
Docker e suas tecnologias
PDF
Testes ágeis
PDF
BRATESTE 2013 - Automação de testes de dispositivos móveis na nuvem
PDF
Testes de segurança desafios e oportunidades
PDF
Automação de testes BDD e ATDD
PPTX
ALM - Testes Exploratórios
PDF
Changing Your Testing Mindset, Booster Conference, Bergen, Norway, 2014
PDF
Testes em métodos ágeis
PPT
Introdução ao TDD
PDF
Curso Teste de performance, carga e stress JMeter
PDF
Gestão de defeitos e testes com Jira
GET /conceitos HTTP/1.1
Automação de Teste não é um bicho de 7 cabeças
Perspectivas do profissional de qualidade e testes de software
Testando a integração com APIs - RSonRails/11
Testes de usabilidade com uma pitada de lean ux
Docker e suas tecnologias
Testes ágeis
BRATESTE 2013 - Automação de testes de dispositivos móveis na nuvem
Testes de segurança desafios e oportunidades
Automação de testes BDD e ATDD
ALM - Testes Exploratórios
Changing Your Testing Mindset, Booster Conference, Bergen, Norway, 2014
Testes em métodos ágeis
Introdução ao TDD
Curso Teste de performance, carga e stress JMeter
Gestão de defeitos e testes com Jira
Anúncio

Semelhante a Palestra sobre Automação de Testes com Rest-Assured (20)

PDF
Automação de testes funcionais com selenium webdriver
PDF
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
PDF
Maturidade em automação de testes
PPTX
CNQS - Testes Automatizados & Continuous Delivery
PDF
Ferramentas open source para auxiliar os testes de software
PDF
Desenvolvimento web com python e django
PPT
Reusabilidade na Utilização de Frameworks Automatizados
PDF
Certificacoes java
PPT
Curso Básico de Selenium
PDF
Falando sobre DevOps no azure
DOCX
Trabalho 4 Semestre e 5 Semestre 2015
PPTX
Introdução a testes de software utilizando selenium
PPTX
AppTesting
PDF
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
PPTX
Introdução aos fundamentos de teste de software 3
PPTX
[DevOps Carioca] Testes Automatizados
PPTX
Automação de Teste para REST, Web e Mobile
ODP
Certificacao Php
PDF
Agile Testing - Qualidade do Discovery ao Deploy
PDF
Desafio Rest API
Automação de testes funcionais com selenium webdriver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
Maturidade em automação de testes
CNQS - Testes Automatizados & Continuous Delivery
Ferramentas open source para auxiliar os testes de software
Desenvolvimento web com python e django
Reusabilidade na Utilização de Frameworks Automatizados
Certificacoes java
Curso Básico de Selenium
Falando sobre DevOps no azure
Trabalho 4 Semestre e 5 Semestre 2015
Introdução a testes de software utilizando selenium
AppTesting
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
Introdução aos fundamentos de teste de software 3
[DevOps Carioca] Testes Automatizados
Automação de Teste para REST, Web e Mobile
Certificacao Php
Agile Testing - Qualidade do Discovery ao Deploy
Desafio Rest API

Último (11)

PPTX
Eng. Software - pontos essenciais para o início
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Jira Software projetos completos com scrum
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Manejo integrado de pragas na cultura do algodão
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Utilizando code blockes por andre backes
Eng. Software - pontos essenciais para o início
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Jira Software projetos completos com scrum
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Conceitos básicos de Redes Neurais Artificiais
Viasol Energia Solar -Soluções para geração e economia de energia
Manejo integrado de pragas na cultura do algodão
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Tipos de servidor em redes de computador.pptx
Utilizando code blockes por andre backes

Palestra sobre Automação de Testes com Rest-Assured

  • 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
  • 4. O que é REST?
  • 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
  • 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);
  • 24. Hands-on { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Dados da Qualister", "type": "object", "properties": { "data": { "type": "object", "properties": { "atuacao": { "type": "array" }, "consultores": { "type": "object", "properties": { "quantidade": { "type": "integer", "minimum": 0 }, "nomes": { "type": "array", "uniqueItems": true } } } } } }, "required": ["status", "message", "data"] }
  • 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