27
[email protected] (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

TDC2015: Testes em APIs REST com Rest-Assured

Embed Size (px)

Citation preview

Page 1: TDC2015: Testes em APIs REST com Rest-Assured

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Testes em APIs REST com

Rest-Assured

Satildeo Paulo | 22072015

Palestrante

Juacutelio de Lima Especialista em teste de software com ecircnfase em automaccedilatildeo de testes de software possui formaccedilatildeo em Tecnologia da Informaccedilatildeo e certificaccedilotildees internacionais (CTFL e CTAL-TM pelo ISTQB) e nacional (CBTS pela ALATS)

juliolimaqualistercombr

twittercomjuliodelimasbrlinkedincominjuliodelimas

goldtipsbyjuliodelimas

Sobre a Qualister

bull Fundada em 2007 bull Mais de 1000 clientes em todo o Brasil bull Mais de 50 cursos sobre teste de software bull Mais de 3000 alunos formados bull Aacutereas de atuaccedilatildeo bull Consultoria na aacuterea de teste qualidade de

software bull Cursos bull Revenda de ferramentas

O que eacute REST

O que eacute REST

bull Eacute um estilo de arquitetura utilizado para criaccedilatildeo de APIs

bull Trabalha geralmente sobre o protocolo HTTPHTTPS usando meacutetodos POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Utiliza respostas no formato JSON ou XML

[fonte=httprestelksteinorg]

Como testar manualmente

Como testar manualmente

Utilizando cURL um recurso disponiacutevel em sistemas operacionais Unix atraveacutes de linha de comando podemos fazer uma requisiccedilatildeo atraveacutes do comando

curl -i -X GET ldquohttplocalhost8888qualister-apinome=Julio --user qualisterqualister

[fonte=httpcurlhaxxsedocshttpscriptinghtml]

Como testar manualmente

Entatildeo receberemos a seguinte respostaHTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 2: TDC2015: Testes em APIs REST com Rest-Assured

Palestrante

Juacutelio de Lima Especialista em teste de software com ecircnfase em automaccedilatildeo de testes de software possui formaccedilatildeo em Tecnologia da Informaccedilatildeo e certificaccedilotildees internacionais (CTFL e CTAL-TM pelo ISTQB) e nacional (CBTS pela ALATS)

juliolimaqualistercombr

twittercomjuliodelimasbrlinkedincominjuliodelimas

goldtipsbyjuliodelimas

Sobre a Qualister

bull Fundada em 2007 bull Mais de 1000 clientes em todo o Brasil bull Mais de 50 cursos sobre teste de software bull Mais de 3000 alunos formados bull Aacutereas de atuaccedilatildeo bull Consultoria na aacuterea de teste qualidade de

software bull Cursos bull Revenda de ferramentas

O que eacute REST

O que eacute REST

bull Eacute um estilo de arquitetura utilizado para criaccedilatildeo de APIs

bull Trabalha geralmente sobre o protocolo HTTPHTTPS usando meacutetodos POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Utiliza respostas no formato JSON ou XML

[fonte=httprestelksteinorg]

Como testar manualmente

Como testar manualmente

Utilizando cURL um recurso disponiacutevel em sistemas operacionais Unix atraveacutes de linha de comando podemos fazer uma requisiccedilatildeo atraveacutes do comando

curl -i -X GET ldquohttplocalhost8888qualister-apinome=Julio --user qualisterqualister

[fonte=httpcurlhaxxsedocshttpscriptinghtml]

Como testar manualmente

Entatildeo receberemos a seguinte respostaHTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 3: TDC2015: Testes em APIs REST com Rest-Assured

Sobre a Qualister

bull Fundada em 2007 bull Mais de 1000 clientes em todo o Brasil bull Mais de 50 cursos sobre teste de software bull Mais de 3000 alunos formados bull Aacutereas de atuaccedilatildeo bull Consultoria na aacuterea de teste qualidade de

software bull Cursos bull Revenda de ferramentas

O que eacute REST

O que eacute REST

bull Eacute um estilo de arquitetura utilizado para criaccedilatildeo de APIs

bull Trabalha geralmente sobre o protocolo HTTPHTTPS usando meacutetodos POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Utiliza respostas no formato JSON ou XML

[fonte=httprestelksteinorg]

Como testar manualmente

Como testar manualmente

Utilizando cURL um recurso disponiacutevel em sistemas operacionais Unix atraveacutes de linha de comando podemos fazer uma requisiccedilatildeo atraveacutes do comando

curl -i -X GET ldquohttplocalhost8888qualister-apinome=Julio --user qualisterqualister

[fonte=httpcurlhaxxsedocshttpscriptinghtml]

Como testar manualmente

Entatildeo receberemos a seguinte respostaHTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 4: TDC2015: Testes em APIs REST com Rest-Assured

O que eacute REST

O que eacute REST

bull Eacute um estilo de arquitetura utilizado para criaccedilatildeo de APIs

bull Trabalha geralmente sobre o protocolo HTTPHTTPS usando meacutetodos POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Utiliza respostas no formato JSON ou XML

[fonte=httprestelksteinorg]

Como testar manualmente

Como testar manualmente

Utilizando cURL um recurso disponiacutevel em sistemas operacionais Unix atraveacutes de linha de comando podemos fazer uma requisiccedilatildeo atraveacutes do comando

curl -i -X GET ldquohttplocalhost8888qualister-apinome=Julio --user qualisterqualister

[fonte=httpcurlhaxxsedocshttpscriptinghtml]

Como testar manualmente

Entatildeo receberemos a seguinte respostaHTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 5: TDC2015: Testes em APIs REST com Rest-Assured

O que eacute REST

bull Eacute um estilo de arquitetura utilizado para criaccedilatildeo de APIs

bull Trabalha geralmente sobre o protocolo HTTPHTTPS usando meacutetodos POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Utiliza respostas no formato JSON ou XML

[fonte=httprestelksteinorg]

Como testar manualmente

Como testar manualmente

Utilizando cURL um recurso disponiacutevel em sistemas operacionais Unix atraveacutes de linha de comando podemos fazer uma requisiccedilatildeo atraveacutes do comando

curl -i -X GET ldquohttplocalhost8888qualister-apinome=Julio --user qualisterqualister

[fonte=httpcurlhaxxsedocshttpscriptinghtml]

Como testar manualmente

Entatildeo receberemos a seguinte respostaHTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 6: TDC2015: Testes em APIs REST com Rest-Assured

Como testar manualmente

Como testar manualmente

Utilizando cURL um recurso disponiacutevel em sistemas operacionais Unix atraveacutes de linha de comando podemos fazer uma requisiccedilatildeo atraveacutes do comando

curl -i -X GET ldquohttplocalhost8888qualister-apinome=Julio --user qualisterqualister

[fonte=httpcurlhaxxsedocshttpscriptinghtml]

Como testar manualmente

Entatildeo receberemos a seguinte respostaHTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 7: TDC2015: Testes em APIs REST com Rest-Assured

Como testar manualmente

Utilizando cURL um recurso disponiacutevel em sistemas operacionais Unix atraveacutes de linha de comando podemos fazer uma requisiccedilatildeo atraveacutes do comando

curl -i -X GET ldquohttplocalhost8888qualister-apinome=Julio --user qualisterqualister

[fonte=httpcurlhaxxsedocshttpscriptinghtml]

Como testar manualmente

Entatildeo receberemos a seguinte respostaHTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 8: TDC2015: Testes em APIs REST com Rest-Assured

Como testar manualmente

Entatildeo receberemos a seguinte respostaHTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 9: TDC2015: Testes em APIs REST com Rest-Assured

Validando respostas

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 10: TDC2015: Testes em APIs REST com Rest-Assured

Validando resposta Esquema

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

A resposta teraacute a propriedade ldquostatus e o valor seraacute do tipo string

Essa propriedade deveraacute ser um Array

A resposta teraacute a propriedade ldquodadosatuacaordquo e natildeo deveraacute ter itens

duplicados

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 11: TDC2015: Testes em APIs REST com Rest-Assured

Validando resposta Corpo

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquostatus deveraacute ser igual a success

ldquodadosconsultoresquantidaderdquo deveraacute ser igual a 5

ldquodadosatuacaordquo deveraacute ter um item Consultoria

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 12: TDC2015: Testes em APIs REST com Rest-Assured

Validando resposta Cabeccedilalho

HTTP11 200 OK Date Sun 10 May 2015 020304 GMT Server Apache2229 (Unix) mod_fastcgi246 mod_wsgi34 Python278 PHP562 mod_ssl2229 OpenSSL098zd DAV2 mod_perl208 Perlv5200 X-Powered-By PHP562 Content-Length 280 Content-Type applicationjson

statussuccess messagerdquoJulio seja bem-vindo a API da Qualister data atuacao[TreinamentosConsultoriaRevenda de ferramentas] consultores quantidade5 nomes[Cristiano CaetanoElias NogueiraJulio de LimaMarcio CunhaRoberto Ungarelli]

ldquoStatus Code deveraacute ser igual a 200

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 13: TDC2015: Testes em APIs REST com Rest-Assured

Rest-Assured

bull Eacute uma biblioteca escrita em Java criada para simplificar testes de serviccedilos baseados em REST

bull Ele eacute compatiacutevel com os principais meacutetodos podendo simular requisiccedilotildees POST GET PUT DELETE OPTIONS PATCH e HEAD

bull Possui mecanismos para validaccedilatildeo do esquema corpo e cabeccedilalho das requisiccedilotildees

bull Utiliza a sintaxe de especificaccedilatildeo por exemplos o Given-When-Then muito conhecida em testes dirigidos por comportamento (BDD)

[fonte=httpscodegooglecomprest-assuredwikiUsage]

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 14: TDC2015: Testes em APIs REST com Rest-Assured

Rest-Assured

Exemplo de teste

given()

param(ldquonome Julio)

when()

get(ldquo)

then()

assertThat()

statusCode(200)

body(ldquomensagem containsString(Julio))

Enviar o valor ldquoJulio pelo paracircmetro nome

Requisitar o path ldquoldquo usando metodo GET

Validar que o Status Code eacute 200 (Sucesso) Validar que a propriedade

ldquomensagem contem a string Julio

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 15: TDC2015: Testes em APIs REST com Rest-Assured

Componentes auxiliares

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 16: TDC2015: Testes em APIs REST com Rest-Assured

Componentes auxiliaresbull Utilizaremos o Maven para tornar mais simples a

estruturaccedilatildeo do projeto dependecircncias e execuccedilatildeo dos testes O diretoacuterio bin do Maven deve ser setado nas variaacuteveis globais do sistema operacional[fonte=httpsmavenapacheorg]

bull O JUnit eacute um framework open-source utilizado para facilitar a criaccedilatildeo dos testes automatizados [fonte=httpjunitorg]

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 17: TDC2015: Testes em APIs REST com Rest-Assured

Hands-on

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 18: TDC2015: Testes em APIs REST com Rest-Assured

Hands-on1 Criar um novo projeto Maven no Eclipse

2 Criar adicionar as dependecircncias ao pomxml

3 Criar o package brcomqualisterTestes em srctestjava

ltdependenciesgt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtrest-assuredltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtcomjaywayrestassuredltgroupIdgt ltartifactIdgtjson-schema-validatorltartifactIdgt ltversiongt241ltversiongt ltscopegttestltscopegt ltdependencygt ltdependencygt ltgroupIdgtjunitltgroupIdgt ltartifactIdgtjunitltartifactIdgt ltversiongt412ltversiongt ltdependencygt ltdependenciesgt

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 19: TDC2015: Testes em APIs REST com Rest-Assured

Hands-on4 Criar uma classe de teste do JUnit e nomea-la como

QualisterAPITests

5 Adicionar a ela as importaccedilotildees para utilizaccedilatildeo do RestAssured

6 Configurar a conexatildeo com a API Rest dentro do construtor da classe de testes

import static comjaywayrestassuredRestAssuredimport static orghamcrestMatchersimport static comjaywayrestassuredmodulejsvJsonSchemaValidator

public QualisterAPITests() baseURI = httplocalhostqualister-apiport = 8888authentication = basic(qualister qualister)

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 20: TDC2015: Testes em APIs REST com Rest-Assured

Hands-on7 Escrever um teste chamado testMostrarDadosQualister

que basicamente apresenta a resposta agrave requisiccedilatildeo GET ao path ldquoldquo

8 Ao executar o teste teremos o status passed no JUnit e no console seraacute apresentada a resposta similar agrave que vimos anteriormente

Testpublic void testMostrarDadosQualister()

given()param(nome Julio)

when()get()

then()log()

body()

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 21: TDC2015: Testes em APIs REST com Rest-Assured

Hands-on9 Capture o valor da propriedade ldquostatus e valide se eacute

igual a success

String status = given()param(nome Julio)

when()get()

then()log()

body()extract()

body()path(status)

AssertassertEquals(success status)

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 22: TDC2015: Testes em APIs REST com Rest-Assured

Hands-on10Neste caso poderiacuteamos usar asserccedilotildees do proacuteprio

RestAssured usando matchers do Hamcrest

11Uma asserccedilatildeo quem eacute muito poderosa tambeacutem eacute a que valida o esquema da resposta obtida Veja como usarbody(matchesJsonSchemaInClasspath(meu-esquemajson))

given()param(nome Julio)

when()get()

then()log()

body()assertThat()

body(status equalTo(success))

body(message containsString(Julio))

statusCode(200)

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 23: TDC2015: Testes em APIs REST com Rest-Assured

Hands-on

$schema httpjson-schemaorgdraft-04schematitle Dados da Qualistertype objectproperties

data type objectproperties

atuacao type array

consultores

type objectproperties

quantidade type integerminimum 0

nomes

type arrayuniqueItems true

required [status message data]

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 24: TDC2015: Testes em APIs REST com Rest-Assured

Hands-on12Para executar os testes via linha de comando acesse o

diretoacuterio onde estaacute o arquivo pomxml do projeto e execute o comando abaixo

mvn test -Dtest=QualisterAPITests

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 25: TDC2015: Testes em APIs REST com Rest-Assured

Links interessantes

Categorizando testes em Unit

Elias Nogueira eliasnogueira

httpbitly1Jxnb8w

Rest-Assured escrevendo em Groovy (GitHub)

Mauriacutecio Silva silvamauriciob

httpbitly1G3yhzC

Status Codes HTTP

Frederico Moreira fredaomoreira

httpbitly1GC2vKw

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister

Page 26: TDC2015: Testes em APIs REST com Rest-Assured

contatoqualistercombr

(48) 3285-5615

twittercomqualister

facebookcomqualister

linkedincomcompanyqualister