Palestra de apresentação do framework Rest-Assured para automação de testes em API Rest, foram utilizados Maven e Unit para estruturação do projeto e testes.
Esta palestra e hands-on foram apresentados no evento #Testadores2015 em São Paulo.
2. Palestrante
Júlio de Lima
Especialista em teste de software com ênfase em
automação de testes de software, possui formação em
Tecnologia da Informação e certificações internacionais
(CTFL e CTAL-TM pelo ISTQB) e nacional (CBTS pela ALATS)
julio.lima@qualister.com.br
twitter.com/juliodelimas
br.linkedin.com/in/juliodelimas
3. Sobre a Qualister
• Fundada em 2007
• Mais de 1.000 clientes em todo o Brasil
• Mais de 50 cursos sobre teste de software
• Mais de 3.000 alunos formados
• Áreas de atuação:
• Consultoria na área de teste qualidade de
software
• Cursos
• Revenda de ferramentas
5. O que é REST?
• É um estilo de arquitetura utilizado para
criação de APIs;
• Trabalha, geralmente, sobre o protocolo
HTTP/HTTPS usando verbos POST, GET, PUT,
DELETE, OPTIONS, PATCH e HEAD;
• Utiliza respostas no formato JSON ou XML.
[@fonte=http://rest.elkstein.org]
7. Como testar manualmente?
Utilizando cURL, um recurso disponível em
sistemas operacionais Unix através de linha de
comando, podemos fazer uma requisição
através do comando:
curl -i -X GET “http://localhost:
8888/qualister-api/?nome=Julio"
--user qualister:qualister
[@fonte=http://curl.haxx.se/docs/httpscripting.html]
8. Como testar manualmente?
Então receberemos a seguinte resposta:
HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
"status":"success",
“mensagem”:”Julio, seja bem-vindo a API da Qualister",
“dados”:
{
"atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
"consultores":
{
"quantidade":5,
"nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
}
}
}
10. Validando resposta: Esquema
HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
"status":"success",
"mensagem”:”Seja bem-vindo a API da Qualister",
“dados”:
{
"atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
"consultores":
{
"quantidade":5,
"nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
}
}
}
A resposta terá a propriedade “status" e
o valor será do tipo string
Essa propriedade
deverá ser um Array!
A resposta terá a propriedade
“dados.atuacao” e não deverá ter itens
duplicados
11. Validando resposta: Corpo
HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
"status":"success",
"mensagem”:”Seja bem-vindo a API da Qualister",
“dados”:
{
"atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
"consultores":
{
"quantidade":5,
"nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
}
}
}
“status" deverá ser igual a
"success"
“dados.consultores.quantidade”
deverá ser igual a 5
“dados.atuacao” deverá ter um
item "Consultoria"
12. Validando resposta: Cabeçalho
HTTP/1.1 200 OK
Date: Sun, 10 May 2015 02:03:04 GMT
Server: Apache/2.2.29 (Unix) mod_fastcgi/2.4.6 mod_wsgi/3.4 Python/2.7.8
PHP/5.6.2 mod_ssl/2.2.29 OpenSSL/0.9.8zd DAV/2 mod_perl/2.0.8 Perl/
v5.20.0
X-Powered-By: PHP/5.6.2
Content-Length: 280
Content-Type: application/json
{
"status":"success",
"mensagem”:”Seja bem-vindo a API da Qualister",
“dados”:
{
"atuacao":["Treinamentos","Consultoria","Revenda de ferramentas"],
"consultores":
{
"quantidade":5,
"nomes":["Cristiano Caetano","Elias Nogueira","Julio de
Lima","Marcio Cunha","Roberto Ungarelli"]
}
}
}
“Status Code" deverá ser igual a 200
13.
14. Rest-Assured
• É uma biblioteca escrita em Java criada para simplificar
testes de serviços baseados em REST;
• Ele é compatível com os principais verbos, podendo
simular requisições: POST, GET, PUT, DELETE, OPTIONS,
PATCH e HEAD;
• Possui mecanismos para validação do esquema, corpo e
cabeçalho das requisições;
• Utiliza a sintaxe de especificação por exemplos, o Given-
When-Then, muito conhecida em testes dirigidos por
comportamento (BDD).
[@fonte=https://code.google.com/p/rest-assured/wiki/Usage]
15. Rest-Assured
Exemplo de teste:
given()
.param(“nome", "Julio")
.when()
.get(“/")
.then()
.statusCode(200).
.body(“mensagem", containsString("Julio"));
Enviar o valor “Julio" pelo parâmetro
"nome"
Requisitar o path “/“ usando verbo GET
Validar que o Status Code
é 200 (Sucesso)
Validar que a propriedade
“mensagem" contem a string
"Julio"
17. Componentes auxiliares
• Utilizaremos o Maven para tornar mais simples a
estruturação do projeto, dependências e execução dos
testes.
[@fonte=https://maven.apache.org]
• O JUnit é um framework open-source utilizado para
facilitar a criação dos testes automatizados.
[@fonte=http://junit.org]